A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 中国力量 高级黑马   /  2014-5-26 19:47  /  1858 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问下 java中的引用 到底是啥意思?至今没有弄明白
比方说 person p = new person();可以把p理解为引用吗?谢了

6 个回复

倒序浏览
在java里面,是没有指针的(程序员是不需要处理指针问题的,尽管内核机制是 指针),这是java傲人的优点之一,但是,实际上在学习对象引用的时候,完全按照指针来理解。
java的数据类型分为两类:基本数据类型,引用类型,现分类说明:
int i=0;
person p = new person()
这两条语句有什么不同,又有什么相似?
对比理解不难发现,等号左边,声明的是变量,右边是“值”,不管是1,2,3还是一个内存地址,等号是赋值。。。具体的就不用我细说了吧

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
毕老师的视频多看几遍
回复 使用道具 举报
可以,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():引用,其实就是内存地址。
这样就应该清楚了。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
wangkerui 发表于 2014-5-26 20:04
在java里面,是没有指针的(程序员是不需要处理指针问题的,尽管内核机制是 指针),这是java傲人的优点之 ...

额 谢了
回复 使用道具 举报
这句话在内存当中做了
1、因为new用到了person.class字节码文件,所以会先找到person.class文件并加载到内存中。
2、执行该类中的static代码块,如果有的话给person类进行初始化。
3、在堆内存中开辟空间,分配内存地址。
4、在堆内存中建立对象的特有属性并进行默认初始化。
5、对属性进行显示初始化。
6、对对象进行构造代码块初始化。
7、对对象进行对应的构造函数初始化、
8、将内存地址赋给栈内存中的p变量。

评分

参与人数 1技术分 +1 收起 理由
天涯追梦 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马