String ss="dfdfdf" 和 String ss=new String("dfdfdf")有什么不同吗???
在JAVA编程中什么时候需要NEW,什么时候不需要呢???

解决方案 »

  1.   

    一个是变量,一个是对象。当须要访问一个类中的非静态属性和方法时,需要用new 定义该类的对象。
      

  2.   

    对于第一个问题,可以参考一下下面的讨论
    http://community.csdn.net/Expert/TopicView3.asp?id=4544312
    第二个问题同楼上的说法,比较好理解。
      

  3.   

    1.首先可以肯定的是两种方法都创建了一个String的引用(reference)s而String s = "hello";语句中
    虚拟机会在对象堆中寻找值为"hello"的String对象,如果已经存在一个这样的String对象,那么就把s指向这个对象,也就是说并没有真正创建新的String对象。(这是由于String是非可变类,并且用"hello"来创建更像是调用静态工厂,返回静态实例。)而用String s = new String("hello");来创建,虚拟机创建一个新的值为"hello"的String对象,让s指向这个新创建的对象。2.用new是要创建完全新的对象,无论对象堆中是否已经存在这样的对象,而还有其他方法来获得指向具体对象的引用比如,可以用比如静态工厂Integer integer = Integer.valueOf(1);或像第一个问题中String s = "hello";(前提是对象堆中已有这样的对象)。
    特殊地,在jdk1.5中,也可以直接写Integer integer = 1;只不过是jvm自动为你做包裹(wrap)的事。
    如果你不需要创建对象,而只是想调用类中的静态成员或方法,就可以直接使用MyClass.myFunction()来调用,就像上面提到的静态工厂一样,Integer.valueOf(1),或者System.out.println();
      

  4.   

    看看这个:
    http://blog.csdn.net/comstep/archive/2006/02/21/604543.aspx