请哪位高手帮帮忙啊,我是刚自学Java的,请教一个Java中关于创建对象的问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:57:23
举个例子 在已经定义了一个MyDate类情况下,创建一个对象 MyDate d=new MyDate() ,书上说d是一个引用变量,保存的只是一个对象的地址,那为什么说d就是一个对象?

首先,在Java中将内存分为了栈内存,堆内存。。。等等(不是数据结构中的概念),一个对象的真正实体是在堆内存中,为了找到这个对象,我们需要这个对象在堆内存中的内存地址,这个地址就是所谓的对象应用,对象应用是在栈内存中,如 MyDate d=new MyDate() d就是一个对象应用,它是存在在栈内存中的,它指向了堆内存中的一个具体的对象,即new MyDate()

MyDate d=new MyDate();
真正的MyDate对象是通过new MyDate()语句创建存在堆内存中,只不过JDK可以通过栈内存中的d内容找到这个对象,但是d中存的不一定是此对象的物理地址,所以严格的说d只是此对象的引用.你的明白?

对象和引用变量是两个不同角度说的嘛,有什么矛盾?
对象即是一个类的实例,everything is object。
MyDate d=new MyDate();即创建了一个MyDate类型的对象。
从另一个角度讲,MyDate d=new MyDate();声明了一个变量。
这个对象保存了地址,指向一段内存空间。

严格来说d是一个对象的引用 但是持有对象的引用就能操纵这个对象 所以可以把这个简单说成d是一个对象

就是看的角度方向来看的

理论上d 确实就是一个存储对象地址的变量或者常量 但是对于程序来说 在运用

d的时候要形象的把他看成是一个对象 并且调用他的参数和方法 只是方便理解!

d只是MyDate对象的一个实例也就是说d其实就是MyDate对象!d可以是任意值随你定义的!