Java:引用和对象

引用: 引用相当于一个“别名”,也可以理解成一个指针,把它指向哪个对象,它就代表哪个对象。
创建一个引用只是相当于创建了一个很小的变量,这个变量保存了一个整数,这个整数表示内存中的一个地址
总结: 所谓的“引用”本质上只是存了一个地址,java将数组设定成引用类型,这样的话后续进行数组参数传参,其实只是将数组的地址传入到函数形参中。这样可以避免对这个数组的拷贝(数组可能比较长,那么拷贝开销就会很大。
null在java中表示“空引用”,也就是一个无效的引用。

  • 局部变量和引用保存在栈上,new出的对象保存在堆上
  • 类在java中属于引用类型。总的来说,类相当于一个模板,而对象是由模板产生的样本。一个类可以产生无数的对象。

java中引用和对象的关系:

例如:
String str = new String(“abc”);

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

  • java中new出来的对象存储在堆里,而str的值,就是str所引用的new String(“abc”); 对象所在堆中的地址。
  • java中是通过引用来操作对象的。

例如:引用就是遥控器,对象就是电视机,换频道和音量的大小相当于是对象里的属性。

我们通过遥控器来操控电视机。这样就非常方便不必直接操控对象,而是通过遥控器这个引用,电视机在哪里我不用管,它现在音量大小,什么频道我也不用管。
我只要通过遥控器(引用),去操控电视机(对象),来达到我想要的效果即可。

  • 一个引用只能指向一个对象,一个对象可以被多个引用指向。

例如:
Object a = new Object();
Object b = a;
Object c = b;
这个例子中只创建了一个对象,而它的引用有三个,甚至可以继续无限制的创建它的引用。

  • 实际内存中创建的是一个对象。

在Java中对象实例存储在堆中,而引用在栈中。
当执行Object a = new Object();这条语句时,会在堆中给对象实例分配一块内存,在栈中给引用分配一块内存。然后让引用指向堆中的对象(栈中的引用存储的是对象的在堆中的地址)。
当执行Object b = a;时,只是在栈中增加了一个引用b,b指向堆中的对象(b存储对象的地址)。
所以不管增加几个对象的引用,都只创建了一个对象。

  • 改变对象内容,其他引用指向这个对象的内容也会改变。

不管通过哪个引用改变对象内容,改变的都是堆中唯一的那个对象,所以其他引用指向的对象内容都变了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值