知识点
比较器、内部类、虚拟机和垃圾回收
虚拟机和垃圾回收这块本人感觉挺重要的,之前看面试文章的时候老是看到这块的知识,但其实这一块基本都是JVM里自动操作的,但还是要详细了解他们的底层原理,毕竟为了面试
比较器
比较器也是分内部比较器Comparable和外部比较器Comparator,这两个都是接口
使用内部比较器重写方法是在需要比较的类实现接口重写compareTo方法,而外部比较器就是在需要比较类外面再建立一个类实现接口重写compare方法
内部类
内部类分四个 非静态成员内部类、静态成员内部类、局部内部类、匿名内部类
内部类这块知识点还是比较多的,但是一般用的都比较少,老师也是提倡掌握匿名内部类即可
学习要抓住重点学习,因为内部类这块有四个不同知识点,每个知识点里面对于属性、方法的理解又不同,再说了记多了太容易搞混了,还是看哪个重要记哪个吧
垃圾回收
难点
虚拟机和垃圾回收这块也不能说是难点,因为只有几行的代码,其他的都是底层的原理,但是就这一块面试的时候还是经常提的,反正咱也不知道为啥面试经常问这个,老师的回答是问这样的问题会显得面试官逼格很高😂,Java都是自动回收垃圾,自己也不用写什么垃圾回收,我估计面试官也是想看看你对底层源码的了解
思路
说到垃圾回收那你一定要先了解一下JVM虚拟机里面都有什么东西和回收那一块的垃圾,当然了肯定不是JVM虚拟机里的东西都要回收,JVM里面是栈和堆、程序计数器、本地方法区,垃圾回收是回收的堆里面的垃圾
知道回收的是堆里的垃圾,那要怎么判断谁是垃圾那?其实很简单,假如你手里有个空箱子,你会感觉他是垃圾吗?你们的答案一定不一样,纸箱子的确是垃圾,但当纸箱子装着东西的时候,那他还是垃圾吗?
从上面的比喻就能看出来判断垃圾的大概意思了,当你用纸箱子做点事的时候就不是垃圾,当这个纸箱子只是占着空间没有用那就是垃圾了,看看下面JVM对判断垃圾的说法
在对堆进行对象回收前,首先要判断哪些是无效对象。我们知道,一个对象不被任何对象或变量引用,那么就是无效对象,需要被回收
上面的比喻也只能大概的描述这个例子,毕竟虚拟机里面执行判断垃圾的算法还是特别难的。
知道了哪个是垃圾后那你还要进行销毁呀,你可以把这个东西想想成一个垃圾桶,里面有回收利用的垃圾还有无用垃圾,咱们只需要把无用垃圾给拿出来丢了,回收利用的垃圾继续放垃圾桶里,当然了本人的这些理解也只是让你对这个知识点的大概了解,其中还有很多的详细算法就不是捡垃圾和丢垃圾这个简单的了,当然了还是希望这种方式的解读会对没有学过这个知识点的人能更快的理解这个过程。
今日收获
本来这个东西就是自动回收的,但虚拟机和垃圾回收这点面试经常问,可以多看看相关的文章了解一下,今天面向对象就算是结束了,学了一星期的面向对象,理论太多了,之后还是要好好整理一下自己的笔记。