使用java.lang.String.intern()是一种好习惯吗?

使用java.lang.String.intern()是一种好习惯吗?

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

  • 我何时会使用此功能String.equals()

  • 是否存在Javadoc中未提及的副作用,即JIT编译器或多或少的优化?

  • 有进一步的用途String.intern()吗?



叮当猫咪
浏览 487回答 3
3回答

Qyouu

我什么时候会使用这个函数来支持String.equals()当你需要速度,因为你可以通过引用比较字符串(==快于等于)是否有Javadoc中没有提到的副作用?主要的缺点是你必须记住确保你实际上做了你要比较的所有字符串intern()。很容易忘记intern()所有字符串,然后你可以得到令人困惑的错误结果。此外,为了每个人的利益,请务必非常清楚地记录您依赖于内部化的字符串。如果您决定内化字符串,第二个缺点是intern()方法相对昂贵。它必须管理唯一字符串池,以便它做相当多的工作(即使字符串已经内化)。所以,在你的代码设计中要小心,这样你就可以在输入中输入所有适当的字符串,这样你就不必再担心它了。(来自JGuru)第三个缺点(仅限Java 7或更低版本):实习字符串存在于PermGen空间中,通常非常小; 您可能遇到具有大量可用堆空间的OutOfMemoryError。(来自Michael Borgwardt)

慕无忌1623718

这(几乎)与字符串比较无关。如果您的应用程序中有许多具有相同内容的字符串,则字符串实习用于保存内存。通过使用String.intern()应用程序,从长远来看只有一个实例,副作用是你可以执行快速引用相等比较而不是普通的字符串比较(但这通常是不可取的,因为它只是因为忘记实习生而很容易破解单个实例)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java