3 回答

TA貢獻1906條經驗 獲得超3個贊
賦值
初始化null
0
false
聲明

TA貢獻1946條經驗 獲得超4個贊
String declaration;String initialization = "initialization";declaration = "initialization"; //late initialization - will initialize the variable. // Without this, for example, in java, you will get a compile-time error if you try // to use this variable.declaration = "assignment"; // Normal assignment. // Can be done any number of times for a non-final variable

TA貢獻1966條經驗 獲得超4個贊
聲明不是將“值”聲明為變量,而是聲明類型變量。
賦值只是將一個值存儲到一個變量。
初始化是將值賦值給變量。在申報時.
這些定義也適用于字段。
int i; // simple declaration
i = 42 // simple assignment
int[] arr = { 1, 2, 3 };
// declaration with initialization, allows special shorthand syntax for arrays
arr = { 4, 5, 6 }; // doesn't compile, special initializer syntax invalid here
arr = new int[] { 4, 5, 6 }; // simple assignment, compiles fine
但是,應該指出,“初始化”對于“變量的第一次賦值”也有一個更為寬松的定義,無論它發生在何處。
int i; // local variable declaration
if (something) i = 42;
System.out.println(i);
// compile time error: The local variable i may not have been initialized
然而,這匯編了:
int i; // the following also compiles if i were declared final
if (something) i = 42;
else i = 666;
System.out.println(i);
這里i可以通過簡單的賦值從兩個可能的位置“初始化”。因為這個,如果i是一個數組,您不能對此構造使用特殊的數組初始化器簡寫語法。
因此,基本上“初始化”有兩個可能的定義,取決于上下文:
在最狹窄的形式下,這是一個任務與聲明相結合的時候。
它允許,除其他外,特殊的數組速記初始化器語法。
更普遍的情況是,當第一次給變量賦值時。
它允許,除其他外,分配給final變量在多個地方。
編譯器將盡最大努力確保這些分配中的一項能夠發生,從而“初始化”final變量
還有JVM上下文類和實例初始化,OOP上下文對象初始化等。
添加回答
舉報