概述
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里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。
最后
以上就是鲜艳河马为你收集整理的对象与引用的全部内容,希望文章能够帮你解决对象与引用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复