Java中空对象是什么概念?
Sun对此有没有解释?希望各位高手帮忙!!谢谢

解决方案 »

  1.   

    楼主是不是说类里只定义没有赋值的那些变量
    就是值为null的变量
      

  2.   

    楼主明白了这两者的区别应该就明白了空对象String str=null;
    String str="";
      

  3.   


    5楼的代码我明白,
    String str=null;//只是定义一个引用
    String str="";//定义一个引用,并指向空串但是,空对象的概念,还是不懂?
    望赐教!
      

  4.   

    估计就是null吧A a = new A();
    a = null;
      

  5.   

    "只是定义引用"....这个引用引用的是一个"空对象"-->null
      

  6.   


    我正在测试 一个对象占用的内存空间。详细请看:
    http://topic.csdn.net/t/20060823/21/4971017.html其中第3楼提到 : 空对象占8个字节。但是没有“空对象”的概念
      

  7.   

    空对象何需解释呢,楼主一定要有:世间万物截对象的境界。
    我举个例子来说下我对null的理解。比如有个房子类的具体对象,你家的房子。
    房子类有个方法:找人。而人又可以干很多事。
    现在存在这样一种情况:你们家没人在,都出去上班了。这个时候来了个客人去你们家的房子找人。
    但是很显然,这个时候你们家没有人,这是客观存在的一种状态。既然对JAVA来说世间万物截对象。那么没有人的这种状态JAVA自然需要来描述他,有什么来描述他呢?就是null,当你家没人的时候,而又有人来你家找人,这个时候JAVA给你一个null,告诉你家里没人。既然没人,你又想让人去干活,你让一个不存在的人去干活,这个时候一般就会出现空指针异常。所以我理解null的意思就是,什么都没有。
      

  8.   


    回复 12楼:您的意思 是否等价于下面的代码:String str;//只定义引用,而没有对象
      

  9.   

    我理解楼主说的空对象是不是就是引用为空(null)的对象啊.假如有 A a = new A();
    在java对象的产生是分两步的:
    1.在栈区声明对象 如A a,这时声明的内容相当于一个指针(我们姑且认为它是一个指针,也可以理解为引用),当a=null时表明这是一个没有指向任何对象.
    2.实例化a,操作如下a=new A()这是在堆区为a分配了空间.也就是由栈区的a指向堆区的new A()对象.而a=null则是表明,首先,a是必然在栈区的,a的值是一个地址(假设它真的是一个指针),a=null表示的是a的值是null,与堆区无关此时的a与堆并无关系, 垃圾回收机制便是将一个对象赋值为null以切断与之前关联对象的关系之后将对象回收的.
      

  10.   

    那个3楼指的应该是一个对象占用的最小空间是8个字节,即没有成员变量的类实例出的对象占用的内存控件。他那里说的空对象的这个“空”指的是没有成员(是否有方法不清楚了,可能不考虑方法,因为一个类的方法,即使是非静态方法,在内存中也只占一处内存,所有对象公用),即这样的类实例的对象
    Class A
    {
        //没有成员变量,可能有成员方法
    }
      

  11.   

    楼主你说的空对象是一个这样的class A{},里边什么都没有的类的实力,你管这个叫空对象,是这样吗?从头到尾你说的都不是null?我们都被你击倒了....
      

  12.   

    另外JAVA是不允许使用者自己来操作内存的,我真的很想知道楼主你想用什么办法测,还有测它干什么。就算测出来了,1不能用,2不能改。不过我还是想知道怎么个测法,一下
      

  13.   

    所谓空对象就是指向NULL的,即未分配堆内存的,也就是没有new的。
    例如
    class A{}
    A a;
    a==null?true:false//为true。
    A a=new A();
    a==null?true:false//为false。
      

  14.   

    楼主给的帖子的3楼是提供了一种方法,就是8字节加上类的所有成员变量(包括继承的)在内存中占用的字节
    其中8中基础类型按Java标准计算,引用类型按4字节。其实引用类型应该按照4字节加上引用类型的大小计算大小。因为虽然引用类型的成员变量在对象(假设为A)中是存储的4字节地址,但他执行的成员对象(假设为B)是依附于A存在的,所以这个成员变量占的大小是4字节+对象B的大小
      

  15.   

    有对象就不会空吧
    如果只申明没有new,那个不是对象只是一个引用
      

  16.   

    此群是一个 java Flex 技术群,如有想在知识方面想共同进步的请加入,长期不发言者 将会被清楚群号:90551956希望大家都能带着知识和问题进来
      

  17.   

    变量的指向为空 
    object o=null;
      

  18.   

    总结各位的解释:
    空对象 的 概念:1、String str=null;//只有引用,没有实现对象,就是“空对象”
       多数同仁支持此种解释
     2、class A{}//此类没有属性,但是可以有方法,
        少数同仁支持此种解释,如18楼但是,没有一个标准的解释,
    也许,Java里面就没有这个概念!看来需要深入研究!谢谢大家的讨论!!
      

  19.   

    很简单啊,就是字面的意思:没有对象。null就是没有咯。
      

  20.   

    大话Java中的空对象!Java中空对象是什么概念? 类 = 商品房
    对象 = 其中一套具体的商品房
    引用/变量 = 一张房契或者房屋产权证,上面写着房子的地址和所有人空对象实际上指的是变量,一张空白的房契,虽然格式正确,单没有内容
      

  21.   

    ----楼主!
    你指的是:
              例  class  classOne{                    System.out.println("这是空类--null");
                       
                       }
                class   objectOne;
    则声明的对象objectOne是个空对象,因为还没有引用“实体”(成员变量未分配内存)
               还例如class objectOne = new classOne();
    这时她不是空对象,
    如果  objectOne = null;表示不再引用任何“地址号”,引用为空--这时就是空对象。
    这里涉及到对象建立的过程!
      

  22.   

    我们用框架开发时,可能判断一个类的对象是否为空,虽然它为空,可它却不是null,我明白楼主的意思。我正碰到了这个难题。
      

  23.   

    比如用hibernate开发时,用户登录有一个用户表user表。就得建立一个相应的pojo类,该数据表中只有一个用户名和密码。当我们登录时只有登录正确的名字匹配上才行,可如果你登陆了一个数据表中没有的名字。相应的user类就不会生成对应的对象,也就没有正确的密码,表面上看生成了一个对象,但对象的属性全为空,好像该对象是个空null,但开发中恰好用到判断该对象是否 ==null。可实验结果该对象确实  (!=null)不等于null。
       
      

  24.   

     网上说:字符串String  str = “”意味着分配了内存,但内容为空,String str=null 意味着没有分配内存空间。
        所以一个类只生成对象,但没有给该对象的属性赋值,所以楼主感觉是“空对象”。但java中确实没有”空对象“这么一说。对象就是对象。只是它的属性有无值区别。
        但这种所谓的“空对象”绝不是null,因为它已经是对象了,分配内存空间了。和上面的字符串对象对比一下。(本人自己的想法,望各位高手指点!)
      

  25.   

    现在的书太差劲了,明明自己生成了一个类的对象,但他还接着判断该对象是否为null,哎!害的本人验证了一天。 看来这本书的作者也认有  空对象  了。可害死我们这些初学的菜鸟了。
      

  26.   


    经过测试,得出这样的结论:
    空对象指的是,没有属性的类生成的对象
    例如:
    class A{}//其生成的对象就是空对象但是,实际中并没有“空对象”这个概念!
    谢谢大家的讨论!