学过Java的人们都知道,Java的类型一般有两种,一种是基本数据类型,另一种是引用数据类型。其中,基本数据类型的值通常储存与栈内存,用于对该类型的对象进行存储;而引用数据类型则在存储堆中对需要引用的对象进行引用。
说到引用,引用是Java面向对象的一个特点,如果一个对象不曾被任何变量应用的话,那么整个程序也就无法再使用这一对象。因此四种引用类型可以说是大家在学习Java的过程中经常会接触到的。那么Java究竟有哪四种引用类型呢?
类型一:强引用
强引用是一种最常见的引用形式,同时也较为普遍。如果内存空间不足,Java虚拟机将会抛出OutOfMemoryError错误,从而程序将异常停止。强引用的对象是不可以GC回收的,不可以随意回收具有强引用的对象来解决内存不足的问题。把一个对象赋给一个引用类型变量,则为强引用。在Java中,强引用是一种默认的状态,除非JVM虚拟机停止工作。
类型二:软引用
软引用和强引用不同,如果内存空间足够多,一个对象被软引用,则垃圾回收器不会将其回收;如果内存空间不足,这些引用对象就会被回收。所以,软引用就是当回收器没有回收某个对象时,程序就可以对其使用。它可用来较为敏感的高速缓存,虚拟机可以将软引用加入到与之向关联的队列。
类型三:弱引用
弱引用的特点就是引用对象的生命周期较短。G回收器在扫描内存区域是若发现弱引用,即便是内存空间还足够使用,弱引用对象都会被回收。但弱引用对象也可以加入队列,这样就可以不被回收。
类型四:虚引用
从这种引用类型的名称就可以看出,虚引用的对象可以说是形同虚设。为什么这么说呢?因为虚引用不会决定对象的生命周期,并且虚引用等于没有引用,随时都可以被GC回收。
四种引用类型是Java学习的重要部分。以后在实战中也是经常需要用到的,因此在记熟基础知识点之后,不妨多自己动手写写代码。网上开源的代码虽然有许多可以借鉴,但是在学习的时候,还是尽量自己动手去写,网上的代码再好,也是别人的技术,毕竟只有自己能够写出来的代码才算是自己的技术。