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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马嘉 中级黑马   /  2014-10-9 18:10  /  1337 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1 = new String("amit");
String s3 = "arit";
String s4 = "arit";
String s2 = s1.replace('m','r'); arit
System.out.println(s2 == s3);//为什么这个为false

System.out.println(s3 == s4);//为什么这个就为true;
哪个大神能够给我解解他内部是怎么运算的,谢谢了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

4 个回复

倒序浏览
S2==S3  比较的是地址值  肯定不一样  所以false  
S3==S4  因为他们都是指向方法区中的常量池,所以地址是一样的 所以是true
回复 使用道具 举报
class  a
{
        public static void main(String[] args)
        {
                String s1,s2;
                s1= new String("amit");
                s2= s1.replace('m','r');
                System.out.println(s1.equals(s2));
                System.out.println(s1==s2);
                String s3,s4;
                s3= "arit" ;
                s4= "arit";
                System.out.println(s3.equals(s4));
                System.out.println(s3==s4);
                System.out.println(s2==s4);
                System.out.println(s1);
                System.out.println(s2);


        }
}
结果:
false
false
true
true
false
amit
arit

1.png (24.36 KB, 下载次数: 170)

1.png

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
郑诗博 发表于 2014-10-9 20:30
class  a
{
        public static void main(String[] args)

谢谢你,看到图我就明白了
回复 使用道具 举报
亨利大帝 发表于 2014-10-9 19:29
S2==S3  比较的是地址值  肯定不一样  所以false  
S3==S4  因为他们都是指向方法区中的常量池,所以地址是 ...

谢谢你,明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马