楼主,首先要理解这里面的==是值相等,而这里的值相等,是地址值。
第一句话,String s1=''abc";创建了一个字符串对象,s1就是指向"abc"所在字符串常量缓冲区地址,是引用;
第二句话,String s2=new String("abc"),”abc”对应一个对象,这个对象放在字符串常量缓冲区,常量”abc”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”abc”对象的内容来创建出一个新String对象;
第三句话,String s3="abc",由于常量池中已经有"abc"字符串,所以不用创建了,s3直接指向了s1所指向的字符串,所以第一句话的结果为false,而第二句为true |