【发布时间】:2015-03-24 11:34:20
【问题描述】:
我不认为我应该在 jdk7 和 + 中使用 String.intern() ,因为以下原因。
Java 自动实习生字符串文字。这意味着在许多情况下,== 运算符对字符串的工作方式与它对整数或其他原始值的工作方式相同。
由于 String 文字的实习是自动的,因此 intern() 方法将用于使用 new String() 构造的字符串
String s1 = "Rakesh";
String s2 = "Rakesh";
String s3 = "Rakesh".intern();
String s4 = new String("Rakesh"); // why would i do this?
String s5 = new String("Rakesh").intern(); // looks stupid , better create like s1
s1,s2, s3 ,s4 指向同一个东西。
你的cmets请
【问题讨论】:
-
s1,s2, s3 ,s4 指向同一个东西。 不,它没有。Do System.out.println(s3 == s5);和 System.out.println(s2 == s4); .更好地理解 String 将帮助你理解所有对象之间的区别。
-
使用 intern() 的理由很少。在 18 年的 Java 编程中,我从未遇到过它有用的情况。我确实看到它使用过一次,但使用不当,影响性能。
-
@ms ,它是 s1,s2,s3 和 s5 。不是 s4
-
为什么我的问题被否决了?这个问题通过示例非常清楚,而且它是一个有用的问题