在java里面,是没有指针的(程序员是不需要处理指针问题的,尽管内核机制是 指针),这是java傲人的优点之一,但是,实际上在学习对象引用的时候,完全按照指针来理解。
java的数据类型分为两类:基本数据类型,引用类型,现分类说明:
int i=0;
person p = new person()
这两条语句有什么不同,又有什么相似?
对比理解不难发现,等号左边,声明的是变量,右边是“值”,不管是1,2,3还是一个内存地址,等号是赋值。。。具体的就不用我细说了吧
可以,person类型的引用p指向了person类型的对象。为什么p能指向person类型的对象呢?因为:person p = new person();这条语句执行后,在栈内存中产生一个变量p,在堆内存中开辟一块空间存入person对象,同时将该对象的地址返回存在变量p中,p的值就是person对象的地址,这样就说p指向了该对象。
java中内存类型分为栈和堆,Person p = new Peson()语句,会做三件事,第一件事在栈中申请变量p的空间(因为Person是类,引用数据类型,与int这样的基础数据类型不一样,p中存储的是地址,而不是真实的值,我感觉这个地址就是引用);第二件事就是在堆中new出Person对象,并得到其内存地址,也就是引用;第三件事把地址(引用)赋值给p这个引用变量。
总结:Person p = new Person();
Person:引用数据类型
p:引用变量
new Person():引用,其实就是内存地址。
这样就应该清楚了。