国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java 中final關(guān)鍵字用在函數(shù)前有什么作用?
1.首先要明白一點(diǎn),調(diào)用一個(gè)函數(shù)除了函數(shù)本身的執(zhí)行時(shí)間之外,還需要額外的時(shí)間去尋找這個(gè)函數(shù)(類內(nèi)部有一個(gè)函數(shù)簽名和函數(shù)地址的映射表)。所以減少函數(shù)調(diào)用次數(shù)就等于降低了性能消耗。
2.final修飾的函數(shù)會(huì)被編譯器優(yōu)化,優(yōu)化的結(jié)果是減少了函數(shù)調(diào)用的次數(shù)。編譯器是如何實(shí)現(xiàn)的呢?舉個(gè)例子給你看:
public class Test
{
final void func(){System.out.println("g");};
public void main(String[] args)
{
for(int j=0;j<1000;j++)
func();
}
}
經(jīng)過編譯器優(yōu)化之后,這個(gè)類變成了相當(dāng)于這樣寫:
public class Test
{
final void func(){System.out.println("g");};
public void main(String[] args)
{
for(int j=0;j<1000;j++)
{System.out.println("g");};
}
看出來區(qū)別了吧?編譯器直接將func的函數(shù)體內(nèi)嵌到了調(diào)用函數(shù)的地方,這樣的結(jié)果是節(jié)省了1000次函數(shù)調(diào)用,了解final函數(shù)的作用了吧。當(dāng)然編譯器處理成字節(jié)碼,我那樣寫是為了讓你看明白。
不過,當(dāng)函數(shù)體太長(zhǎng)的話,用final可能適得其反,因?yàn)榻?jīng)過編譯器內(nèi)嵌之后代碼長(zhǎng)度大大增加,于是就增加了jvm解釋字節(jié)碼的時(shí)間。

另外,除了樓主你這句話所描述的作用之外,final函數(shù)還有另一個(gè)作用,就是將這個(gè)成員函數(shù)聲明為不可覆蓋,具體就像 尐瑞 所說。
final 方法
將方法聲明為final,那就說明你已經(jīng)知道這個(gè)方法提供的功能已經(jīng)滿足你要求,不需要進(jìn)行擴(kuò)展,并且也不允許任何從此類繼承的類來覆寫這個(gè)方法,但是繼承仍然可以繼承這個(gè)方法,也就是說可以直接使用。另外有一種被稱為inline的機(jī)制,它會(huì)使你在調(diào)用final方法時(shí),直接將方法主體插入到調(diào)用處,而不是進(jìn)行例行的方法調(diào)用,例如保存斷點(diǎn),壓棧等,這樣可能會(huì)使你的程序效率有所提高,然而當(dāng)你的方法主體非常龐大時(shí),或你在多處調(diào)用此方法,那么你的調(diào)用主體代碼便會(huì)迅速膨脹,可能反而會(huì)影響效率,所以你要慎用final進(jìn)行方法定義。

final類
當(dāng)你將final用于類身上時(shí),你就需要仔細(xì)考慮,因?yàn)橐粋€(gè)final類是無法被任何人繼承的,那也就意味著此類在一個(gè)繼承樹中是一個(gè)葉子類,并且此類的設(shè)計(jì)已被認(rèn)為很完美而不需要進(jìn)行修改或擴(kuò)展。對(duì)于final類中的成員,你可以定義其為final,也可以不是final。而對(duì)于方法,由于所屬類為final的關(guān)系,自然也就成了final型的。你也可以明確的給final類中的方法加上一個(gè)final,但這顯然沒有意義。
 
final可以修飾類,函數(shù),變量
修飾類時(shí):意思是修飾類為最終類,任何類不能再繼承它.
修改函數(shù)時(shí):意思是該方法在類里是最終方法,繼承它的方法不能去重寫它.
修飾變量時(shí):意思是被修飾的變量是常量或者叫終態(tài)變量,一旦初始化后就不能再改變變量的值.
 
1.final表明你的函數(shù)寫得很牛氣,不需要任何人重寫它.呵呵.
2.用final可以提高效率吧.究竟能提高多少,或者能提高,要看編譯器了.
3.順便說一句,String類的所有方法都是final的.因?yàn)镾tring類是JAVA中采用最多的類,設(shè)計(jì)者不希望有人去繼承它,覆蓋它的方法,把這個(gè)類搞得亂七糟八的吧.
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入理解 Java 中的 final 關(guān)鍵字
java為什么匿名內(nèi)部類的參數(shù)引用時(shí)final(轉(zhuǎn))
java final 詳解
Java并發(fā)專題【6】你真的了解final嗎?
[轉(zhuǎn)]構(gòu)造函數(shù)為什么不能被abstract/static/final/native/stricftp/synchronized修飾 及 一些關(guān)鍵字的用法
Java關(guān)鍵字static、final使用小結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服