當前位置:首頁 » 編程語言 » finaljava變數

finaljava變數

發布時間: 2022-11-02 08:07:44

java 中的 final 關鍵字有哪些用法

(1)修飾變數

用final關鍵字修飾的變數,只能進行一次賦值操作,並且在生存期內不可以改變它的值。final 修飾的變數可以先聲明,後賦值。
final修飾基本類型時,起到常量的作用,基本類型的值不可變。
final修飾引用類型時,不能再指向其他的對象,但被引用的對象的值是可以改變的(引用變數的值
實際上是它所引用的對象的地址)。
當用final作用於類的成員變數時,成員變數(局部變數只需要保證在使用之前被初始化賦值即可)必須在定義時或者構造器中進行初始化賦值。

(2)修飾方法參數

編寫方法時,可以在參數前面添加final關鍵字,它表示在整個方法中,不會(實際上是不能)改變參數的值,具體類似於修飾數據。
即不能改變參數的值,但是可以改變引用類型參數的對象的值。同時,即使沒有final的修飾,參數的改變也不會影響到方法外的變數。

(3)修飾方法

final關鍵字修飾方法,它表示該方法不能被覆蓋(重寫)。另外,類中所有的private方法都隱式地指定為是final的,由於無法在類外使用private方法,所以也就無法覆蓋它。此時可以在子類中定義相同的方法名和參數,這種情況不再產生重寫與final的矛盾,而是在子類中重新定義了新的方法。可以對private方法添加final修飾符,但並沒有添加任何額外意義。
(4) 修飾類
用final修飾的類是無法被繼承的。且final類中的所有成員方法都會被隱式地指定為final方法。

② java中final修飾的變數不是不能被修改嗎

基本數據類型是不可以被修改了,
包括String. 但是也有例外.如Map,List等,即使你用final修飾了,
依然可以put和add 說到底,還是引用問題.final意味著引用不可變罷了

③ java中,final類型的變數與普通變數有什麼區別

final變數表示最終的變數。

言外之意就是這個變數為常量,所以定義為final的變數要大寫,還必須初始化值。


注意點:

(1)final變數初始化值可以直接賦值或者通過構造函數進行初始化

(2)final變數為基本數據類型,則值不能改變;

final變數為引用數據類型,則地址值不能改變,地址中的內容可以改變

④ java中的final定義變數問題

首先final是不能被修改的 、但是你在創建final類型的欄位時沒有初始化 所以是可以進行初始化工作的
其次 你定義的final是類屬性 類在創建後為類的實例即對象 那麼對象就有這個final的欄位
最後 列印出來的5個值 並不是同一個final欄位的值 是每個對象里的final的值 是不沖突的
不知道你明白了嗎

⑤ java 的final型類、變數、方法有什麼特點

變數定義為final,一旦被初始化便不可改變,這里不可改變的意思對基本類型來說是其值不可變,而對於對象變數來說其引用不可再變。
方法定義為final,是為了防止任何繼承類改變它。
類定義為final,則該類無法給任何類繼承。

⑥ Java final變數和普通變數的區別

final:表示最終的,final修飾的變數,表示一個常量,不能被修改
普通變數 :普通變數的值可以修改

⑦ java中final,finally和finalize的區別

1. final
在java中,final可以用來修飾類,方法和變數(成員變數或局部變數)。下面將對其詳細介紹。
1.1 修飾類
當用final修飾類的時,表明該類不能被其他類所繼承。當我們需要讓一個類永遠不被繼承,此時就可以用final修飾,但要注意:
final類中所有的成員方法都會隱式的定義為final方法。
1.2 修飾方法
使用final方法的原因主要有兩個:
(1) 把方法鎖定,以防止繼承類對其進行更改。
(2) 效率,在早期的java版本中,會將final方法轉為內嵌調用。但若方法過於龐大,可能在性能上不會有多大提升。因此在最近版本中,不需要final方法進行這些優化了。
final方法意味著「最後的、最終的」含義,即此方法不能被重寫。
注意:若父類中final方法的訪問許可權為private,將導致子類中不能直接繼承該方法,因此,此時可以在子類中定義相同方法名的函數,此時不會與重寫final的矛盾,而是在子類中重新地定義了新方法。

