黑马程序员技术交流社区
标题:
分析一下结果的原因
[打印本页]
作者:
lixiaoming
时间:
2015-6-15 23:11
标题:
分析一下结果的原因
主代码:
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
String s3 = new String("hello");
String s4 = "hello";
System.out.println(s3==s4);
System.out.println(s3.equals(s4));
String s5 = "hello";
String s6 = "hello";
System.out.println(s5==s6);
System.out.println(s5.equals(s6));
作者:
kuangzeyu
时间:
2015-6-15 23:11
输出的分别是false true false true true, true 。 因为new一下就会在堆内存中开辟一个空间,就会有不同的地址值,所以前两个==比的是地址值是不同的,通过.equals比的是常量池中的数字,他们是同一个hello,所以相同。最后一个比的都是常量池中的值是一样的所以true
作者:
a13783559191
时间:
2015-6-17 14:20
只要记住new对象的时候是要在内存中新开辟空间的,new出两个同样值的对象,两个对象的值存放的地址是不一样的,另外要记住==是比较的地址,equals()比较的是内容,遇到这类问题,那都不是个事
作者:
j15933854901
时间:
2015-6-17 21:12
学习中。。。。菜鸟飘过
作者:
黑马无敌
时间:
2015-6-23 15:05
一楼正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2