因此,具有特定值的字符串的实例在系统中只有一个。

例如,如果将同一字符串分配给几个变量,运行时就会从暂存池中检索对该字符串的相同引用,并将它分配给各个变量。

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方法的


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-08
  • 2017-11-30
  • 2021-11-23
  • 2021-07-13
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-01
  • 2018-12-29
  • 2021-10-13
相关资源
相似解决方案