下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";

解决方案 »

  1.   

    String s="a"+"b"+"c"+"d";我只是猜测
    s 是一个
    “a” “b” “c” “d” 各一个 
    “abcd” 是一个
    也就是6个 
      

  2.   

    这条语句被编译后会最终会变成String s=“abcd”,执行这条语句jvm会去字符串池里面找,如果找不到就会在字符串池里创建一个
      

  3.   

    这种扯谈的题,一再出现。唉。
    这个String数量跟JVM 相关。
    不同版本的JVM实现,数量会不一样的。
      

  4.   

    月经帖String s="a"+"b"+"c"+"d"; 
    编译后的代码为:
    String s=new StringBuilder("a").append("b").append("c").append("d").toString()拥有常量String类匿名对象"a"、"b"、"c"、"d"四个
    拥有变量String类对象s和变量StringBuilder类匿名对象,共计2个
      

  5.   

    只创建了一个对象,因为虚拟机会在编译期间对字符串进行去加号优化,而不是在运行期进行加法运算把字符串连接起来,所以最终只创建了一个对象abcd
      

  6.   

    两个,麽的其他的,只有常量池中的'abcd' 和内存中的new String (abcd)对象
      

  7.   

    不是4个吗,关S什么事 s只不过是一个变量名而已不是4个吗,关S什么事 s只不过是一个变量名而已
    我也觉得是6个
      

  8.   

    只有四个~这几个字母都是在字符串池里被创建,跟堆没有关系。
    a,ab,abc,abcd
      

  9.   

    总结 楼上 发言:
    a:1个; b:2ge; c:4个;d:跟JVM有关 
     晕 到底是什么?
      

  10.   

    编译后为String s = "abcd"; 不服来战
      

  11.   

    编译后为String s = "abcd"    现在jvm学聪明了,在编译时就能确定的变量,编译后会直接替换成最终结果。