String 类型的比较与一个字符串是不是相等 用equals还是== |
|
用equals呗因为equals是比较的内容是否相等
|
|
10分 |
String类对equals方法进行了重写,用来比较两个String对象中的内容是否相等,所以一般两个String比较的话是用equals来比较的,==是用来比较两个对象的地址是否相等。
|
== 比较的是String对象的地址;
equals比较的是String的值——内容; |
|
10分 |
如果你要确定两个字符串是否相等,可以这样写:
String a = “”; String b = “”; if(a != null && b !=null){ if(a.equals(b)) return true; else return false; }else if(a == null && b==null){ return true; }else{ return false; } |
Java用equals JavaScript用==(严格的话就是===)
|
|
equals就是内容相等,==就是两个对象完全相等,也在同一个地址
|
|
“==”性能高,但有局限性。
“equals”性能差,但通用。(为什么性能差,可以看源代码) String s1 = “www.chinaot.com”; String s3 = “www.chinaot.com”; new String()看作一个对象,它引用指向了前常量的拘留值。但它本身也是一个引用赋给了s4,因此s3和s4不是指向到同一个地方的,这里就必须用equals来对每个字符进行比较,也是性能差之原因。 |
|
1行代码搞定,你用了10行: return a != null && a.equals(b); |
|
10分 |
我记得在某一个版本的JDK更新说明里曾经提到过, 对于String==String 的解释,为了让该表达式更加的符合看起来的意思,最终判定效果已经改成 值判定了, 也就是说
String s1 = “www.chinaot.com”; String s2 = “www.chinaot.com”; s1==s2为true 至于实现方法用的是常量管理,还是操作符重载,就不知道了, |
String 类型的比较与一个字符串是不是相等 应该用equals
|
|
字符串比较永远使用equals |
|
你知道Java的短路运算吗? return a != null && a.equals(b); 这里a == null时,&&后面的就不会进行,直接返回false,如果b为空,是允许equals空对象的。 |
|
a==b是比较的的是a和b的内存地址,内存地址相同则相等。a.equals(b)比较的其实也是内存地址,但是如果在model中重写equals方法的话,那么就是比较a和b内容值。如果还想hashcode方法,就会根据hash值来比较,看hash表是否相同
|
|
String是一个类,是用来描述字符串的一类事物。如果字符串内元素是字符时,用equals方法去比较;如果字符串内元素是数子时,可以用==;
|
|
public static void main(String[] args) { String a = null; String b = null; boolean test = a != null && a.equals(b); System.out.println(test); } 输出结果: false |
|
你的意思是两个空值能相等? |
|
简单点来说,==比较的是地址,equals比较的是地址里面的内容。
每创建一个实例都会为他分配一个地址即使内容一样也是返回FALSE,因为地址不一样 如果像下面这么写,同样两个字符串的结果都是“123”,但是用==却是返回true的 |
|
用equals
|