有什么区别
String str = new String("abc");
Run Code Online (Sandbox Code Playgroud)
和
String str = "abc";
Run Code Online (Sandbox Code Playgroud) 什么是Java中的String Interning,何时应该使用它,为什么?
我不久前正在谈论字符串和各种语言,并且出现了字符串实习的主题.显然,Java和.NET框架会自动执行所有字符串以及多种脚本语言.从理论上讲,因为你不相同的字符串的多个副本,最终可以节省内存,这样可以节省时间,因为字符串相等比较是一个简单的指针比较,而不是一个O(N)通过串的每个字符运行.
但是我越是想到它,我越是怀疑这个概念的好处.在我看来,优势主要是理论上的:
这只是我思考实现细节的结果.有没有我错过的东西?在一般情况下,字符串实习是否实际上提供了任何显着的好处?
编辑2:好吧,显然我是在错误的前提下操作的.我正在谈话的人从未指出字符串实习对于新创建的字符串是可选的,事实上给人的印象是相反的情况是正确的.感谢Jon直接解决问题.另一个接受他的答案.