使用java.lang.String.intern()吗?

问题:

关于String.intern()的Javadoc没有给出太多的细节。 (简而言之:它返回字符串的规范表示,允许使用==比较内部字符串

  • 我什么时候使用这个功能有利于String.equals()
  • 在Javadoc中是否没有提到副作用,即JIT编译器的多或少优化?
  • 是否有进一步的使用String.intern()

回答:

什么时候使用这个函数有利于String.equals()

当您需要速度,因为您可以通过引用比较字符串(==比等于更快)

Javadoc中没有提到副作用吗?

主要的缺点是你必须记住,确保你实际上做了intern()所有要比较的字符串。很容易忘记intern()所有字符串,然后你可以得到混淆不正的结果。此外,为了大家的缘故,请务必非常清楚地记录您正在依赖于内在的字符串。
如果您决定内部化字符串的第二个缺点是intern()方法相对昂贵。它必须管理独特的字符串池,所以它做了一个很好的工作(即使字符串已经被内化了)。所以,在你的代码设计中要小心,这样你就可以使用intern(),输入所有适当的字符串,所以你不必再担心了。
(来自JGuru)
第三个缺点(Java 7或更少):interned Strings住在PermGen空间,通常相当小;您可能会遇到大量可用堆空间的OutOfMemoryError。
(来自Michael Borgwardt)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Is it good practice to use java.lang.String.intern()?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

30 − = 22