java中常见的太监类 java中常见的太监类有哪些_Java


在Java中有这三个假兄弟final、finally和finalize。
你别说,他们三个看起来还真像,不把眼睛睁大点还真分辨不出来。
难怪在Java面试时,面试官就喜欢拿来糊弄我们有的Java新人们!
你老说它们半毛钱关系也没有,那么他们究竟是哪里来的?别着急!我们马上就让这三兄弟各回各家,各找各妈。
final
如果你不想让自己写的类被继承,那么就该final修饰符出场了。将final修饰符放到class关键字前,就表示定义的类不能被继承,那么定义的这个类我习惯叫太监类;为什么叫太监类,你懂的哈。


java中常见的太监类 java中常见的太监类有哪些_java中常见的太监类_02


那有哪些类是太监类呀?String就是一个被final修饰的类,我们只能用,不能继承。
finally
它是在Java的异常处理中使用。啊,不知道什么是异常处理。简单说就是代码运行出错后的补救措施。你敢不敢写int i = 1 / 0;这句代码, 如果编译运行这行代码就会出现除数为0的异常错误。如果程序猿没有写处理异常的代码,那么这个异常错误就会最终被JVM(Java虚拟机)捕获到,那么后果就是程序执行终止。Java的异常处理是机制如下:


java中常见的太监类 java中常见的太监类有哪些_Java_03


我们可以看到finally的作用就是其大括号里包含的代码不管有没有异常都要执行。如果你肯动脑经也许会问,如果我在try的大括号里写上return,那finally里的代码还会执行吗?记住,finally不管任何情况下都会执行大括号里包含的代码。不信邪呀,你就试一试。
finalize
作为一名Java菜鸟估计你是很难有机会遇到它。还是给大家解释一下,这玩意儿是干嘛的。大家都知道Java有GC(自动垃圾回收),所以我们只管new对象,不用担心释放对象。当然,学C++的同学就没有这种福利了,C++菜鸟一不小心就可能搞出一个内存泄漏来。


java中常见的太监类 java中常见的太监类有哪些_finalize方法_04


看到了吧,finalize其实是一个方法名,它是在Java的祖宗类Object中定义的,所以所有的类都自动继承这个方法。finalize()方法是在GC释放对象时被自动调用,常用于释放一些GC无法释放的资源。啊,还有GC无