1
30
在这个特殊的情况下没有区别; 然而,它们在总体上并不相同。
为了向自己证明这一点,只需制作一个简单的方法,它包含两个字符串
相比之下,
另外,如果
更新: 见 this StackOverflow question ,几乎是一样的。 |
2
7
两者之间的重要区别
实际上,我不知道为什么
编辑:关于“在字符串池中创建对象”的问题,我认为您误解了字符串池是什么。在运行时,实际的字符序列“str”和“end”将存储在一个专用的数据结构中,并且无论您在何处看到文本
实际上,字符串池是在加载类时填充的,而不是在运行包含字符串文本的代码时填充的。这意味着每个片段只创建一个对象:连接的结果。(在幕后也有一些对象创建,这对每种技术都有点不同,但性能影响不值得担心。) |
3
1
除非concat的参数是空字符串,否则
也将创建3个字符串。 更多信息: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html |
4
1
你似乎对那个词有误解。不存在“字符串池”这样的东西——你使用它的方式,看起来你只是指堆中的所有字符串对象。那里
是
一
runtime constant pool
它包含编译时字符串常量和从
|
Dima Malko · 如何在指定符号前添加符号? 2 年前 |
shekharsabale · 从列表元素捕获子字符串 2 年前 |
Manny · 如何比较Perl中的字符串? 2 年前 |
Manan Girdhar · 拆分字符串并仅在java中使用第二部分 2 年前 |
AnxiousLuna · Python使用len()获取数组索引数 2 年前 |
antonoyaro8 · 数据帧中每列上的Grepl 2 年前 |