--

解决方案 »

  1.   

    String的API中有这样一句:
    Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
    所以关于"a"是不是匿名对象的问题就不用再讨论了
      

  2.   

    是两个对象,"a"一个,new StringBuilder()一个
      

  3.   

    产生两个对象
    首在String池中找 是否 有 a 对象 , 有则不创建,没有则创建 一个a 对象在String池中
    又有一个new 所以在内存上又创建一个a对象
    所以共两个对象
      

  4.   

    String a = new String("a");
    第一个a在栈中,new String("a")中的a生成在堆中
    栈中的a会指向在堆中的a
    所以说有两个对象