黑马程序员技术交流社区

标题: 字符串问题 [打印本页]

作者: @ne_pie尒ce    时间: 2013-11-18 14:24
标题: 字符串问题
        String s1="abc";;
        String s2=s1;;;
        String s3=s1+"";;;
        System.out.println(s1==s2);//true
        System.out.println(s2==s3);//false
解释一下为什么第二条输出false?s3指向了哪块内存?
还有一条语句结束,用了多个;;;,为什么没有编译错误?


作者: bpsend    时间: 2013-11-18 14:34
String s2=s1; 将s1的引用赋值给它 用==当然是true
String s3=s1+"";;; 这个又重新创建了一个对象。 ==是false。
String类重写了equals方法,如果你想值比较的话推荐使用equals进行比较。
作者: Weix1992    时间: 2013-11-18 14:56
        String s1="abc";;
         String s2=s1;;;
         String s3=s1+"";;;
         System.out.println(s1==s2);//true
         System.out.println(s2==s3);//false

String s2 = s1 ,这句话是表示将s1字符串的地址给了s2,而且==符号是比较的地址,不是值

String s3=s1+"";;;  这句话你在s3后加了一个 "" 字符串,s3首先会在字符串池中找有没有相同的串,如果有则把那个字符串的地址拿到,没有就创建一个新的地址并放入值
作者: 黄炳期    时间: 2013-11-18 16:54
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html




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