因此,具有特定值的字符串的实例在系统中只有一个。
例如,如果将同一字符串分配给几个变量,运行时就会从暂存池中检索对该字符串的相同引用,并将它分配给各个变量。
str 的引用,然后返回该引用。
引用 s1 和 s2 相比较的结果是不相等,因为它们引用了不同的对象;而引用 s1 和 s3 相比较的结果是相等,因为它们引用了同一字符串。
string s1 = "MyTest";
string s2 = new StringBuilder().Append("My").Append("Test").ToString();
string s3 = String.Intern(s2);
Console.WriteLine((Object)s2==(Object)s1); // Different references.
Console.WriteLine((Object)s3==(Object)s1); // The same reference.
String的equals方法,equals其实是Object类里面的方法,这个方法的参数是Object类:
String a=new String("aaa");
String b=new String("aaa");
System.out.println(a==b); //输出false,==号是讲两个引用的地址进行比较
System.out.println(a.equals(b)); //输出true,equals方法是将两个引用的值进行比较
注意Object类的equals方法是比较两者的引用地址是否一致,String类里面是重写了equals方法的