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