对象与引用

来源:互联网 发布:怎么报送发票数据 编辑:程序博客网 时间:2024/06/04 19:15

Student s=new Student();

这里的s到底是对象呢还是对象的引用呢? 

可将上述语句分为四部分Student s ,= ,new Student ,()

语句在内存中做的事情:

1.加载Student.class文件进内存

2.在栈内存中为s开辟空间 ----Student s (创建了一个Student类的引用变量s,它可以指向任何Student类实例,或者为Null)

3.在堆内存中为Student对象开辟空间----new Student

4.为Student对象的成员变量进行默认初始化

5.Student对象的成员变量进行显示初始化

6.通过构造方法对Student对象的成员变量赋值----语句最后的()

7.Student变量初始化完毕,把对象的地址赋值给s变量----中间的=


Student s;只是声明了一个Student类的引用,

s=new Student(); 创建了Student类的实例


用气球(对象)和绳子(引用)比喻

Student s1;  第一根绳 s1

s1=new Student(); 绳s1绑住气球

Student s2; 第二根绳s2

s2=s1; 将绳s2也绑到绳s1的那个气球

s2=new Student();绳s2绑到了一个新气球上

s1=s2;绳s1绑到绳s2的那个气球, 那原s1绑的气球就没绳了,飞走了   GC回收


结论

1.一个对象引用可以指向0个或1个对象(一根绳子可以不系汽球,也可以系一个汽球); 

2.一个对象可以有N个引用指向它(可以有N条绳子系住一个汽球)。 


Student s=new Student();

这里的s是引用    引用放的不是对象,而是对象的地址,使得该引用指向了对象。

在JAVA里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。








原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 干了一个月不发工资怎么办 16岁长白色头发怎么办 腾讯乘车码解约了怎么办 蓝洞棋牌客封号怎么办 草莓被蚂蚁吃了怎么办 脖子被种了草莓怎么办 2岁的宝宝说脏话怎么办 欠钱的人跑路了怎么办 美国非婚生子父亲不认怎么办 孕4个月肚子胀气怎么办 8个月孕妇感冒了怎么办 孕8个月感冒鼻塞怎么办 怀孕八个月感冒了怎么办 孕八个月咳嗽了怎么办 享物说同城自提怎么办 锤基意外怀孕怎么办 08 蛐蛐罐底翻砂了怎么办 剑网3中被盗号后怎么办 本人想离婚对方躲避怎么办 微信不能说语音怎么办 微信语音发不了怎么办 吃鸡语音用不了怎么办 要杀我的人见面怎么办 转晕了想吐怎么办 原地转圈头晕恶心想吐怎么办 孩子吃凉的呕吐头还晕怎么办 孩子转晕了想吐怎么办 转圈晕了想吐怎么办 我爸总是骂我妈怎么办 转圈转的想吐怎么办 大便干燥拉不出来怎么办 吹完头发很干燥怎么办 腿摔伤了结痂疼怎么办 蹭wifi被禁止后怎么办 电脑wifi给拉黑怎么办 电脑想用无线网怎么办 中路被对方打崩了怎么办 英雄联盟队友太坑怎么办 匹配被王者虐了怎么办 lol碰到嘴臭的怎么办 小婴儿脾气大怎么办呢?