+ -
当前位置:首页 → 问答吧 → 刚学,字符串问题,有些疑惑啊

刚学,字符串问题,有些疑惑啊

时间:2011-12-27

来源:互联网

String s1=new String("abc");
  String s2=new String("abc"); 
  boolean b1=s1.equals(s2);
  boolean b2=(s1==s2);  
  System.out.print(b1+" "+b2);  
结果为 true false 
求解释?谢了

作者: zhp2830948   发布时间: 2011-12-27

应该好好看基础, 呵呵,
equals, == 都是比较地址值, 
所以 new 出来的对象都是不同的
但是 String 重写了 equals 方法, 所以它比较的是内容是否相同,

作者: zhongxingxuan   发布时间: 2011-12-27

应该好好看基础, 呵呵,
equals, == 都是比较地址值, 
所以 new 出来的对象都是不同的
但是 String 重写了 equals 方法, 所以它比较的是内容是否相同,

作者: zhongxingxuan   发布时间: 2011-12-27

String s1 = new string("abc")表示在堆内存里面开辟了个空间放着abc并将这个空间指向栈内存的S1.
同样,第二句就表示在堆内存中又开辟了一个空间放着abc并将这个空间指向栈内存S2。
就等于在堆内存中有2个abc分别指向S1和S2.
而,== 比较的是内存地址。而equals比较的是内容。

作者: ssunny000   发布时间: 2011-12-27

第二个的是完全相等,连物理位置也要相等

作者: lvpusoft   发布时间: 2011-12-27

热门下载

更多