最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java類中字段可以不賦予初始值的原因分析

 更新時間:2021年09月01日 11:29:58   作者:愛唱歌的瓜皮  
這篇文章主要介紹了Java類中字段可以不賦予初始值的原因分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Java類中字段可以不賦予初始值的原因

Java虛擬機會對類的實例對象進行分配內(nèi)存,在分配內(nèi)存后,會將內(nèi)存空間(除了對象頭)全部初始化為零值。這就保證了,在類的定義過程中,不給字段賦初始值,實例對象也能有初始值。

下面是在Java類中各字段的初始值

字段 默認初始值
對象 null
數(shù)值(byte,short,int,long,float,double) 0或0.0
boolean false
char \u0000(輸出出來是空值)
class Solution {
    private static char c;
    private static int i;
    private static long l;
    private static float f;
    private static double d;
    private static String s;
    private static boolean bl;
    private static byte b;
    public static void main(String[] args) {
        System.out.println(c == '\u0000');
        System.out.print(c);
        System.out.println(i);
        System.out.println(l);
        System.out.println(f);
        System.out.println(d);
        System.out.println(s);
        System.out.println(bl);
        System.out.println(b);
    }
}
 
/*輸出結(jié)果
true
0
0
0
0
0.0
0.0
null
false
*/

Java中類屬性的初始化

我們知道一個類(class)要被使用必須經(jīng)過裝載,連接初始化這樣的過程。下面先對這三階段做一個簡單的描述,之后會結(jié)合一個簡單的例子來說明java中類的初始化過程。

在裝載階段,類裝載器(Bootstrap ClassLoader 或者用戶自定義的ClassLoader) 把編譯形成的class文件載入內(nèi)存,創(chuàng)建類相關(guān)的Class對象,這個Class對象封裝了我們要使用的類的類型信息。

連接階段又可以分為三個子步驟:驗證、準備和解析

驗證就是要確保java類型數(shù)據(jù)格式 的正確性,并適于JVM使用。

準備階段,JVM為靜態(tài)變量分配內(nèi)存空間,并設(shè)置默認值,注意,這里是設(shè)置默認值,比如說int型的變量會被賦予默認值0 。在這個階段,JVM可能還會為一些數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存,目的 是提高運行程序的性能,比如說方法表。

解析過程就是在類型的常量池中尋找類、接口、字段和方法的符號引用,把這些符號引用替換成直接引用。這個階段可以被推遲到初始化之后,當程序運行的過程中真正使用某個符號引用的時候 再去解析它。

類會在首次被“主動使用”時執(zhí)行初始化,為類(靜態(tài))變量賦予正確的初始值。在Java代碼中,一個正確的初始值是通過類變量初始化語句或者靜態(tài)初始化塊給出的。

而我們這里所說的主動使用 包括

1. 創(chuàng)建類的實例

2. 調(diào)用類的靜態(tài)方法

3. 使用類的非常量靜態(tài)字段

4. 調(diào)用Java API中的某些反射方法

5. 初始化某個類的子類

6. 含有main()方法的類啟動時

初始化一個類包括兩個步驟

1、 如果類存在直接父類的話,且直接父類還沒有被初始化,則先初始化其直接父類

2、 如果類存在一個初始化方法,就執(zhí)行此方法

注:初始化接口并不需要初始化它的父接口。

Java中final變量為什么在使用前必須要進行初始化

final修飾的變量表示賦值之后不能再進行更改,系統(tǒng)賦默認值也算賦值,因此系統(tǒng)也不會賦默認值。

如果不在定義的時候或者構(gòu)造函數(shù)中對final變量進行賦值的話,則生成的對象中final變量的值是未知的(編譯器也會直接報錯),因此必須進行初始化。

如果用static final同時修飾變量的話,則變量必須在定義的時候進行初始化。因為static變量屬于類,在調(diào)用構(gòu)造函數(shù)之前就已經(jīng)被系統(tǒng)賦予默認值了。

