java 基礎(chǔ)之final、finally和finalize的區(qū)別
java 基礎(chǔ)之final、finally和finalize的區(qū)別
1.final可以修飾類,不能被繼承;可以修飾方法,不能被重寫;可以修飾變量,只能賦值一次。
2.finally是try語(yǔ)句中的語(yǔ)句體,不能單獨(dú)使用,用來(lái)釋放資源;
3.finalize是一個(gè)方法,當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。
如下代碼程序:
package cn.jit.test;
/**
* 面試題1:final,finally和finalize的區(qū)別:
*
* final可以修飾類,不能被繼承;
* 可以修飾方法,不能被重寫
* 可以修飾變量,只能賦值一次。
* finally是try語(yǔ)句中的語(yǔ)句體,不能單獨(dú)使用,用來(lái)釋放資源;
* finalize是一個(gè)方法,當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象
* 的垃圾回收器調(diào)用此方法。
*
*
* 面試題2:如果catch里面有return語(yǔ)句,請(qǐng)問(wèn)finally的代碼還會(huì)被執(zhí)行嗎?
* 如果會(huì),請(qǐng)問(wèn)是在return前還是在return后?
* 會(huì)。在return前。
*
* @author Rocky
*
*/
public class FinallyDemo8 {
public static void main(String[] args) {
Demo d = new Demo();
System.out.println(d.method());
}
}
class Demo {
public int method() {
int x = 10;
try {
x = 20;
System.out.println(1/0);
return x;
} catch (Exception e) {
x = 30;
return x;
} finally {
/*
* finally中不應(yīng)當(dāng)有return語(yǔ)句
* 否則該方法一定會(huì)返回這里的內(nèi)容
*/
x = 40;
return 40;
//千萬(wàn)不要在finally里面寫返回語(yǔ)句,因?yàn)閒inally的作用是
//釋放資源,是肯定會(huì)執(zhí)行的,如果在這里面寫返回語(yǔ)句,那么try和cache
//的結(jié)果都會(huì)被改變,所以這么寫就是犯罪!??!
}
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Maven項(xiàng)目執(zhí)行生命周期相關(guān)操作時(shí)出現(xiàn)錯(cuò)誤:does not match a
當(dāng)pom文件中的gav標(biāo)簽格式錯(cuò)誤,如出現(xiàn)中文或空格,會(huì)導(dǎo)致與有效的id模式不匹配錯(cuò)誤,gav標(biāo)簽應(yīng)僅包含數(shù)字、字母和下劃線,解決方法是修改標(biāo)簽中的中文為英文,刪除多余空格,并刷新pom文件,例如,將中文"測(cè)試"改為英文"test"2024-09-09
java反編譯工具jd-gui-osx?for?mac?M1芯片無(wú)法使用的問(wèn)題及解決
這篇文章主要介紹了java反編譯工具jd-gui-osx?for?mac?M1芯片無(wú)法使用的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Java編程中應(yīng)用的GUI設(shè)計(jì)基礎(chǔ)
這篇文章主要介紹了Java編程中應(yīng)用的GUI設(shè)計(jì)基礎(chǔ),為一些Java開發(fā)CS類型應(yīng)用的基礎(chǔ)概念知識(shí),需要的朋友可以參考下2015-10-10

