引用和对象的关系

Java引用与对象解析

java的引用和对象的关系。
例如下面这句代码

String str = new String("abc");

引用是:str
对象是 :new String(“abc”);

java中new出来的对象存储在堆里,而str的值,就是str所引用的new String(“abc”);对象所在堆中的地址。
java中是通过引用来操作对象的。
举个例子,引用就是遥控器,对象就是电视机,换频道和音量的大小相当于是对象里的属性。
于是我们通过遥控器来操控电视机。这样就非常方便不必直接操控对象,而是通过遥控器这个引用,电视机在哪里我不用管,它现在音量大小,什么频道我也不用管
我只要通过遥控器(引用),去操控电视机(对象),来达到我想要的效果即可。

再看一个代码
有一个类Student

class Student{
	int age;  
	char gender;
}
Student s1 = new Student();
Student s2 = new Student();

s1.age =17;
s2.age=71;
System.out.printLn("s1"+s1.age+"==="+"s2"+s2.age ); // 结果1: 17  71

s1 = s2;
System.out.printLn("s1"+s1.age+"==="+"s2"+s2.age ); // 结果2:71 71

结果1就不解释了,下面解释一下结果2
结果2:

Student s1 = new Student();  // 假设此时(new Student();)的地址为:xxxx1
Student s2 = new Student();  // 假设此时(new Student();)的地址为:xxxx2

结果2解释:
但是s1=s2;这就代表着,将s2的地址值赋值给了s1,于是s1就不在指向原来的student了,它就指向s2所指向的对象了,即s1(引用)的值为xxxx2,即s1与s2指向同一个对象,于是不管是s1还是s2,只要有一个操控,那么相应的对象的属性都会改变。就好比两个遥控器(引用)都同时操控一个电视机,那么不管是谁操作,那么电视机(对象)的状态都会改变。至于第一个地址值为xxxx1的对象,java的垃圾回收机制会在适当的时侯将其回收掉。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值