java的引用数据类型_3.Java 引用数据类型

1.引用数据类型概论

引用数据类型 变量名 这样声明的时候变量为null。

引用数据类型 变量名=new 引用数据类型,例如String a=new String("hi~")这时候内存存储如图:

d7eed43a00e4

这时候String a 在栈内存中声明了 一个内存地址,内存地址指向堆内存中new String("hi~")声明的对象。即变量名为引用的内存地址。

2.引用数据类型分类

Object object= new Integer(1); //来定义一个Interger类

接口

接口不能直接new进行实例化,可以引用实现接口的类。

数组

int[] a=new int[10];

3.引用分类

强引用(StrongReference)

一般使用的引用 A a =new A();

当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。

一句话,空间不回收。

软引用(SoftReference)

当内存空间不足时,会回收软引用对象。

一句话,空间不足就回收。

//使用软引用

Stringstr=newString("hi~");

SoftReferenceaSoft = newSoftReference(str);

str=null;

//获取软引用的实例到强引用,如果已被回收,则返回null。

String str2=(String)aSoft.get();

弱引用(WeakReference)

在java垃圾回收期扫描它管辖的范围之内时,发现弱引用,就进行回收。

一句话,发现就回收。

//使用弱引用

Stringstr=newString("hi~");

WeakReference aWeak =new WeakReference(str);

str=null;

//获取弱引用的实例到强引用,如果已被回收,则返回null。

String str2=(String)aWeak.get();

虚引用(PhantomReference)

虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。

一句话,任何时候回收。

虚引用必须要和ReferenceQueue一起使用。ReferenceQueue是一种队列,java虚拟机将垃圾回收的对象放入其中。(ReferenceQueue也可以和软引用或弱引用一起使用)。

Stringstr=newString("hi~");

ReferenceQueueq=newReferenceQueue ();

PhantomReferencepr=newPhantomReference (str,q);

str=null;

4.问题

问题如下

String str1=new String("hi~");

String str2=str1;

String str3=new String(str2);

System.out.println(str1==str2);

System.out.println(str1==str3);

System.out.println(str1.equals(str2));

System.out.println(str1.equals(str3));

结果为:

true

false

true

true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值