String s1 = "abc";
String s2 = "cde";
String s3 = "fgh";
String s4 = s1 + s2 + s3;

解决方案 »

  1.   

    认为是5个
    s1,s2,s3,s1+s2+s3的时候会生成一个StringBuilder对象来完成'+'操作,最后是s4
    不过最后两个的关系有些模糊,我不知道算4个还是算5个,坐等解答
      

  2.   

    以下这段代码生成几个对象啊?
    8个
    四个字符串变量:s1,s2,s3,s4
    四个字符串常量:"abc","cde","fgh","abccdefgh"
      

  3.   

    兄弟,这段代码一共生成三个对象,急"abc"; "cde"; "fgh";必须注意s1,s2,s3只是对象的引用,并不是对象,而s4就更要注意了,String s4 = s1 + s2 + s3; 并没有生成新的对象,只是把 s1,s2,s3连在一起,然后把连在一起的值赋给s4
      

  4.   

    String s1 = "abc"; 一引用,一实例
    String s2 = "cde"; 一引用,一实例
    String s3 = "fgh"; 一引用,一实例
    String s4 = s1 + s2 + s3;  一引用 二实例 (String , StringBuffer)
      

  5.   

    经研究得出,一共生成 5个对象。 S1,S2,S3, 在3个对象相加时有如下操作 StringBuffer/Stringbuilder(s1).append(s2).append(s3).toString().  StringBuffer这里生成了一个中间对象,最后toString()时又生成一个对象。所以一共有5个。 完毕。
      

  6.   

    附上JDK帮助文档中的部分解释;Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。字符串转换是通过 toString 方法实现的,该方法由 Object 类定义,并可被 Java 中的所有类继承。有关字符串串联和转换的更多信息,请参阅 Gosling、Joy 和 Steele 合著的 The Java Language Specification。 
      

  7.   

    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个