我正在尝试使用'+'运算符连接三个字符串
String s = "a"+"b"+"c";
有人可以告诉我在字符串常量池中创建多少个对象。同样,如果有更多的字符串,则字符串常量池中将有多少个对象。 例如:-
String s1 = "a"+"b"+"c"+"d"+"e"+"f"+"g"..........100 objets
答案 0 :(得分:5)
总共只创建了一个字符串,也为字符串池创建了一个字符串。
您这里拥有的只是文字。 JLS描述了这样的 constant 字符串表达式,已经在编译时完全计算出了。因此,尽管您的 .java 源文件仍然包含字符串连接,但 .class 文件不再存在,它只是直接的结果。
请参见JLS 3.10.5. String Literals :
从常量表达式(第15.28节)连接的字符串是在编译时计算的,然后将其视为文字。
此外,字符串文字总是引用类String的相同实例。这是因为使用String.intern方法(第12.5节)对字符串文字(或更一般地说,是常量表达式的值的字符串(第15.28节))进行了“插入”,以便共享唯一的实例。