如题!!

解决方案 »

  1.   

    晕, 又来问!!!! http://community.csdn.net/Expert/TopicView.asp?id=4001668
      

  2.   

    一共产生了几个对象?一共产生了几个对象?不解???
    String a=new String("foo");
    String a是声明了一个String型别的对象(说指针可能好懂点)
    new String("foo");是创建了一个String型别的对象(也就是在内存里new了一块空间里面放的是“foo”);
    String a=new String("foo");也就是将这个指针指向内存里new出来的那块空间。
    我想应该只产生了一个对象。
      

  3.   

    单然是一个对象了,记得有人发过说:那个考官说是三个对象,分别为:f,o,o;真是狂晕,这种人也可以当考官啊!
    出过个问题的人,真的是有毛病,一点意义都没有,
    改成这样还有点意义:String a=new String("foo");String b="foo";产生了几个对象?
      

  4.   

    如果分开写应该问题就比较清晰了。
    String b="foo";
    String a=new String(b);
      

  5.   

    只有一个对象,String a只是申明了一个变量,还没有为a分配空间.=new String("foo")则在内存空间内分配一块"foo",a指向这个空间,同时为变量保留副本
      

  6.   

    无语中。没人看我引用的那个贴子么???这个问题说得我自己耳朵都起茧了,竟然还有人认为是一个!二个, 分别是: 字面量"foo"
    new String("foo")持不同意见的人, 请看我引用的那个贴子, 或者直接去看<Effetive JAVA>中的第四条“Avoid Creating Duplicate Objects”。
      

  7.   

    哎,又是这个问题。基础没有牢固
    2个啊,一个是new的,一个是对foo的引用
      

  8.   

    确实是一个或两个。(一开始俺也想当然两个了-_!!!)当常量池中已经存在"foo"了,就不会重新创建了。
    而new String(***)肯定是新的对象了。
      

  9.   

    String * a=new String("foo");
      

  10.   

    两个对象,一个是“foo”,一个是指向“foo”的引用对象s。
      

  11.   

    String a = new String("foo");第一次执行时创建了二个, 一个为字面量"foo"(它本身是一个String对象), 一个为new String("foo")(它是通过new创建的, 功能上和字面量"foo"完全一样, 但却是另一个对象).第二次执行时, 只创建一个, 即new String("foo"), 这是因为: "foo"作为String字面量, 是存在于String Pool里面的, 第二次使用它时, 直接指向原有的String, 而不再创建新的String; 但new String("foo")却每执行一次都创建一个新的,完全一样的String对象.因此, 结论是: 永远不要使用 String a = new String("foo");这种方式来创建字符串, 而要用String a = "foo";这种方式. 这一点在<Effetive JAVA>第四条中说得很清楚了.
      

  12.   

    楼上此言差矣, 这是JAVA大师的经验之谈.
    编程思想固然重要, 但是对底层实现一无所知, 肯定写不出好的程序.
      

  13.   

    学习,java确实有一个String Pool的东西,写了一个段代码:
    public class StringLence { public static void main(String[] args) {

    String s = "abc";  //放在String pool里,产生了一个对象
             String n = s;
             s = "abc";         //关键在这里,它并没有产生新的对象,而是指向原来的   
    System.out.println(s == n);  //返回结果是true,证明。

    }
    }