Декларация не является объявлять «значение» переменной; это объявление типа переменной.
Назначение - это просто сохранение значения переменной.
Инициализация - это присвоение значения переменной на момент объявления.
Эти определения также применимы к полям.
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-контекст класса и инициализация экземпляра, инициализация объекта контекста ООП и т. д.
[Объявление] (https://docs.oracle.com/javase/tutorial/java/javaOO/variables.html), [Инициализация] (https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html) и [Assignment] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html), все они включены в учебный курс Java. : [Изучение языка Java] (https://docs.oracle.com/javase/tutorial/java/TOC.html). – jaco0646