黑马程序员技术交流社区
标题:
String a = "123" 和String b ="123"
[打印本页]
作者:
zsx6688
时间:
2015-8-20 22:19
标题:
String a = "123" 和String b ="123"
System.out.println(a==b);输出为true,但String a= new String() String b = new String() 输出System.out.println(a==b);为false,为什么?
还有String a = new String(); a="123" String b="123",在内存中到底是怎样的,为什么这个结果也为false
作者:
STARlove
时间:
2015-8-20 22:24
具体的请查询“==”和equals的在比较字符串时候区别
作者:
史柯
时间:
2015-8-20 22:25
你是创建了两个字符串对线,a和b。
对象之间的==比较的是地址值。
你两个对线的地址值不相同,所以是false;
你加上一句,a=b,就可以让b的地址值也指向a。
让a和b共享一个地址值,a==b返回的就是true了。
然后“123”==“123”
这是两个常量,常量的对比是在方法去里进行的。
创建了第一个123后,再创建一个123,java会直接把第二个123的地址值指向第一个123.
这样可以节约内存,所以“123”=="123"返回的就是true
希望可以帮到你
作者:
至尊幽蓝
时间:
2015-8-20 22:33
很奇怪,你那23个技术分是怎么得的。
作者:
樱花飘过
时间:
2015-8-20 22:38
==是比较地址值,一旦"abc"是在常量池,而new String,一new就是一块新的地址,所以是不一样的
作者:
iamzk
时间:
2015-8-20 22:41
恩,楼主是骗回复的?
作者:
Liveei
时间:
2015-8-20 23:01
史柯正解
作者:
F灬灬
时间:
2015-8-20 23:41
因为newString是在堆空间开辟内存,内存地址值不同所以两个String也会是FALSE
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2