Java 什么';这就是创建并有机会从字符串池中创建字符串对象的意义

Java 什么';这就是创建并有机会从字符串池中创建字符串对象的意义,java,string,string-pool,Java,String,String Pool,我知道String对象是不可变的,我可以在堆(String s1=newstring(“text1”)和字符串池(String s2=“text2”)中创建String对象.那么,有机会从字符串池中创建一个String有什么意义呢?为什么Java隐式地不在字符串池中创建所有String对象?如果可能存在一些罕见的字符串,那么可能是为了防止处理器通过字符串池进行迭代?,如果您从t的角度来看他是新的操作员,这很有意义 new总是分配一个新的对象。这适用于所有类,没有例外。它对字符串类和任何其他类都没

我知道
String
对象是不可变的,我可以在堆(
String s1=newstring(“text1”
)和字符串池(
String s2=“text2”
)中创建
String
对象.那么,有机会从字符串池中创建一个
String
有什么意义呢?为什么Java隐式地不在字符串池中创建所有
String
对象?如果可能存在一些罕见的字符串,那么可能是为了防止处理器通过字符串池进行迭代?

,如果您从t的角度来看他是新的操作员,这很有意义

new
总是分配一个新的对象。这适用于所有类,没有例外。它对
字符串
类和任何其他类都没有任何特殊的大小写行为。它完全与类无关


我也不认为需要添加任何优化。编写
新字符串(“文本”)
通常是一个错误。为什么要加快错误的速度呢?

主要是
新字符串(“文本1”)
是演示的一部分,或者是由不知道自己在做什么的人编写的。此外,您也不希望每个动态生成的短期字符串都被内部化。因此,Reader或StringBuilder之类的东西应该能够创建“正常”的常规堆、未缓存的字符串实例。