equals()方法的问题
之前做过比较两个String类型的值时
比如:
String str1="你好";
String str2="你"+"好";
String str3="你";
String str4="好";
String str5=str3+str4;
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str5));
为什么这两个句子返回的都是true啊,不是说好的比较地址的吗?有疑惑啊
之前做过比较两个String类型的值时
比如:
String str1="你好";
String str2="你"+"好";
String str3="你";
String str4="好";
String str5=str3+str4;
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str5));
为什么这两个句子返回的都是true啊,不是说好的比较地址的吗?有疑惑啊
2015-10-22
子木李 说得对,楼主还可以尝试去建立一个类的两个实例,内部变量完全一样,但是你用equals去比较时,返回的是false,这就会验证你理解中的两个对象使用 equals 是进行地址比较;但是你会发现两个String,哪怕是通过new String()得到的(理论上是两个对象),你会发现执行 equals 操作会获得 true, 这是因为java字符池机制的作用,关于这个可以推荐楼主看下 “JAVA 字符池”,这个应该可以帮到楼主;
另外补充一些我知道的相关的一知半解:String对象是不可改变的,比如说String str1 = new String("hello"); 然后你让 str1 = "java"; 你会发现str1只是改变了自身引用,对其之前的内容 “hello” 串并不会有改变;
举报