java 基礎(chǔ)之final、finally和finalize的區(qū)別
java 基礎(chǔ)之final、finally和finalize的區(qū)別
1.final可以修飾類,不能被繼承;可以修飾方法,不能被重寫;可以修飾變量,只能賦值一次。
2.finally是try語句中的語句體,不能單獨(dú)使用,用來釋放資源;
3.finalize是一個(gè)方法,當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。
如下代碼程序:
package cn.jit.test;
/**
* 面試題1:final,finally和finalize的區(qū)別:
*
* final可以修飾類,不能被繼承;
* 可以修飾方法,不能被重寫
* 可以修飾變量,只能賦值一次。
* finally是try語句中的語句體,不能單獨(dú)使用,用來釋放資源;
* finalize是一個(gè)方法,當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象
* 的垃圾回收器調(diào)用此方法。
*
*
* 面試題2:如果catch里面有return語句,請(qǐng)問finally的代碼還會(huì)被執(zhí)行嗎?
* 如果會(huì),請(qǐng)問是在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語句
* 否則該方法一定會(huì)返回這里的內(nèi)容
*/
x = 40;
return 40;
//千萬不要在finally里面寫返回語句,因?yàn)閒inally的作用是
//釋放資源,是肯定會(huì)執(zhí)行的,如果在這里面寫返回語句,那么try和cache
//的結(jié)果都會(huì)被改變,所以這么寫就是犯罪!??!
}
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
SpringBoot中添加監(jiān)聽器及創(chuàng)建線程的代碼示例
這篇文章主要介紹了SpringBoot中如何添加監(jiān)聽器及創(chuàng)建線程,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-06-06
SpringBoot之Java配置的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot之Java配置的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01
SpringCloud Eureka Provider及Consumer的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud Eureka 提供者及調(diào)用者的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10

