效率差别不是非常大,但是意义不一样,第一个是定义一个新的字符串,第二个是将str指向"dd"这个字符串

解决方案 »

  1.   

    "dd"本身是一个String对象
    则String str = "dd";
    仅仅是将"dd"这个对象的引用赋给了str
    而String str = new String("dd");
    是根据"dd"这个String对象再次构造一个String对象,将新构造出来的String对象的引用赋给str所以当然是不一样的了
      

  2.   

    java 中只有定义String能不用new String()方法,两句没有区别
      

  3.   

    String str= new String("dd");这个会生成一个新的对象
    String str="dd";这个只是一个引用,内存中如果有“dd"的话,str就指向它,如果没有才创建
      

  4.   

    依现在的CPU和内存来讲根本看不出任何差别。
    但两者确实有着本质上的差距。
    你可以自己想一下是传一个应用给String快,还是创建一个对象后再将这个对象的引用赋给String快呢?
      

  5.   

    public class Str {
        public static void main(String[] args) {
    String str1 = new String("dd");
    String str2 = "dd"; System.out.println(str1 == str2); 
    //这里是比较引用,输出为false System.out.println(str1.equals(str2));
    // 这里比较的是引用指向的对象的值,都是'dd',输出为true
    }
    }
      

  6.   

    dancingflyer() 说的完全正确
      

  7.   

    javaCandelaboy(java初学着):public class Str {
        public static void main(String[] args) {
    String str1 = new String("dd");
    String str2 = "dd"; System.out.println(str1 == str2); 
    //这里是比较引用,输出为false System.out.println(str1.equals(str2));
    // 这里比较的是引用指向的对象的值,都是'dd',输出为true
    }
    }
    问:当中str1自然是对象了,那么str2是否也是一个String 对象?还是,只是一个指向"dd"字符串的引用而儿?
    就像C++中的指针?
      

  8.   

    String 对象和String变量怎么能一样那?建议你好好看看基础
    其实这也是面向对象的特点