国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

java中的關(guān)鍵字final用法剖析

2018-01-15 21:23劉志雄
世紀(jì)之星·交流版 2017年8期
關(guān)鍵詞:變量方法

劉志雄

[摘 要]final關(guān)鍵字在java中的應(yīng)用至關(guān)重要。使用final關(guān)鍵字可以使JVM優(yōu)化變量、方法和類,在多線程環(huán)境下,可以進(jìn)行安全的共享,減少了同步開銷。本文結(jié)合簡單實(shí)例對final關(guān)鍵字在變量、方法與類中定義的用法進(jìn)行了深入的剖析。

[關(guān)鍵詞]final;java;變量;方法;類

從英語單詞方面來看final的含義,有“最終的”“不可更改的”“決定性的”等意思。在java中,其也保留了此含義。final關(guān)鍵字可用于修飾類、變量和方法,它有“這是無法改變的”或者“最終”或者“終結(jié)”的含義,因此被final修飾的類、變量和方法具有以下特性:

1.final修飾的類不能被繼承。我們可以把這樣的類叫做“最終類”。

2.final修飾的方法不能被子類重寫。我們把它叫做“最終方法”。

3.final修飾的變量是常量,只能賦值一次。

接下來,我們分別從以上三個方面一一用簡單實(shí)例來講解final關(guān)鍵字的用法。

一、final在變量定義中的用法

用例如下:

class animal {

final String name;

public void f(){

System.out.print(“這只動物名字叫:”+name);

}

public static void main(String[] args){

animal aa=new animal( );

aa.f();

}}

對代碼進(jìn)行編譯時(shí),出現(xiàn)如下錯誤提示:

這是因?yàn)槭褂胒inal關(guān)鍵字修飾成員變量時(shí),虛擬機(jī)不會對其進(jìn)行初始化。因此使用final修飾成員變量時(shí),需要在定義變量的同時(shí)賦予一個初始值,下面將第2行代碼修改為:

final String name = "貓"; 為final關(guān)鍵字修飾的name屬性賦值。但是,如果我們在第4行代碼前加上語句:name=”狗”;這時(shí)編譯結(jié)果為:

從以上情況說明final修飾變量時(shí),必須對變量進(jìn)行初化,一旦初化,該變量的值不能被改變,即常量。

二、final在方法定義中的用法

用例如下:

class animal {

final String name="貓";

final public void f(){

System.out.print(name);}

class dog extends animal{

void f(){

System.out.print("狗叫汪汪汪");

} }

public static void main(String[] args) {

dog as=new dog();

as.f();} }

對代碼進(jìn)行編譯時(shí),出現(xiàn)如下錯誤提示:

這是因?yàn)閒()方法被final修飾了,dog子類不能重寫父類里的f()方法。可見,final修飾的方法是該類里的“終結(jié)”方法,不能被重寫,但是可以繼承使用,即子類可以調(diào)用父類里final修飾的方法。

三、final在類定義中的用法

用例如下:

final class animal {

final String name="貓";

final public void f(){

System.out.print(name);}

class dog extends animal{

}

public static void main(String[] args) {

dog as=new dog();

as.f();} }

對代碼進(jìn)行編譯,錯誤提示為:

這是因?yàn)閍nimal類用final修飾了,一個類一旦用final修飾,那么這個類就不用有子類了,即final修飾的類為“最終類”。

四、結(jié)語

由以上敘述可知:final修飾的變量表示常量,定義里就得初始化,且只能被賦值一次,賦值后值不再改變;final修飾的方法不能被子類來重寫,但是可以被子類繼承,即子類可以直接調(diào)用父類里final修飾的方法;final修飾的類不能被繼承,即該類不可能有子類。

參考文獻(xiàn):

[1] http://www.importnew.com/7553.html.

[2] 高永強(qiáng),Java編程藝術(shù)[M].北京:清華大學(xué)出版社,2009.

[3] 王善發(fā),吳道榮,Java編程中static和final關(guān)鍵字的陷阱,保山學(xué)院學(xué)報(bào),2012,31(5):19-22.

[4] 安博教育集團(tuán),Java核心技術(shù)[M].北京:電子工業(yè)出版社,2012.

基金項(xiàng)目:湖南省教育科學(xué)“十三五”規(guī)劃2017年度課題:XJK17BGD083 。endprint

猜你喜歡
變量方法
抓住不變量解題
也談分離變量
可能是方法不對
用對方法才能瘦
SL(3,3n)和SU(3,3n)的第一Cartan不變量
四大方法 教你不再“坐以待病”!
捕魚
分離變量法:常見的通性通法