如果不在定義的時候初始化,那么既無法在構(gòu)造函數(shù)中初始化,系統(tǒng)也不會賦默認值。則該變量被定義出來是毫無意義的

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中的動態(tài)代理與責任鏈模式詳解

    java中的動態(tài)代理與責任鏈模式詳解

    這篇文章主要介紹了java中的動態(tài)代理與責任鏈模式詳解,動態(tài)代理提供了一種靈活且非侵入式的方式,可以對對象的行為進行定制和擴展,它在代碼重用、解耦和業(yè)務(wù)邏輯分離、性能優(yōu)化以及系統(tǒng)架構(gòu)中起到了重要的作用,需要的朋友可以參考下
    2023-08-08
  • Java零基礎(chǔ)也看得懂的單例模式與final及抽象類和接口詳解

    Java零基礎(chǔ)也看得懂的單例模式與final及抽象類和接口詳解

    本文主要講了單例模式中的餓漢式和懶漢式的區(qū)別,final的使用,抽象類的介紹以及接口的具體內(nèi)容,感興趣的朋友來看看吧
    2022-05-05
  • JAVA 16位ID生成工具類含16位不重復(fù)的隨機數(shù)數(shù)字+大小寫

    JAVA 16位ID生成工具類含16位不重復(fù)的隨機數(shù)數(shù)字+大小寫

    這篇文章主要介紹了JAVA 16位ID生成工具類含16位不重復(fù)的隨機數(shù)數(shù)字+大小寫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Java FTPClient實現(xiàn)文件上傳下載

    Java FTPClient實現(xiàn)文件上傳下載

    這篇文章主要為大家詳細介紹了Java FTPClient實現(xiàn)文件上傳下載的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • Springboot允許logger.debug輸出日志方式

    Springboot允許logger.debug輸出日志方式

    這篇文章主要介紹了Springboot允許logger.debug輸出日志方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等

    這篇文章主要介紹了Java8?CompletableFuture?runAsync學(xué)習(xí)總結(jié)submit()?execute()等,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java實現(xiàn)文件變化監(jiān)聽代碼實例

    Java實現(xiàn)文件變化監(jiān)聽代碼實例

    這篇文章主要介紹了Java實現(xiàn)文件變化監(jiān)聽代碼實例,通過定時任務(wù),輪訓(xùn)查詢文件的最后修改時間,與上一次進行對比,如果發(fā)生變化,則說明文件已經(jīng)修改,進行重新加載或?qū)?yīng)的業(yè)務(wù)邏輯處理,需要的朋友可以參考下
    2024-01-01
  • 圖書管理系統(tǒng)java版

    圖書管理系統(tǒng)java版

    這篇文章主要為大家詳細介紹了java版的圖書管理系統(tǒng),通過實例為大家快速掌握數(shù)據(jù)庫編程技術(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java實現(xiàn)PDF轉(zhuǎn)為線性PDF詳解

    Java實現(xiàn)PDF轉(zhuǎn)為線性PDF詳解

    線性化PDF文件是PDF文件的一種特殊格式,可以通過Internet更快地進行查看。本文將通過后端Java程序?qū)崿F(xiàn)將PDF文件轉(zhuǎn)為線性化PDF。感興趣的可以了解一下
    2021-12-12
  • Java拷貝文件夾和刪除文件夾代碼實例

    Java拷貝文件夾和刪除文件夾代碼實例

    這篇文章主要介紹了Java拷貝文件夾和刪除文件夾代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

竹溪县| 女性| 江津市| 天镇县| 从江县| 安平县| 乐亭县| 称多县| 延边| 遵化市| 正宁县| 荃湾区| 资源县| 德阳市| 兴业县| 雷波县| 大方县| 龙海市| 安西县| 望谟县| 林口县| 仲巴县| 潼南县| 定襄县| 宝丰县| 景泰县| 田阳县| 比如县| 封丘县| 乡宁县| 黑龙江省| 孙吴县| 鹤壁市| 怀化市| 营口市| 山东省| 漯河市| 成武县| 潞城市| 黄骅市| 廉江市|