网站 pinghei,顶尖的网站建设,门户网站怎么建设,wordpress 做的官网.net中#xff0c;其字符串特有的驻留机制#xff0c;保证了在同一进程中#xff0c;相同字符序列的字符串#xff0c;只有一个实例#xff0c;这样能避免相同内容的字符串重复实例化#xff0c;以减少性能开销。 先来回顾一下c#中的代码#xff1a; public static void….net中其字符串特有的驻留机制保证了在同一进程中相同字符序列的字符串只有一个实例这样能避免相同内容的字符串重复实例化以减少性能开销。 先来回顾一下c#中的代码 public static void testString() { String s Abc; String s1 abc; String s2 abc; Console.WriteLine(s1s2 ? (s1 s2)); //true Console.WriteLine(s1.Equals(s2) ? s1.Equals(s2)); //true Console.WriteLine(String.Compare(s1,s,true) ? String.Compare(s1, s, true)); //0 Console.WriteLine(------------------------); char[] chr { a, b, c }; String s3 new String(chr); Console.WriteLine(s1s3 ? (s1 s3)); //true Console.WriteLine(s1.equals(s3) ? s1.Equals(s3)); //true Console.WriteLine(String.Compare(s3, s, true) ? String.Compare(s3, s, true)); //0 Console.WriteLine(------------------------); String t bc; String s4 a t; Console.WriteLine(s1s4 ? (s1 s4)); //true Console.WriteLine(s1.equals(s4) ? s1.Equals(s4)); //true Console.WriteLine(String.Compare(s4, s, true) ? String.Compare(s4, s, true)); //0 Console.WriteLine(------------------------); String s5 a bc; Console.WriteLine(s1s5 ? (s1 s5)); //true Console.WriteLine(s1.equals(s5) ? s1.Equals(s5)); //true Console.WriteLine(String.Compare(s5, s, true) ? String.Compare(s5, s, true)); //0 Console.Read(); } 1 public static void testString()2 {3 String s Abc;4 String s1 abc;5 String s2 abc;6 7 8 Console.WriteLine(s1s2 ? (s1 s2)); //true9 Console.WriteLine(s1.Equals(s2) ? s1.Equals(s2)); //true
10 Console.WriteLine(String.Compare(s1,s,true) ? String.Compare(s1, s, true)); //0
11 Console.WriteLine(------------------------);
12
13
14 char[] chr { a, b, c };
15 String s3 new String(chr);
16 Console.WriteLine(s1s3 ? (s1 s3)); //true
17 Console.WriteLine(s1.equals(s3) ? s1.Equals(s3)); //true
18 Console.WriteLine(String.Compare(s3, s, true) ? String.Compare(s3, s, true)); //0
19 Console.WriteLine(------------------------);
20
21 String t bc;
22 String s4 a t;
23 Console.WriteLine(s1s4 ? (s1 s4)); //true
24 Console.WriteLine(s1.equals(s4) ? s1.Equals(s4)); //true
25 Console.WriteLine(String.Compare(s4, s, true) ? String.Compare(s4, s, true)); //0
26 Console.WriteLine(------------------------);
27
28 String s5 a bc;
29 Console.WriteLine(s1s5 ? (s1 s5)); //true
30 Console.WriteLine(s1.equals(s5) ? s1.Equals(s5)); //true
31 Console.WriteLine(String.Compare(s5, s, true) ? String.Compare(s5, s, true)); //0
32
33
34 Console.Read();
35
36
37 } 从运行结果可以看出无论你怎么折腾只要二个字符串的内容完全相同引用始终只有一个。 java中其实也有类似的机制称为“字符串常量池”但是java中却允许 用new String(String str)的方式创建多个相同内容的实例。为了能区别这二种情况java中的与equals用来判断字符串是否相等时赋予了不同的含义。 用于判定二个字符串是否引用相同而equals用于判断二个字符串是否内容相同 public static void testString(){ String s Abc; String s1 abc; String s2 abc; System.out.println(s1s2 ? (s1s2)); //true System.out.println(s1.equals(s2) ? s1.equals(s2)); //true System.out.println(s1.equalsIgnoreCase(s) ? s1.equalsIgnoreCase(s)); //true System.out.println(------------------------); String s3 new String(abc); System.out.println(s1s3 ? (s1s3)); //false System.out.println(s1.equals(s3) ? s1.equals(s3)); //true System.out.println(s3.equalsIgnoreCase(s) ? s3.equalsIgnoreCase(s)); //true System.out.println(------------------------); char[] chr {a,b,c}; String s4 new String(chr); System.out.println(s1s4 ? (s1s4)); //false System.out.println(s1.equals(s4) ? s1.equals(s4)); //true System.out.println(s4.equalsIgnoreCase(s) ? s4.equalsIgnoreCase(s)); //true System.out.println(------------------------); String t bc; String s5 a t; System.out.println(s1s5 ? (s1s5)); //false System.out.println(s1.equals(s5) ? s1.equals(s5)); //true System.out.println(s5.equalsIgnoreCase(s) ? s5.equalsIgnoreCase(s)); //true System.out.println(------------------------); String s6 a bc; System.out.println(s1s6 ? (s1s6)); //true System.out.println(s1.equals(s6) ? s1.equals(s6)); //true System.out.println(s6.equalsIgnoreCase(s) ? s6.equalsIgnoreCase(s)); //true } 1 public static void testString(){2 String s Abc;3 String s1 abc;4 String s2 abc;5 6 System.out.println(s1s2 ? (s1s2)); //true7 System.out.println(s1.equals(s2) ? s1.equals(s2)); //true8 System.out.println(s1.equalsIgnoreCase(s) ? s1.equalsIgnoreCase(s)); //true9 System.out.println(------------------------);
10
11 String s3 new String(abc);
12 System.out.println(s1s3 ? (s1s3)); //false
13 System.out.println(s1.equals(s3) ? s1.equals(s3)); //true
14 System.out.println(s3.equalsIgnoreCase(s) ? s3.equalsIgnoreCase(s)); //true
15 System.out.println(------------------------);
16
17 char[] chr {a,b,c};
18 String s4 new String(chr);
19 System.out.println(s1s4 ? (s1s4)); //false
20 System.out.println(s1.equals(s4) ? s1.equals(s4)); //true
21 System.out.println(s4.equalsIgnoreCase(s) ? s4.equalsIgnoreCase(s)); //true
22 System.out.println(------------------------);
23
24 String t bc;
25 String s5 a t;
26 System.out.println(s1s5 ? (s1s5)); //false
27 System.out.println(s1.equals(s5) ? s1.equals(s5)); //true
28 System.out.println(s5.equalsIgnoreCase(s) ? s5.equalsIgnoreCase(s)); //true
29 System.out.println(------------------------);
30
31 String s6 a bc;
32 System.out.println(s1s6 ? (s1s6)); //true
33 System.out.println(s1.equals(s6) ? s1.equals(s6)); //true
34 System.out.println(s6.equalsIgnoreCase(s) ? s6.equalsIgnoreCase(s)); //true
35
36
37 } 转载于:https://www.cnblogs.com/bluewhale84/p/5726262.html