Java: определение терминов инициализация, декларация и присвоение
Я нахожу defs round, субъекты определяются их глаголами, но глаголы undefined! Итак, как вы их определяете?
Круговые определения
инициализация:, чтобы инициализировать переменную. Это можно сделать во время
декларация.
присваивание:, чтобы присвоить значение переменной. Это можно сделать где угодно, только один раз с окончательным идентификатором.
: объявить значение переменной.
[обновление, попытка понять тему с помощью lambda 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?
Ответы
Ответ 1
присваивание: отбрасывание старого значения переменной и замена его новым
инициализация: это особый вид назначения: первый. До объектов инициализации значение null
и примитивные типы имеют значения по умолчанию, такие как 0
или false
. Может быть сделано в сочетании с декларацией.
Объявление: в заявлении указывается тип переменной вместе с ее именем. Переменная может быть объявлена только один раз. Он используется компилятором, чтобы помочь программистам избежать ошибок, таких как присвоение строковых значений целым переменным. Прежде чем читать или назначать переменную, эта переменная должна быть объявлена.
Ответ 2
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
Ответ 3
Декларация не означает "значение" для переменной; чтобы объявить тип переменной.
Назначение - это просто сохранение значения переменной.
Инициализация - это присвоение значения переменной во время объявления.
Эти определения также применяются к полям.
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-контекста и т.д.
Ответ 4
Объявление: всякий раз, когда вы определяете новую переменную с ее типом
назначение: всякий раз, когда вы меняете значение переменной, присваивая ей новое значение
инициализация: назначение, которое выполняется вместе с объявлением, или в любом случае первое присваивание, которое выполняется с переменной, обычно это вызов конструктора для объекта или простое назначение для переменная
Ответ 5
Вот несколько примеров с некоторыми примерами.
Декларация:
Декларация - это когда вы объявляете переменную с именем, а переменная может быть объявлена только один раз.
Пример: int x;
, String myName;
, Boolean myCondition;
Инициализация:
Инициализация - это когда мы помещаем значение в переменную, это происходит, когда мы объявляем переменную.
Пример: int x = 7;
, String myName = "Emi";
, Boolean myCondition = false;
Назначение:
Назначение - это когда мы уже объявили или инициализировали переменную, и мы меняем значение. Вы можете изменить значение переменной столько раз, сколько хотите, или вам нужно.
Пример:
int x = 7;
x = 12;
....... Мы просто изменили значение.
String myName = "Emi";
myName = "John"
....... Мы просто изменили значение.
Boolean myCondition = false;
myCondition = true;
....... Мы просто изменили значение.
Примечание. В памяти будет сохранено последнее значение, которое мы положили.
Ответ 6
Я исхожу из фона C/С++, но идеи должны быть одинаковыми.
Декларация. Когда объявлена переменная, она сообщает компилятору выделить часть памяти и связать с ней имя (и тип переменной). В C/С++ он может выглядеть так:
int x;
Компилятор видит это и выделяет адресное местоположение для x и знает, какие методы он должен использовать для выполнения операций над x (разные типы переменных будут использовать разные операции доступа). Таким образом, когда компилятор работает в строке
x = 3 + 5;
Он знает, чтобы положить целочисленное значение 8 (а не значение с плавающей запятой 8) в ячейку памяти, также известную как "x".
Назначение - Это когда вы добавили значение в ранее объявленную переменную. Назначение связано с знаком "равно". В предыдущем примере переменной "x" было присвоено значение 8.
Инициализация - это когда переменная задана со значением. Нет никакой гарантии, что каждая переменная будет установлена на какое-либо значение по умолчанию во время объявления переменной (если вы явно не сделаете это). Можно утверждать, что инициализация является первым назначением переменной, но это не совсем так, как я объясню вкратце. Типичная инициализация представляет собой смесь объявления переменной с присваиванием следующим образом:
int x = 6;
Различие между инициализацией и присваиванием становится более важным при работе с константами, такими как...
const int c = 15;
При работе с константами вы получаете возможность присваивать их значение во время объявления/инициализации. В противном случае их нельзя трогать. Это связано с тем, что константы часто расположены в памяти программ и памяти данных, и их фактическое назначение происходит во время компиляции и времени выполнения.
Ответ 7
Шаг 1: Декларация: int a;
Шаг 2: Инициализация: a = 5;
Шаг 3: Назначение: a = b; (ex: int b = 10, теперь a становится 10)