宣告變數為靜態(static)和最終(final)時,需要遵循哪些規則?
靜態變數 − 靜態變數也稱為類變數。可以使用關鍵字`static`宣告變數。一旦將變數宣告為靜態,無論建立多少個物件,類中都只有一個副本。
public static int num = 39;
final − 一旦將變數宣告為`final`,就不能重新賦值。當將類的變數宣告為`static`和`final`時,就將其設定為常量。
需要遵循的規則
- 必須初始化 − 在Java中,不必在類中初始化例項變數。如果在編譯時不初始化它們,Java編譯器會在預設建構函式中初始化它們。
但是,如果將例項變數宣告為`static`和`final`,Java編譯器不會在預設建構函式中初始化它,因此必須初始化`static`和`final`變數。如果不初始化,則會生成編譯時錯誤。
示例
class Data{
static final int num;
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of the constant: "+Data.num);
}
}編譯時錯誤
ConstantsExample.java:2: error: variable num not initialized in the default constructor
static final int num;
^
1 error- 只能在靜態塊中初始化 − 當一個變數被宣告為`static`和`final`時,只能在靜態塊中初始化它。如果嘗試在其他地方初始化它,編譯器會認為您試圖重新賦值,並生成編譯時錯誤。
class Data{
static final int num;
Data(int i){
num = i;
}
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of the constant: "+Data.num);
}
}編譯時錯誤
ConstantsExample.java:4: error: cannot assign a value to final variable num
num = i;
^
1 error要使此程式正常工作,需要在靜態塊中初始化`final static`變數,如下所示:
class Data{
static final int num;
static{
num = 1000;
}
}
public class ConstantsExample {
public static void main(String args[]) {
System.out.println("value of the constant: "+Data.num);
}
}輸出
value of the constant: 1000
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP