String aa="asdfasdf";  定义一个String变量String aa= new String;
aa="asdfasdf";
开辟一个内存空间,定义一个String对象

解决方案 »

  1.   

    String对象是常量对象。"asdfasdf"是常量,在堆中会分配内存给它。第一种方式直接将指向常量"asdfasdf"对象的句柄赋值给aa;第二种方式没有人会这么用,没什么意义,new String();分配一个常量\0对象的句柄给aa,然后再给aa重新赋值同第一种方式
      

  2.   

    String aa="asdfasdf"; 是声明并初始化一个String的引用aa,它指向无名的String对象“asdfasdf”String aa= new String;
    aa="asdfasdf";
    是实例化一个新的String对象,并使用String类的缺省构造函数将它赋值给引用aa,新的String对象指向"asdfasdf";
      

  3.   

    java编程思想第二版,69~70页就是这个例子!