Я нахожу 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?
присвоение: отбрасывание старого значения переменной и замена его новым
инициализация: это особый вид присвоения: первый. До инициализации объекты имеют значение null
, а примитивные типы имеют значения по умолчанию, такие как 0
или false
. Может выполняться в сочетании с декларацией.
declaration: объявление определяет тип переменной, а также ее имя. Переменная может быть объявлена только один раз. Она используется компилятором, чтобы помочь программистам избежать ошибок, таких как присвоение строковых значений целочисленным переменным. Прежде чем читать или присваивать переменную, она должна быть объявлена.
Объявление не объявляет "значение" к переменной; он должен объявить тип переменной.
Присваивание - это просто сохранение значения переменной.
Инициализация - это присвоение значения переменной во время объявления .
Эти определения также применимы к полям.
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-контекста, инициализация объекта контекста ООП и т. Д.
объявление : всякий раз, когда вы определяете новую переменную с ее типом
присвоение : всякий раз, когда вы изменяете значение переменной, давая ей новое значение
инициализация : присваивание, которое выполняется вместе с объявлением или, в любом случае, первым присваиванием переменной, обычно это вызов конструктора для объекта или простое присваивание переменной
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