1.3 修飾變數
final成員變數表示常量,只能被賦值一次,賦值後其值不再改變。類似於C++中的const。
當final修飾一個基本數據類型時,表示該基本數據類型的值一旦在初始化後便不能發生變化;如果final修飾一個引用類型時,則在對其初始化之後便不能再讓其指向其他對象了,但該引用所指向的對象的內容是可以發生變化的。本質上是一回事,因為引用的值是一個地址,final要求值,即地址的值不發生變化。
final修飾一個成員變數(屬性),必須要顯示初始化。這里有兩種初始化方式,一種是在變數聲明的時候初始化;第二種方法是在聲明變數的時候不賦初值,但是要在這個變數所在的類的所有的構造函數中對這個變數賦初值。
當函數的參數類型聲明為final時,說明該參數是只讀型的。即你可以讀取使用該參數,但是無法改變該參數的值。
2. finally
finally作為異常處理的一部分,它只能用在try/catch語句中,並且附帶一個語句塊,表示這段語句最終一定會被執行(不管有沒有拋出異常),經常被用在需要釋放資源的情況下。(×)(這句話其實存在一定的問題)
很多人都認為finally語句塊一定會執行,但真的是這樣么?答案是否定的,例如下面這個例子:
只有與finally對應的try語句塊得到執行的情況下,finally語句塊才會執行。以上兩種情況在執行try語句塊之前已經返回或拋出異常,所以try對應的finally語句並沒有執行。
3. finalize
finalize()是在java.lang.Object里定義的,也就是說每一個對象都有這么個方法。這個方法在gc啟動,該對象被回收的時候被調用。其實gc可以回收大部分的對象(凡是new出來的對象,gc都能搞定,一般情況下我們又不會用new以外的方式去創建對象),所以一般是不需要程序員去實現finalize的。
特殊情況下,需要程序員實現finalize,當對象被回收的時候釋放一些資源,比如:一個socket鏈接,在對象初始化時創建,整個生命周期內有效,那麼就需要實現finalize,關閉這個鏈接。
使用finalize還需要注意一個事,調用super.finalize();
一個對象的finalize()方法只會被調用一次,而且finalize()被調用不意味著gc會立即回收該對象,所以有可能調用finalize()後,該對象又不需要被回收了,然後到了真正要被回收的時候,因為前面調用過一次,所以不會調用finalize(),產生問題。 所以,推薦不要使用finalize()方法,它跟析構函數不一樣。

⑧ Java final 變數為什麼可以改變值

你那個代碼,counter是static,也就是說,是類范圍的,所有Apple
類共享此變數,是可變的。
這個id的final修飾符表示是個對象實例級常量,每個對象實例有自己單獨的值,對象實例創建完成後,常量值不能改變。
每次創建Apple對象實例時,都會為該實例初始化id值,你採用了counter++,所以每次counter值都會加1,其值依次為0(初始值)、1、2、3,其值在加1前,賦給id作為其初始值,依次為0、1、2。所以列印出來就是0、1、2了。
常量在初始化的時候,可以使用任何合法表達式來進行,甚至若定義時沒有指定值,也可以在構造方法里為其賦值(只能賦值一次)。

熱點內容
如何將資料庫加密碼 發布:2025-01-10 02:14:46 瀏覽:950
阿里雲怎麼買游戲伺服器 發布:2025-01-10 02:01:51 瀏覽:845
dota和英雄聯盟哪個吃配置 發布:2025-01-10 02:00:33 瀏覽:179
華為雲伺服器怎麼登錄 發布:2025-01-10 01:59:48 瀏覽:125
東南大學知網伺服器地址 發布:2025-01-10 01:54:40 瀏覽:931
安卓手機剪映怎麼修改成4k幀率 發布:2025-01-10 01:08:21 瀏覽:951
微信哪個版本不要求配置 發布:2025-01-10 01:07:31 瀏覽:405
三星插卡激活要密碼是什麼意思 發布:2025-01-10 00:57:04 瀏覽:675
web伺服器搭建黑馬 發布:2025-01-10 00:56:05 瀏覽:825
戴爾伺服器可以當電腦 發布:2025-01-10 00:56:05 瀏覽:857