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)