附上JDK帮助文档中的部分解释;Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。有关字符串串联和转换的更多信息,请参阅 Gosling、Joy 和 Steele 合著的 The Java Language Specification。
JAVA in a nutshell(5th edition):when a single expression contains multiple string concatenations, these are compiled efficiently using a StringBuilder (or StringBuffer prior to Java 5.0) and result in the creation of only a single new String object所以...5个
s1,s2,s3,s1+s2+s3的时候会生成一个StringBuilder对象来完成'+'操作,最后是s4
不过最后两个的关系有些模糊,我不知道算4个还是算5个,坐等解答
8个
四个字符串变量:s1,s2,s3,s4
四个字符串常量:"abc","cde","fgh","abccdefgh"
String s2 = "cde"; 一引用,一实例
String s3 = "fgh"; 一引用,一实例
String s4 = s1 + s2 + s3; 一引用 二实例 (String , StringBuffer)