当前位置: 代码迷 >> J2SE >> java字符串的一个疑问,该如何解决
  详细解决方案

java字符串的一个疑问,该如何解决

热度:90   发布时间:2016-04-24 01:03:53.0
java字符串的一个疑问
Java code
        String s0="abc";        String s1="a"+"b"+"c ";        System.out.println( s0==s1 );

结果:ture
---------------------------
疑惑如下:
在java编程思想里看到,运算符"+"被重载,编译器创建了一个StringBuilder对象,并为每个字符串调用一次StringBuilder的append()方法,最后调用toString()方法生成结果;
那岂不就是String s1="a"+"b"+"c ";
  等同于String s1=new String("abc");
照这样下去
Java code
String s0="abc";        String s1=new String("abc");        System.out.println( s0==s1 );

结果:false

StringBuilder的toString方法如下:
Java code
 public String toString() {        // Create a copy, don't share the array    return new String(value, 0, count);    }

写着// Create a copy, don't share the array,为何结果为true,求大神解答

------解决方案--------------------
String s0="abc"; //创建一个对象,在字符串池里
String s1=new String("abc"); //创建两个对象,一个在字符串池里,另个在堆里(new操作符)。
所以地址不一样。
  相关解决方案