String a = new String("3" + "4");创建了几个对象?

解决方案 »

  1. "3" "4" "34" new String("3" + "4")
    4个
      

  2. Compiled from "T.java"
    public class T extends java.lang.Object{
    public T();
      Code:
       0:   aload_0
       1:   invokespecial   #1; //Method java/lang/Object."<init>":()V
       4:   returnpublic static void main(java.lang.String[]);
      Code:
       0:   new     #2; //class java/lang/String
       3:   dup
       4:   ldc     #3; //String 34   6:   invokespecial   #4; //Method java/lang/String."<init>":(Ljava/lang/Strin
    g;)V
       9:   astore_1
       10:  return}
    在编译的时候进行了优化,"3"+"4"为一个对象"34",所以总共生成了两个对象!
      

  3. 4个,"3","4","34",new String("3"+"4")
      

  4. 创建了3个,但是最后就剩一个了(string),其他两个被垃圾回收了
      

  5.  一个或两个!常量字符串java给 优化了
      

  6. 一个 new String("") 形式的 不加入string池 "3" + "4" 编译器优化new String("34")这样形式 String a = "34" 才自动加入string池
      

  7. 3个,还有一个String.class呢!
    4个,还有一个String.class和Serializable.class呢!如果运行该代码的类没有实现Serializable接口
    Object.class在加载运行该代码的类的时候已经加载了
      

  8. 6个,还有一个String.class、Serializable.class、CharSequence.class、Comparable.class呢
      

  9. 等你们出结论   
    俺知道 String s = new String ("a");是两个对象,再加一个的话 我想怎么也不会是4 5 6 7 8 9 
    我赶脚还是2
      

  10. 2个对象
    String有个静态池的概念,只要是s = “3”,形式赋值的它会放入池当中,池中是char[]的对象,a = “3” + “4”这种形式的放在池中也是char[]对象,0、1分别存着3、4,然后+得到34,这种一个对象。
    这样就很容易理解楼主的String a = new String("3" + "4");
    char[] 一个对象 34一个对象 a指向了34
      

  11. 你可以看一下java的经典面试题,里面有提到
      

  12. new String("3" + "4")   3个吧  "3"一个,"4"一个 new String("3" + "4")  一个String a 只是个变量 只分配内存地址不是对象 a指向new String("3" + "4")  对象
      


  13. String string=new String("3"+"4");
    String string2=new String("3");
    String string3=new String("4");
    String string4=string2+string3;
    System.out.print(string.equals(string4));应该是这样的···
      

  14. 无数个。因为用Java的说了万物皆对象。
      

  15. 我可以肯定的告诉楼主 答案是两个。
    大家应该知道
    String s="s";创建了1个对象
    String s=new String ("s");创建了2个对象
    String s=new String("a"+"b")也是创建了两个对象
    因为"a","b"是常量,在编译的时候就可以确定,因此s的值在编译时就可以确定了
    上面那句等同于String  s = new String("ab");
      

  16. 正确答案我已经查证了答案是看JDK版本了
    JDK老版本是4个对象
    JDK新版本是2个对象(新版本的JDK对String计算的时候警醒优化了)
      

  17. 错误了。
    优化后是2个一个是"34"   一个是new String("34")
      

类似问题 »