对象和对象变量的问题

shevchenko627 2010-04-17 02:02:58
本人初学JAVA,正在看JAVA核心技术,看到书上有两句话
“一个对象变量并没有实际包含一个对象,而仅仅引用一个对象”
“在JAVA中,任何对象变量的值都是存储在另外一个地方的一个对象的引用”

new Date()
Date deadline = new Date()

第一句代码是说用构造器构造了一个Date类对象
第二句代码里deadline只是对象变量,deadline是存储在栈中,而Date类对象是存储在堆中,对象变量deadline只是引用堆中的Date类对象

我这么理解对吗?希望大家指点。谢谢!
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengfabiao 2010-04-19
  • 打赏
  • 举报
回复
厉害,我还没搞懂呢
warrior511 2010-04-18
  • 打赏
  • 举报
回复
理解正确。
java里直接操作的永远是引用变量,引用变量对应着一个实例对象,当没有引用指向对象的时候,对象所占内存会被回收。
shevchenko627 2010-04-18
  • 打赏
  • 举报
回复
多谢各位了!
justlearn 2010-04-17
  • 打赏
  • 举报
回复
Think in Java中形象的比喻就是 deadline是遥控器,new Date()是电视机
zfq642773391 2010-04-17
  • 打赏
  • 举报
回复
恩,就是这样,我刚学时费了很久才理解,你很棒啊,看了下书就理解了
xcw555 2010-04-17
  • 打赏
  • 举报
回复
对头哈
naruto__ 2010-04-17
  • 打赏
  • 举报
回复
有前途 好好学
magicluo 2010-04-17
  • 打赏
  • 举报
回复
对滴 小子不错嘛
afunx 2010-04-17
  • 打赏
  • 举报
回复
new Date()
Date deadline = new Date()
第一句是匿名引用;
第二句的引用,我觉得是这样理解的,和楼主差不多。首先在内存中,创建一个Date对象,根据Date的情况分配足够的存储空间,deadline只是这个存储空间的首地址。当操作的时候,deadline.method(),实际上并不是在操作deadline,而是在操作一个Date对象,而这个Date对象的首地址是deadline。
lonefeifei 2010-04-17
  • 打赏
  • 举报
回复
嗯,不错,
ThinkCat 2010-04-17
  • 打赏
  • 举报
回复
应该是这样理解的。栈里存放引用和基本类型,堆中存放对象。
ublearning 2010-04-17
  • 打赏
  • 举报
回复
理解是正确的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