当两个以上的字符串用+

时间:2019-06-21 06:50:15

标签: java string

我正在尝试使用'+'运算符连接三个字符串

String s = "a"+"b"+"c";

有人可以告诉我在字符串常量池中创建多少个对象。同样,如果有更多的字符串,则字符串常量池中将有多少个对象。 例如:-

String s1 = "a"+"b"+"c"+"d"+"e"+"f"+"g"..........100 objets

1 个答案:

答案 0 :(得分:5)

总共只创建了一个字符串,也为字符串池创建了一个字符串。

您这里拥有的只是文字。 JLS描述了这样的 constant 字符串表达式,已经在编译时完全计算出了。因此,尽管您的 .java 源文件仍然包含字符串连接,但 .class 文件不再存在,它只是直接的结果。

请参见JLS 3.10.5. String Literals

  

从常量表达式(第15.28节)连接的字符串是在编译时计算的,然后将其视为文字。

     

此外,字符串文字总是引用类String的相同实例。这是因为使用String.intern方法(第12.5节)对字符串文字(或更一般地说,是常量表达式的值的字符串(第15.28节))进行了“插入”,以便共享唯一的实例。