A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Demo_String {
                public static void main(String[] args) {  
                String s1 = "ab";
                String s2 = "abc";
                String s3 = s1 + "c"
                System.out.println(s3 == s2);
                System.out.println(s3.equals(s2));
                }
}
这个结果为什么一个是false一个是true?

8 个回复

倒序浏览
String是引用类型的,不能直接用==比较,equls( )方法比较的是字符串内容是否相同。
回复 使用道具 举报
lijiy09 发表于 2016-3-12 14:53
String是引用类型的,不能直接用==比较,equls( )方法比较的是字符串内容是否相同。 ...

原来是这样,多谢多谢
回复 使用道具 举报
==比较的是地址值 equal才是比较内容是否一致
回复 使用道具 举报
==比较的是地址值 equal才是比较内容是否一致
回复 使用道具 举报
为民除害123456 发表于 2016-3-12 21:51
==比较的是地址值 equal才是比较内容是否一致

s3和s2的地址值不一样吗? 他们的地址值是多少呢
回复 使用道具 举报
wlsperfect 发表于 2016-3-13 10:14
s3和s2的地址值不一样吗? 他们的地址值是多少呢

计算机分配,我哪里知道,但是,可以显示出来

点评

那你让他显示一下吧,怎么显示  发表于 2016-3-13 12:55
回复 使用道具 举报
xushao 中级黑马 2016-3-13 10:45:53
8#
        public static void main(String args[])
        {
                String s1 = "ab";
                String s2 = "abc";
                String s3 = (new StringBuilder(String.valueOf(s1))).append("c").toString();
                System.out.println(s3 == s2);
                System.out.println(s3.equals(s2));
        }



反码看一下 s3是堆中的空间地址  s2是常量池的地址
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马