3 回答
TA贡献2036条经验 获得超8个赞
赋值
初始化null
0
false
声明
TA贡献1829条经验 获得超6个赞
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贡献1875条经验 获得超5个赞
声明不是将“值”声明为变量,而是声明类型变量。
赋值只是将一个值存储到一个变量。
初始化是将值赋值给变量。在申报时.
这些定义也适用于字段。
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上下文对象初始化等。
添加回答
举报