String a = new String("kong"),b = new String("kong");
System.out.println((a==b));
------------------------------------------------------
上面的代码会打印false
而如果用这样来定义:String a = "kong",b="kong";
它就会打印true
请问为什么?
...全文
633打赏收藏
定义对象的问题
String a = new String("kong"),b = new String("kong"); System.out.println((a==b)); ------------------------------------------------------ 上面的代码会打印false 而如果用这样来定义:String a = "kong",b="kong"; 它就会打印true 请问为什么?
String是单例模式。
new String是建立新的对象,你new了两个,地址就不同。
但在第二种情况下,"kong"的值赋给b的时候已经存在了"kong"这个对象,他就不new了,直接指向就可以了
所以,在任何情况下,都建议使用
String a="hello";
而不是String a = new String("hello");