String a=null;这个null在堆中吗?分配内存了吗?null与一般的对象有什么区别?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wangxiaomei2008】截止到2008-06-27 14:05:11的历史汇总数据(不包括此帖):
    发帖数:3                  发帖分:120                
    结贴数:2                  结贴分:70                 
    未结数:1                  未结分:50                 
    结贴率:66.67 %            结分率:58.33 %            
    楼主加油
      

  2.   

    a=null表示a不指向任何对象,当然也就没有为a分配空间。
      

  3.   

    以楼上说法,String a;中这个a也没有指向任何对象了,那就是说String a;与String a=null是相同的呢?这点显然不正确。
      

  4.   

    null就是0
    也就說a的值為0(如果a有對象,a的值就應該是對象在堆中地址的值)
      

  5.   


    String a;如果是域变量的话,他就等价与String a=null;
    String a;如果是方法变量即局部变量的话,他就必须在使用前初始化,不然会报错,也就不等价与String a=null;
      

  6.   

       都是作为局部变量的,现在问题的关键是String a;与String a=null;在内存分配上有什么区别?null是空引用。什么是空引用呢?
    在堆中情况是什么?不要说表面的问题啊。
      

  7.   

    String a = null;这条语句不会创建新对象,只会创建个一个指向String的引用变量,而这个引用变量是存在栈中的。
      

  8.   

    如果都作为局部变量,那么它们在内存分配上没区别,都是栈里分配一个指针,堆里不分配
    唯一的区别是对于String a;你要在使用前初始化
      

  9.   

    null 表示空引用,此时还没创建对象,也不占用堆内存。
      

  10.   

    二楼是对的,null只是编译器在编译检查时,确保安全的一种方式,java有好多这种编译时检查,泛型不也是利用编译器检查的嘛,这只是语法上的规定,减少运行时出现空指针异常的机会
      

  11.   

    本质上来说:这只是个语法书写习惯问题,如C++就写null。当对象变量作为全局变量出现时,确实默认为null
    而你如果不书写null,也不会有任何错误!ok
      

  12.   

    null是java中的一个特殊对象,是一个没有被实例化的对象当对象被实例化的时候(new) 系统就会给改对象分配内存和他所需要的空间
      

  13.   


    String a;也没有创建对象,String a=null同样没有创建对象,是不是仅仅是java语法检查上有区别?null是一个空引用,有没有比较形象的说法来形容
    null是什么?
      

  14.   

    String a; 和 String a = null; 没区别。
      

  15.   

    想了一下,应该是对象,从调用fun(null);就可以看出来,特殊对象,static的,final的,jvm赋值的,没有任何义意的
      

  16.   

    null是jvm中一个特殊的东西
    String a=null;说明这个引用不指向任何实例
      

  17.   

    C++中String a;这就相当于创建了对象a了,除非是String* a = NULL;这样的形式
      

  18.   

    String a;  --> stack中定义了一个变量
    a = null;  --> a在stack中的值为0就说成员变量初始化,如果
    String a;
    int b;
    char c;以上没有初始化也一样拿来用,b = 0,c = 0, a却为null
    但是在数值上表述的话,就是:
    1>在即将创建对象的时候,先为其分配heap内存空间
    2>内存被清理为0(自动就对成员变量做了初始化了)这个null,只是一个表象,它并不代表对象,它是告诉我们的编译器,这个reference的值为0.
      

  19.   

    a=null表示a不指向任何对象,当然也就没有为a分配空间。
    =============================
    这个说法不对,当然分配了空间,相当C++一个指针的空间;
      

  20.   

    String a; 和 String a = null; a==b  没区别,ok?
      

  21.   

    沒區別?
    如果String a是局域變量,會出錯