java 字段初始化,java 初始化字段(翻譯自Java Tutorials)

本文介绍了Java中类变量和实例变量的初始化方式,包括静态初始化块、实例初始化块、构造方法以及final方法的使用。强调了静态初始化块用于复杂初始化逻辑,而实例变量可在构造方法中初始化。同时,提到了初始化代码的顺序和可复用性。
摘要由CSDN通过智能技术生成

原文出自  http://www.cnblogs.com/ggjucheng/archive/2012/11/30/2796666.html

正如你看到的,我們經常在字段的聲明中提供一個初始化值:

public classBedAndBreakfast {//initialize to 10

public static int capacity = 10;//initialize to false

private boolean full = false;

}

當初始化的值是可用的,初始化語句也放在一行,上面的代碼就可以工作。但是這種形式的初始化由於比較簡單,所以有一些限制。如果初始化需要一些邏輯處理(例如,錯誤處理或者是通過循環填充一個復雜的數組),簡單的賦值是不足的。實例變量可以在構造方法初始化,並做錯誤處理和邏輯處理。為了給類變量提供一樣的功能,java程序語言包含了靜態初始塊。

注意:盡管在類聲明的開始時,聲明字段是最常用的實踐,但是它非必須。只有它在使用前必須聲明和初始化才是必須的。

靜態初始塊

一個靜態初始化代碼塊,就像平常的代碼塊,使用大括號{}閉合,前面有一個static關鍵字,這里是例子:

static{//whatever code is needed for initialization goes here

}

一個類可以有任意數量的靜態初始塊,並可以出現在類體的任意位置。運行系統保證靜態初始塊的調用順序和在源代碼的出現順序是一致的。

這里是一個替代代碼塊的方法—可以寫一個私有的static方法:

classWhatever {public static varType myVar =initializeClassVariable();private staticvarType initializeClassVariable() {//initialization code goes here

}

}

私有static方法的優點是,它可以在你需要重新初始化變量時被重用。

實例化實例成員

一般來說,你會把變量的初始化代碼放在構造方法里。這里有兩個可選的使用構造方法初始化實例變量的方法:初始化代碼塊和final方法。

實例變量的初始化代碼塊和static初始化代碼塊差不多,但是沒有static關鍵字:

{//whatever code is needed for initialization goes here

}

java編譯器會把初始化代碼塊拷貝到每個構造方法。所以,這種方式可以用來在多個構造方法中共享代碼塊。

一個final方法不能被子類覆蓋。這個會在接口和繼承的章節討論。這里有一個例子,使用final方法初始化實例變量:

classWhatever {private varType myVar =initializeInstanceVariable();protected finalvarType initializeInstanceVariable() {//initialization code goes here

}

}

如果子類要重用初始化代碼,這是特別有用的。初始化代碼設置為final,這個是因為在實例初始化時,調用非final方法會造成問題。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值