第九,String s = new String("xyz");创建了几个String Object?答:两个
为什么?

解决方案 »

  1.   


    /**run:
    true
    */
    public class Main {    public static void main(String[] args) throws Exception {
            System.out.println(""+("123"instanceof String));
            String s=/**第二个*/new String(/**第一个*/"123");
        }
    }
      

  2.   

    一个常量池的"xyz"对象
    一个heap里的对象
      

  3.   

    分析内存:
    栈里面的s(一个对象)指向堆中的"xyz"(第二个对象)。
      

  4.   


    呵呵呵,这个问题确实是经久不衰啊
    两个:
    1)"xyz"是一个String Object
    2)new String(。。)产生第二个String Object
    String s中s只是一个引用,不是对象。
      

  5.   

    强烈建议某大虾或者版主将此类问题做一个永久置顶贴,永不下落,因为无论何时,无论何地,只要有Java的存在就一定会有人问这个问题。而且不停问,反复问,总是问,经常问。
      

  6.   

    2个啦 
    第一个是String池里面的
    第二个是 new出来的,在堆内存中
    s是引用,两个对象都是xyz
    另外如果把你的题目改下
    String s1=new String("xyz");//产生了几个对象?  2个
    String s2=new String("xyz");//产生了几个对象?  1个
    好好体会吧
      

  7.   

    如果“xyz”内存池已经有了,那么string是flyweight实现的话。。
      

  8.   

    支持!!!!
    看一下《java6编程指南》,比较基础、实用,对新手有不少的好处。
    书名我记得不是很清楚,只记得蓝色封皮,1千多页!