Thinking in java-19 final、finally、finalize关键字
2017-06-18 16:02
399 查看
这里有关于该问题的stackoverflow问答。
final可以用来修饰一个方法,则表明该方法是不可重写override的;
final可以用来修饰一个类,则表明该类是不可继承的。
运行结果:
1.final
final可以用来修饰一个变量,则表明该变量是不可改变的;private final String name = "foo"; //the reference name can never change
final可以用来修饰一个方法,则表明该方法是不可重写override的;
//The method below can not be overridden by its derived class public final String toString(){ }
final可以用来修饰一个类,则表明该类是不可继承的。
public final class finalClass{ //Some code here. } //The class below is not allowed. public class classNotAllowed extends finalClass{ //some code }
2.finally
finally关键字是用在异常处理时,执行一些总是要完成的工作。在异常发生时,相匹配的catch子句会被执行,然后就进入了finally语句块(如果有的话)。Lock lock = new ReentrantLock(); try{ lock.tryLock(); }catch(Exception ex){ }finally{ lock.unlock(); }
3.finalize
finalize关键字是方法名,当垃圾回收操作发生时,该方法被垃圾回收器调用。一般该方法很少被重写。protected void finalize(){ //Usually used to free memory super.finalize(); }
package com.fqyuan.thinking; public class Termination { public static void main(String[] args) { Book novel = new Book(true); novel.checkIn(); new Book(true); /* * Runs the garbage collector. * * Calling the gc method suggests that the Java Virtual Machine expend * effort toward recycling unused objects in order to make the memory * they currently occupy available for quick reuse. */ System.gc(); } } class Book { boolean checkedOut = false; Book(boolean checkOut) { checkedOut = checkOut; } void checkIn() { checkedOut = false; } /* * (非 Javadoc) Called by the garbage collector on an object when garbage * collection determines that there are no more references to the object. A * subclass overrides the finalize method to dispose of system resources or * to perform other cleanup. * * @see java.lang.Object#finalize() */ protected void finalize() { if (checkedOut) System.out.println("Error: checked out!"); } }
运行结果:
Error: checked out!
相关文章推荐
- java中final,finally,finalize三个关键字的区别
- [java]final关键字、finally关键字与finalize()方法
- java关键字final,finally,finalize
- 【Java面试题】19 final,finally和finalize的区别
- java中final,finally,finalize三个关键字的区别
- java面试题19--final、finally、finalize的区别
- Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
- java(instanceof操作符、对象类型转换 、final 关键字、final,finally,finalize的区别、static关键字,修饰符 )
- Java关键字之final------finally------finalize
- Java基础查漏补缺:final、finally和finalize的区别
- Java基础查漏补缺:final、finally和finalize的区别
- Android源码中final关键字的用法及final,finally,finalize的区别
- java 基础之final、finally和finalize的区别
- java中的final, finally, finalize的区别
- JAVA面试题解惑系列(四)——final、finally和finalize的区别
- Java - 阐述final、finally、finalize的区别。
- Java Final, Finally, Finalize
- java基础知识1---面向对象及final,finally,finalize区别
- Java基础总结从0开始(二):final、finally、finalize的区别
- Java中final、finally、finalize的区别 | Java基础