本人初学JAVA,正在看JAVA核心技术,看到书上有两句话
“一个对象变量并没有实际包含一个对象,而仅仅引用一个对象”
“在JAVA中,任何对象变量的值都是存储在另外一个地方的一个对象的引用”new Date()
Date deadline = new Date()第一句代码是说用构造器构造了一个Date类对象
第二句代码里deadline只是对象变量,deadline是存储在栈中,而Date类对象是存储在堆中,对象变量deadline只是引用堆中的Date类对象我这么理解对吗?希望大家指点。谢谢!

解决方案 »

  1.   

    new Date()
    Date deadline = new Date()
    第一句是匿名引用;
    第二句的引用,我觉得是这样理解的,和楼主差不多。首先在内存中,创建一个Date对象,根据Date的情况分配足够的存储空间,deadline只是这个存储空间的首地址。当操作的时候,deadline.method(),实际上并不是在操作deadline,而是在操作一个Date对象,而这个Date对象的首地址是deadline。
      

  2.   

    Think in Java中形象的比喻就是 deadline是遥控器,new Date()是电视机
      

  3.   

    理解正确。
    java里直接操作的永远是引用变量,引用变量对应着一个实例对象,当没有引用指向对象的时候,对象所占内存会被回收。