对象变量与对象的区分

cmdt169 2010-01-24 12:06:48
这是我在看《java核心编程》教材进行java学习时碰到的一个疑惑的地方。

就是书上写:

通常,希望构造的对象可以多次使用,因此,需要将对象存放在一个变量中:Date deadline = new Date();
那么这个 deadline是一个对象变量,就不能将Date类的方法应用于这个对象变量上;

但是 定义一个对象的时候 也是这样定义的: GreorianCalendar now = new GreorianCalendar();

为什么 now 就是一个对象呢?

对象和对象变量在定义的时候如何区分呢?
...全文
483 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cmdt169 2010-01-26
  • 打赏
  • 举报
回复
谢谢 各位, 看来可以结贴了。
phyerbarte 2010-01-25
  • 打赏
  • 举报
回复
用变量这个词不好,应该用"引用"
Date deadline = new Date();
deadline这个引用,引用了一个Date类型的对象。
这个对象由new Data()时创建。
bayougeng 2010-01-25
  • 打赏
  • 举报
回复
可能是书上举的例子没有很好的表达作者的意思。
又或者是译者的水平有限。
总之你说的两种定义实例的方法没有区别。
可以给你一个这样的例子:
例1.Date deadline = new Date();
例2.new Thread(new Runnable{ public void run(){}}).start();
例1.在声明deadline以后,你需要多次使用它。可以用deadline.xxx()的形式来调用它的方法。
例2.你只需要使用一次,故完全不用记住它是谁,让它干完它要干的活就可以滚蛋了。
crazylaa 2010-01-25
  • 打赏
  • 举报
回复
楼主你那书是靠所谓的“术语”忽悠人的,扔了吧。
021850524 2010-01-24
  • 打赏
  • 举报
回复
基本上大多数reference和primitive都是存在栈上的. 对象都是在堆上生成.
小贝壳666 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 cmdt169 的回复:]

但是 定义一个对象的时候  也是这样定义的:  GreorianCalendar now = new GreorianCalendar();

为什么 now 就是一个对象呢?

[/Quote]
以上是LZ的误解,now 也是对象变量。
关于对象变量和对象,通常情况下我们不是分的这么清楚的。对象变量就是对象的引用,即存储对象的地址。
对象变量存在栈中,对象存在堆中
GreorianCalendar now = new GreorianCalendar();
new GreorianCalendar()为对象,存在堆中,
now 为对象变量,存在栈中,存储的内容为new GreorianCalendar()对象在堆中的存放地址,类似于C中的指针。
不善^ 2010-01-24
  • 打赏
  • 举报
回复
变量名 存在 栈中
new后 产生一个对象 存放在 堆中
fuyou001 2010-01-24
  • 打赏
  • 举报
回复
需要将对象存放在一个变量中 ->Date 类型的对象

deadline是一个对象变量 -->这是一个表示对象的变量

定义一个对象的时候 -->定义一个类型的对象



一头头 2010-01-24
  • 打赏
  • 举报
回复
deadline 也就是一个对象而已 跟now一样哇 叫做instance

什么对象变量 忽悠人的东西 翻译得跟屎一样哇
借我那把枪吧 2010-01-24
  • 打赏
  • 举报
回复
把我上面推荐给你看的两本吃透了,然后多找几个项目实战下,就可以说对JAVA了解了,再有时间学的话就多看看源码
借我那把枪吧 2010-01-24
  • 打赏
  • 举报
回复
建议楼主刚开始入门看《java基础编程》
入门后看《Thinking in java》
希望对你有帮助,祝你早日成功
cmdt169 2010-01-24
  • 打赏
  • 举报
回复
楼上的大哥, 刚学java,也是第一次学面向对象设计语言,以前之学了C语言。对对象理解还是不太透彻。
代码我已经验证过了,自己敲到电脑里,确实都一样啊。
不是说 java核心技术是入门的圣经, 我来求证一下的, 基本上可以结帖了。

借我那把枪吧 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cmdt169 的回复:]
那为什么 书上说  deadline不能用方法,  now却可以呢?
书的问题?
[/Quote]谁说deadline不能用方法,稍微有点常识的人都能问死他,你要明白deadline和now只是个变量的名字黑了,再你声明了对象和new了对象后,这个变量名字才有意义,现在他就是一个类型的变量了,而且是new出来的对象的引用,这个名字可以调用声明这个名字的类的所有方法,楼主你别再问了,问多了还是这几句话,不如去找对象基础语法的书看看然后自己敲敲代码验证看看,说多了也没用
借我那把枪吧 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 cmdt169 的回复:]
这是我在看《java核心编程》教材进行java学习时碰到的一个疑惑的地方。

就是书上写:

通常,希望构造的对象可以多次使用,因此,需要将对象存放在一个变量中:Date deadline = new Date();
那么这个  deadline是一个对象变量,就不能将Date类的方法应用于这个对象变量上;

但是 定义一个对象的时候  也是这样定义的:  GreorianCalendar now = new GreorianCalendar();

为什么 now 就是一个对象呢?

对象和对象变量在定义的时候如何区分呢?
[/Quote]看了楼主说的话我可以判断你对对象还真的一点不了解
Date deadline = new Date();
GreorianCalendar now = new GreorianCalendar();
这两个语句不都是对象的声明和新建吗,不都是一样的吗,又何来疑惑呢,要说不同也只有对象的类型不同,Date deadline = new Date(); 这句不就是声明一个Date类型的变量,变量名叫deadline吗,记住deadline是new Date()这个新建对象的引用,而deadlin所引用的对象类型是Date类型的,当然可以调用Date类的方法
同理GreorianCalendar now = new GreorianCalendar(); 也一样,区别的地方就是对象类型和变量对象的引用(变量名)不一样
说了这么多也不知道楼主你明白了没有,建议楼主去看看对象的基础语法部分,希望对你有帮助
cmdt169 2010-01-24
  • 打赏
  • 举报
回复
那为什么 书上说 deadline不能用方法, now却可以呢?
书的问题?
qiangguo 2010-01-24
  • 打赏
  • 举报
回复
学过了,呵呵
why675059192 2010-01-24
  • 打赏
  • 举报
回复
JAVA核心技术贼垃圾 ,里面有很多错误的解释! 要看就看JAVA编程思想 讲的特清楚;
首先 GreorianCalendar now = new GreorianCalendar(); 他中的now不是对象,是对象的引用,存在栈中! 而new GreorianCalendar(); 用new创建的才是对象 存在堆中!

对于对象变量没听说过 可能就是对象的引用吧!

62,614

社区成员

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

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