Java: определите инициализацию условий, объявление и присвоение

Я нахожу defs проспект, предметы определяются их глаголами, но глаголы не определены! Таким образом, как Вы определяете их?

Круговые определения

инициализация: инициализировать переменную. Это может быть сделано во время объявления.

присвоение: присваивать значение переменной. Это может быть сделано где угодно, только однажды с заключительным идентификатором.

объявление: объявить значение к переменной.

[обновление, пытаясь понять тему с лямбдой calc]

D(x type) = (λx.x is declared with type) 
A(y D(x type)) = (λy.y is assigned to D(x type))

%Then after some beta reductions we get initialization.
D(x type) me human                  // "me" declared with type "human"
A(y (D(x type) me human)) asking    // "asking" assigned to the last declaration

%if the last two statemets are valid, an initialization exists. Right?
36
задан 4 revs, 2 users 97% 20 July 2016 в 14:34
поделиться

4 ответа

присвоение: отбрасывание старого значения переменной и замена его новым

инициализация: это особый вид присвоения: первый. До инициализации объекты имеют значение null, а примитивные типы имеют значения по умолчанию, такие как 0 или false. Может выполняться в сочетании с декларацией.

declaration: объявление определяет тип переменной, а также ее имя. Переменная может быть объявлена только один раз. Она используется компилятором, чтобы помочь программистам избежать ошибок, таких как присвоение строковых значений целочисленным переменным. Прежде чем читать или присваивать переменную, она должна быть объявлена.

67
ответ дан 27 November 2019 в 05:09
поделиться

Объявление не объявляет "значение" к переменной; он должен объявить тип переменной.

Присваивание - это просто сохранение значения переменной.

Инициализация - это присвоение значения переменной во время объявления .

Эти определения также применимы к полям.

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-контекста, инициализация объекта контекста ООП и т. Д.

9
ответ дан 27 November 2019 в 05:09
поделиться

объявление : всякий раз, когда вы определяете новую переменную с ее типом

присвоение : всякий раз, когда вы изменяете значение переменной, давая ей новое значение

инициализация : присваивание, которое выполняется вместе с объявлением или, в любом случае, первым присваиванием переменной, обычно это вызов конструктора для объекта или простое присваивание переменной

3
ответ дан 27 November 2019 в 05:09
поделиться
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
62
ответ дан 27 November 2019 в 05:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: