当: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 的区别在哪???
解决方案 »
- 关于下溯造型,为什么不安全?String类中的equals方法源码疑问
- FileInputStream的read方法
- 多个Key用什么东西?
- JAVA JCKECKBOX 事件 g.addItemListener(new JCheckboxListener());
- 请教如何在java程序中搞定mysql5乱码?
- SWT问题,谢谢各位!!在线等答案
- 生成id问题...
- 关于用JAVA COMM类进行串口通讯的设置问题(急)
- 谁可以告诉我TextPad的注册码?
- 谁能给出一个最快最高效的求素数的算法?(高分求算法)
- 这个问题超级狂燥!学习JAVA都会遇到的问题!大家来看看哦!
- 网上看到的一道Java面试题,关于内部类的,大家帮忙看看。
java虚拟机对于String s1="123";之类的语句做了特别的优化,当实例池中已经存在了值为123的String对象,则不再产生新的对象,而重用这个老对象,所以s1和s2都引用了同个对象,所以==返回true
而使用new String()则一定产生新的对象,用==判断当然不等