假如有一个Person类,用Person类创建一个实例对象:
Person p = new Person("张三","20");这样在堆内存中就开辟了一块空间存放着这个对象的属性和方法,
但是p是什么呢?p是这个对象的引用变量名而已,它存放于栈内存中,存放的是这个对象在堆中的地址值,这样就指向了这个对象。你可以说p就是这个对象的名字,但是你要搞清楚的是p存放的是地址值,不是字符或字符串p。
但是你说对象的名字应该是对象的属性,那张三和20都属于对象的属性,你可能片面的理解为张三就是对象名了吧。但是假如我再实例一个对象Person p1 = new Person("张三","21");这两个张三的意义就不同了,它们属于两个不同的对象。所以不能用对象的属性来命名对象,但是它们的地址值肯定是不一样的。你要抛弃传统的观念觉得对象就应该有个名字来区别,其实真正区别对象的是它们存放的地址,就如同在监狱里犯人都不叫名字而叫编号是一样的。作者: 黑马唐浩 时间: 2012-2-4 12:28
易伟 发表于 2012-2-4 11:33
假如有一个Person类,用Person类创建一个实例对象:
Person p = new Person("张三","20");这样在堆内 ...