当:String s1="123";
String s2="123";
if(s1==s2) 和 if(s1.equals(s2)) 的结果都是true ;当:String s1 = new String("123");
String s2 = "123";
if(s1==s2) 结果为false ,if(s1.equals(s2)) 的结果都是true ;
是为什么啊,new 和没有用 new 的区别在哪???
String s2="123";
if(s1==s2) 和 if(s1.equals(s2)) 的结果都是true ;当:String s1 = new String("123");
String s2 = "123";
if(s1==s2) 结果为false ,if(s1.equals(s2)) 的结果都是true ;
是为什么啊,new 和没有用 new 的区别在哪???
java虚拟机对于String s1="123";之类的语句做了特别的优化,当实例池中已经存在了值为123的String对象,则不再产生新的对象,而重用这个老对象,所以s1和s2都引用了同个对象,所以==返回true
而使用new String()则一定产生新的对象,用==判断当然不等