黑马程序员技术交流社区

标题: string类 [打印本页]

作者: jiahuiting    时间: 2013-9-25 16:50
标题: string类
string  s1="abc"   与   string  s2=new  string("abc")   的区别是什么记得当时视频上说,s1==s2(false)     但是s1.equal(s2)(true)

为啥呢。equal不是判断地址相同的本意么


作者: 赖龙威    时间: 2013-10-2 00:16

  1. public class test {
  2.         public static void main(String[] args) {
  3.                 String s1 = "abc";
  4.                 String s2 = new String("abc");
  5.                 System.out.println("s1==s2" + s1==s2);
  6.                 System.out.println("s1.equal(s2)" + s1.equals(s2));
  7.         }
  8. }
复制代码
结果和你说的一样。==是比较引用的是否是一个对象。而equal()方法比较的是字符串是否相等。
作者: 娟5子    时间: 2014-1-9 14:08

当系统执行string s1="abc";时会将s1指向"abc"而string  s2=new  string("abc") 系统会重新分配一个空间给"abc"并将s2指向该空间  建立了一个对象
引用型变量进行==运算时也就是它们的地址进行运算所以s1==s2(false)
equals比较的是内容
作者: My_work    时间: 2014-3-2 16:47
string s1="abc";的意义是赋值,string s2=new string(“abc”);的意义是初始化
作者: 微笑╮安葬了眼    时间: 2014-3-19 18:04
先是在内存里创建了一个abc字符串,然后s1指向abc,s2要指向abc,内存中已经有abc,所以s1和s2地址相同,s3指向的是新字符串abc的地址,所以s1与s3不同,s1==s2但s1!=s3,因为s1,s2,s3是引用,比较的是地址而不是内容,所以有这个结果,比较值是否相同应该用。equal函数而不能直接用==




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2