Java中final,finalize和finally的区别 古城微笑少年丶 2022-05-25 03:18 169阅读 0赞 # Java中final,finalize和finally的区别 # final关键字可以用于类,方法,变量前,用来表示该关键字修饰的类,方法,变量具有不可变的特性。 (1)final关键字用于基本数据类型前:这时表明该关键字修饰的变量是一个常量,在定义后该变量的值就不能被修改。 (2)final关键字用于方法声明前:这时意味着该方法时最终方法,只能被调用,不能被覆盖,但是可以被重载。 (3)final关键字用于类名前:此时该类被称为最终类,该类不能被其他类继承。 对于(1): ![20160119205845787][] 对于(2): ![20160119210356825][] 对于(3): ![20160119210504680][] ## finalize ## finalize方法来自于java.lang.Object,用于回收资源。 可以为任何一个类添加finalize方法。finalize方法将在垃圾回收器清除对象之前调用。 在实际应用中,不要依赖使用该方法回收任何短缺的资源,这是因为很难知道这个方法什么时候被调用。 \[java\] [view plain][] [copy][view plain] 1. <span style="font-size:14px;">**class** People\{ 2. 3. **final** **void** output(String name)\{ 4. System.out.println(name); 5. \} 6. \} 7. **class** Stu **extends** People\{ 8. 9. **final** **void** output(String name,**int** id)\{ //可以被重载 10. System.out.println(name); 11. \} 12. **public** **void** finalize() **throws** Throwable\{ 13. **super**.finalize(); 14. System.out.println("finalize method was called!"); 15. \} 16. \} 17. **public** **class** Main \{ 18. 19. **public** **static** **void** main(String\[\] args)\{ 20. \} 21. \}</span> ## finally ## 当代码抛出一个异常时,就会终止方法中剩余代码的处理,并退出这个方法的执行。假如我们打开了一个文件,但在处理文件过程中发生异常,这时文件还没有被关闭,此时就会产生资源回收问题。对此,java提供了一种好的解决方案,那就是finally子句,finally子句中的语句是一定会被执行的,所以我们只要把前面说的文件关闭的语句放在finally子句中无论在读写文件中是否遇到异常退出,文件关闭语句都会执行,保证了资源的合理回收。 \[java\] [view plain][] [copy][view plain] 1. **import** java.io.FileInputStream; 2. **import** java.io.FileNotFoundException; 3. **import** java.io.IOException; 4. **import** java.io.InputStream; 5. 6. **public** **class** Finally \{ 7. **void** fileWith()\{ 8. InputStream in = **null**; 9. **try** \{ 10. in = **new** FileInputStream("wang.txt"); 11. //其他操作 12. \} **catch** (FileNotFoundException e) \{ 13. e.printStackTrace(); 14. \}**finally**\{ 15. **try** \{ 16. in.close(); 17. \} **catch** (IOException e) \{ 18. e.printStackTrace(); 19. \} 20. \} 21. \} 22. \} 23. [20160119205845787]: /images/20220525/04073d71854d4aeb8333d14b3f11b97d.png [20160119210356825]: /images/20220525/b8f8bc800d734d1f94421709f77dc414.png [20160119210504680]: /images/20220525/6b73feebe85647ceaa1c9d7db2632c6f.png [view plain]: https://blog.csdn.net/cassiepython/article/details/50544828#
还没有评论,来说两句吧...