有区别
String str="String";当对象String已经存在是不开辟内存str指向这个对象
String str=new String("String");不论对象String是否存在都要开辟内存
内存里的东西就是String

解决方案 »

  1.   

    楼上说的不对,
    String对象的实例化虽然区别与其他类
    但是两种方法都是创建了String的一个实例str,而且在创建前都要检查实例str是否已经存在,如果str已经存在则两种方法都会导致编译器报错,所以它们的效果是完全一样的,只是形式不同
    (sun为了方便大家才这么做)不过要注意的是:
    String str="String";   和  
    str="String";  是不一样的
    前者是创建String的一个实例str,后者是给已经创建好的str赋值
    (前提是在两句的上面都没有声明  String str)