java判断是否相等问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 15:00:15
java 中
String str="abc"和String str=new String("abc")有什么区别
为什么

String str1="abc";String str2="abc";
则 str1==str2

String str1=new String("abc");String str2=new String("abc")
str1==str2就为false

String str="abc":是将"abc"这个对象的地址给了str;
String str=new String("abc"):首先是创建了一个新对象new String("abc"),然后将此对象的地址给了str;

String str1="abc";
String str2="abc";
这两个都是将"abc"的地址分别给了str1和str2.

用==比较时,是比较的两个对象的地址(即调用对象的toString()方法),所以得到你所测试的结果.

前者是一个常量赋值给str,后者是通过一个参数创建一个新的对象。等号比较的不是String的内容,如果要比较内容的话,用equals方法。
第一个例子由于str1和str2都是指向同一个常量的,因此相等。
第二个例子是内容相同的两个不同的对象,因此不相等。但是使用
str1.equals(str2)就可以得到true。