这个问题在毕老师的基础视频里有答案:具体如下:
class StringMethodDemo
{
public static void main(String[] args)
{
String s1="abc";
String s2=new String("abc");
String s3="abc";
System.out.println(s1==s2);
System.out.println(s1==s3);
}
}
运行结果为:false
ture
分析:s1首先生成对象"abc",当s3在创建对象时,发现已经有"abc"后,就不再创建新的对象了,而是s1和s3同时指向了一个对象,因此结果为ture.
而s2是new出来的新对象,所以s1和s2不相等
你可以这么记忆。当用String s1="hello";来创建对象时,一旦创建了,以后再通过该方法创建相同的对象,内存中只有这一个,只是两个都指向了同一个对象。而
用new的方法,每new一次,就会出现一个对象,即使有重复! |