首页 > Java资讯 > Java基础学习:java引用数据类型

Java基础学习:java引用数据类型

更新时间:2020-04-07 13:33 浏览99次 来源:动力节点


    1.引用数据类型概论


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


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


Java基础学习:java引用数据类型


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


    2.引用数据类型分类


    类


Java基础学习:java引用数据类型


    接口


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


    数组


    Java基础学习:java引用数据类型


    3.引用分类


    强引用(StrongReference)


    一般使用的引用Aa=newA();


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


    一句话,空间不回收。


    软引用(SoftReference)


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


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


   Java基础学习:java引用数据类型


    弱引用(WeakReference)


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


    一句话,发现就回收。


Java基础学习:java引用数据类型


    虚引用(PhantomReference)


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


    一句话,任何时候回收。


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


Java基础学习:java引用数据类型


    4.问题


    问题如下


Java基础学习:java引用数据类型


    结果为:


Java基础学习:java引用数据类型


 以上就是动力节点java培训机构的小编针对“Java基础学习:java引用数据类型”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。


热门课程推荐

全部班型支持免费试学

动力节点在线报名表(此信息已加密,请放心填写)

返回顶部