黑马程序员技术交流社区

标题: 关于String的replace方法 [打印本页]

作者: 马嘉    时间: 2014-10-9 18:10
标题: 关于String的replace方法
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;
哪个大神能够给我解解他内部是怎么运算的,谢谢了

作者: 亨利大帝    时间: 2014-10-9 19:29
S2==S3  比较的是地址值  肯定不一样  所以false  
S3==S4  因为他们都是指向方法区中的常量池,所以地址是一样的 所以是true
作者: 郑诗博    时间: 2014-10-9 20:30
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

作者: 马嘉    时间: 2014-10-10 09:18
郑诗博 发表于 2014-10-9 20:30
class  a
{
        public static void main(String[] args)

谢谢你,看到图我就明白了
作者: 马嘉    时间: 2014-10-10 09:25
亨利大帝 发表于 2014-10-9 19:29
S2==S3  比较的是地址值  肯定不一样  所以false  
S3==S4  因为他们都是指向方法区中的常量池,所以地址是 ...

谢谢你,明白了




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