1
6
查看的源代码
总结:字符串包装
正如其他答案中所解释的,也有实习的机制。 |
2
12
这实际上不是100%正确。 This blog post is a decent explanation 为什么会这样,以及 字符串常量池 是。 |
3
6
字符串文字在Java中被嵌入,所以实际上只有一个字符串对象具有多个引用(当它们相等时,情况并不总是如此)。参见java.net文章 All about intern() 了解更多详细信息。 还有一个很好的例子/解释 3.10.5 String Literals 在jl中,我们讨论了何时将字符串进行约束以及何时将字符串进行区分。 |
4
4
这是不必要的。例子:
但是:
现在第二种形式是不鼓励的。有些人(包括我)认为
显然,你不需要为一个常量做这个。
重要的是,如果你通过了
对于非
|
5
3
要回答您编辑的问题,Sun JVM有一个
否则,你可以选择把你的弦绑起来,但我会小心的。非常大且不再被引用的字符串在JVM的生命周期中仍将使用内存。 编辑(响应注释):我首先从 here :
Tom Hawtin 描述一些缓存类型以改进一些基准。当我把它放在想法上时,我的观察是内存足迹(在一次完整的垃圾收集之后)会因为没有它而下降。它不是一个文档化的参数,实际上可能只是为了优化一些基准。我的观察是它有帮助,但我不会基于它构建一个重要的系统。 |
6
1
有两件事要小心:
|
7
0
如果相同的字符串来自一组固定的可能值,那么在这里需要一个类型安全枚举。它不仅会减少字符串的数量,而且会使应用程序更加可靠。您的整个应用程序将知道这个字符串附加了语义,甚至可能是一些方便的方法。 我最喜欢的优化总是那些可以被认为是生成代码的优化。 更好的 不仅仅是更快。10次中有9次,用具体类型替换字符串会导致代码更加正确和自我记录。 |
Vedant · 如何解决python啦啦队长问题?[已关闭] 2 年前 |
cobby · 在战略模式中使用工厂模式? 2 年前 |
Nobody · Java中带while循环的三角形模式 2 年前 |
Eduard Stefanescu · 如何在层之间传输异常? 6 年前 |
D. Schreier Talha Noyon · 对于目录中的每个类 6 年前 |
Tanvi Jaywant · 如何重载类 6 年前 |