日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java中为final变量赋值的几种方式

發(fā)布時間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中为final变量赋值的几种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

java中為final變量賦值的幾種方式

前言

使用final修飾變量,很多人第一時間想到的就是不可變。然后以為變量必須得在聲明的時候就為其賦初始值,其實不然,本文將詳細講解java中使用final修改的變量的賦值問題。

被final修飾的變量的幾種賦值方式

1、被final修飾的變量有三種賦值方式。
2、被final static修飾的變量有兩種賦值方式。

儲備知識:在類的加載中,類的加載順序我們應(yīng)該都知道,靜態(tài)代碼塊->構(gòu)造代碼塊->構(gòu)造方法

精華:

當類被加載進內(nèi)存的時候,這個屬性只是聲明了一個變量,并沒有給分配內(nèi)存空間,只有當類在被實例化的時候才分配了內(nèi)存空間,而這個時候又同時執(zhí)行了構(gòu)造方法, 所以屬性被初始化了,也就符合了當它被分配內(nèi)存空間的時候就需要實例化,以后不在改變的條件。

被final修飾的變量

1、在定義時直接賦值

public class Test {public final String str = "mark"; }

2、聲明時不賦值,在構(gòu)造方法中進行賦值

public class Test {public final String str;public Test() {this.str = "mark";} }

3、聲明時不賦值,在構(gòu)造代碼塊中進行賦值

public class Test {public final String str;{this.str = "mark";} }

當你發(fā)現(xiàn)一個類的變量被final修飾但沒被賦值,那么可以判斷出它肯定會在構(gòu)造函數(shù)里被賦值。(因為倘若是set方法賦值,線程是不安全的,因為set方法可以被調(diào)用多次,而final變量只能被賦值一次)

被final static修飾的變量

1、在定義時直接賦值

public class Test {public static final String str = "mark";}

2、在靜態(tài)代碼塊里面進行賦值

public class Test {public static final String str;static {str = "mark";} }

final變量會經(jīng)過jvm進行優(yōu)化,所以平時使用過程中建議使用final來修飾變量。

總結(jié)

以上是生活随笔為你收集整理的java中为final变量赋值的几种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。