91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java類中字段為什么可以不賦予初始值

發布時間:2021-09-01 13:34:00 來源:億速云 閱讀:182 作者:小新 欄目:開發技術

這篇文章主要介紹Java類中字段為什么可以不賦予初始值,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

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

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

字段默認初始值
對象null
數值(byte,short,int,long,float,double)0或0.0
booleanfalse
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);
    }
}
 
/*輸出結果
true
0
0
0
0
0.0
0.0
null
false
*/

Java中類屬性的初始化

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

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

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

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

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

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

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

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

1. 創建類的實例

2. 調用類的靜態方法

3. 使用類的非常量靜態字段

4. 調用Java API中的某些反射方法

5. 初始化某個類的子類

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

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

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

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

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

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

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

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

如果用static final同時修飾變量的話,則變量必須在定義的時候進行初始化。因為static變量屬于類,在調用構造函數之前就已經被系統賦予默認值了。

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

以上是“Java類中字段為什么可以不賦予初始值”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连云港市| 岫岩| 开化县| 阜平县| 博爱县| 四会市| 太仓市| 普安县| 南充市| 黑龙江省| 汪清县| 通山县| 富宁县| 禹城市| 嵊泗县| 汶上县| 阳谷县| 武义县| 兴安盟| 山阴县| 探索| 高台县| 东宁县| 商南县| 荣成市| 辽阳市| 潮州市| 阿克陶县| 筠连县| 荥经县| 千阳县| 泽库县| 固阳县| 石楼县| 友谊县| 鄂伦春自治旗| 水富县| 剑川县| 布尔津县| 大足县| 潍坊市|