看如下代码
String str=" 123 435 sdf ag";
str.split(" ")[0] == "" //output: false
str.split(" ")[0].equals("") //output: true这是为什么啊
好像只有像 new String(str) == str // <-- false 才是啊 这个“”为什么也会这样?先谢了
String str=" 123 435 sdf ag";
str.split(" ")[0] == "" //output: false
str.split(" ")[0].equals("") //output: true这是为什么啊
好像只有像 new String(str) == str // <-- false 才是啊 这个“”为什么也会这样?先谢了
你分割出来子字符串占用了新的内存 “==”比较的是内存地址 所以是false
用equals比较的两个对象,就好比是同一个人的两个称谓一样!"equals"比较的是对象的内容是否相等!多用于比较字符串!
希望可以帮到你更好的理解两者的区别!
str.split(" ")[0]的值在堆中存放,而“”的值在内存中存放。
==的意义是当比较的是基本类型是比较的是值,如果有引用类型的话比较的是地址而不是值了。所以会是false
equal()比较的就是值了。
用equals比较的两个对象,就好比是同一个人的两个称谓一样!"equals"比较的是对象的内容是否相等!多用于比较字符串!
希望可以帮到你更好的理解两者的区别! 支持!!!
不过其实在Object类中,==和equals都是比较地址的
String类重写了equals,让equals方法变成比较内容