淺析final,finally,finalize 的區(qū)別
1.final
final修飾類,說明這個(gè)類不能被繼承,是以個(gè)頂級類。
final修飾變量,說明這個(gè)變量是常量。
final修飾方法,表示這個(gè)方法不能被重寫,不過可以沖在final方法。
比如有個(gè)基類Person,里面有一個(gè)public final void eat()方法,可以在Person類中重載同名方法,比如public void eat(String name,int age)。假如有一個(gè)子類Student,那么在Student中可以override父類的非final方法,但是不能override final方法。
Person
package test2;
public class Person {
private String name;
private int age;
public final void eat()
{
System.out.println("this is in person class");
}
public void eat(String name,int age)
{
}
}
Student
package test2;
public class Student extends Person {
@Override
public void eat(String name, int age) {
// TODO Auto-generated method stub
super.eat(name, age);
}
}
常見的final方法就是Object類累中的wait()和notify()方法。
2.finally
finally是關(guān)鍵字,在異常處理中,try子句中執(zhí)行需要運(yùn)行的內(nèi)容,catch子句用于捕獲異常,finally子句表示不管是否發(fā)生異常,都會執(zhí)行。finally可有可無。但是try...catch必須成對出現(xiàn)。
3.finalize()
finalize() 方法名,Object類的方法,Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對象沒有被引用時(shí)對這個(gè)對象進(jìn)行調(diào)用。finalize()方法是在垃圾收集器刪除對象之前對這個(gè)對象調(diào)用的子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理操作。
代碼實(shí)例:
class Person
{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString()
{
return "姓名:"+this.name+",年齡:"+this.age;
}
public void finalize() throws Throwable{//對象釋放空間是默認(rèn)調(diào)用此方法
System.out.println("對象被釋放-->"+this);//直接輸出次對象,調(diào)用toString()方法
}
}
public class SystemDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person per=new Person("zhangsan",30);
per=null;//斷開引用,釋放空間
//方法1:
System.gc();//強(qiáng)制性釋放空間
//方法2:
// Runtime run=Runtime.getRuntime();
// run.gc();
}
}
相關(guān)文章
Java中高效判斷數(shù)組中是否包含某個(gè)元素的幾種方法
這是一個(gè)在Java中經(jīng)常用到的并且非常有用的操作,這個(gè)問題在Stack Overflow中也是一個(gè)非常熱門的問題,本文將分析幾種常見用法及其時(shí)間成本2021-09-09
基于JSON實(shí)現(xiàn)傳輸byte數(shù)組過程解析
這篇文章主要介紹了基于JSON實(shí)現(xiàn)傳輸byte數(shù)組過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
Java8 中使用Stream 讓List 轉(zhuǎn) Map使用問題小結(jié)
這篇文章主要介紹了Java8 中使用Stream 讓List 轉(zhuǎn) Map使用總結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-06-06
kafka-console-consumer.sh使用2次grep管道無法提取消息的解決
這篇文章主要介紹了kafka-console-consumer.sh使用2次grep管道無法提取消息的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
java編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01

