java中String相等比较用==的场景

皓皓君 2016-08-25 11:52:22
RT,通常用==运算符来判断相等都在什么情景下使用呢。
...全文
727 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
逸花城 2016-09-09
  • 打赏
  • 举报
回复
判断是否==null时。
wqc8994 2016-09-09
  • 打赏
  • 举报
回复
String str = 常量或者null可以用==
zhaopeng2511 2016-09-09
  • 打赏
  • 举报
回复
string的相同与相等对比

String s1 = new String("hello");
String s2 = new String("hello");
String s3 = new String("Hello");
String s4 = s1;
String s5 = "hello";
String s6= "hello";
相等性:(内存中内容是否相等) s1.equals(s2)------->true s1.equals(s3)------->false s1.equals(s4)------->true s1.equals(s5)------->true s1.equals(s6)------->true s1.equalsIgnoreCase(s3)---------->true; 相同性:(引用的是否是相同的一块内存) s1 == s2 ---------->false s1 == s3 ---------->false s1 == s4 ---------->true s1 == s5 ---------->false s5 == s6 ---------->true
纵骑横飞 2016-09-08
  • 打赏
  • 举报
回复
切记:== 对象:hashCode比较 基本数据类型:值比较 equals是纯值比较 在String都是直接到常量池找的情况下: String st="123"; String st2="12"; String st3="123"; //这些就是直接到常量池找的
unauthorized401 2016-08-29
  • 打赏
  • 举报
回复
一般来说“==”符号判断“对象”是否相等,而equal()方法判断的是“值”是否相等。下面是jdk关于equal的解释:
equals
public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。 
equals 方法在非空对象引用上实现相等关系: 

自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。 
对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。 
传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。 
一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。 
对于任何非空引用值 x,x.equals(null) 都应返回 false。 
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。 

注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。 

Freefish1994 2016-08-26
  • 打赏
  • 举报
回复
引用 6 楼 lee_xuehao 的回复:
引用 5 楼 Be_nurturing 的回复:
String 要是只是比较值相等还是用.equals()方法,要是比较地址的话就用==
哦,我想知道通常什么情况下用到回地址比较呢
感觉没有固定的模式,什么时候比较地址是看你程序的需要我觉得
皓皓君 2016-08-26
  • 打赏
  • 举报
回复
引用 5 楼 Be_nurturing 的回复:
String 要是只是比较值相等还是用.equals()方法,要是比较地址的话就用==
哦,我想知道通常什么情况下用到回地址比较呢
Be_nurturing 2016-08-26
  • 打赏
  • 举报
回复
String 要是只是比较值相等还是用.equals()方法,要是比较地址的话就用==
tatakautsubasa 2016-08-26
  • 打赏
  • 举报
回复
String常量可以使用==
墨蓝的星空 2016-08-26
  • 打赏
  • 举报
回复 1
两个String的引用变量用==比较时,比较的是两个引用本身存储的值(两个地址值)是否相等,也就是是否指向了同一个对象; Object的equals()方法和==完全一样,都是比较两个应用变量是否指向了同一个对象; 但是String类重写了equals( )方法,用来判断两个String引用变量指向的两个字符串是否包含完全相同的字符学列,是则返回true,否返回false;而==的作用不变(Java没有运算符重载)
NewMoons 2016-08-25
  • 打赏
  • 举报
回复
引用 2 楼 fengyuwuzu0519 的回复:
==只会告诉是否指向同一个对象,不指向同一个对象也可能内容相等。equals方法会比较内容是否相等。
应该就是这个意思了。 说的再深点,==比较的是内存引用地址,equals比较的是业务含义上的相等。 比如实体类User有2个实例User1和User2,都有一个成员变量叫学号xuehao,业务上认为xuehao相等即为同一个用户,所以你会将User的equals方法重写,判断当xuehao相等返回真,即表示同一个用户。但此时如果你用==判断,2者一定是不等的,因为分别new出来的对象其内存地址一定不同。
【星星之火】 2016-08-25
  • 打赏
  • 举报
回复
==只会告诉是否指向同一个对象,不指向同一个对象也可能内容相等。equals方法会比较内容是否相等。
soton_dolphin 2016-08-25
  • 打赏
  • 举报
回复
判断string 相等,在任何情况下最好用equals(),

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