Java:定义术语初始化,声明和赋值

时间:2010-04-10 16:30:05

标签: java initialization declaration variable-assignment

我发现defs是圆形的,主语是由他们的动词定义的,但动词是未定义的!那么你如何定义它们呢?

循环定义

初始化:初始化变量。它可以在当时完成 声明。

赋值:为变量赋值。它可以在任何地方完成,只能使用最终标识符一次。

声明:向变量声明值。

[更新,尝试使用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?

8 个答案:

答案 0 :(得分:63)

作业:丢弃变量的旧值并将其替换为新值

初始化:这是一种特殊的任务:第一种。在初始化对象具有null值之前,基元类型具有默认值,例如0false。可以与声明一起完成。

声明:声明声明变量的类型及其名称。变量只能声明一次。编译器使用它来帮助程序员避免错误,例如将字符串值分配给整数变量。在读取或分配变量之前,必须声明该变量。

答案 1 :(得分:61)

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

答案 2 :(得分:9)

声明不是要向变量声明“值”;它是声明变量的类型

分配只是将值存储到变量中。

初始化是在声明时为变量赋值。

这些定义也适用于字段。

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上下文对象初始化等。

答案 3 :(得分:3)

声明:每当您定义一个类型为

的新变量时

作业:每当您通过赋予新值来更改变量值时

初始化:与声明一起完成的赋值,或者在任何情况下使用变量完成的第一个赋值,通常是对象的构造函数调用或对象的简单赋值变量

答案 4 :(得分:3)

以下是一些简短的解释和一些例子。

<强>声明: 声明是指使用名称声明变量,而变量只能声明一次。

示例: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; .......我们刚改变了价值。

注意:在内存中将保存我们放置的最后一个值。

答案 5 :(得分:0)

我来自C / C ++背景,但想法应该是一样的。

声明 - 声明变量时,它告诉编译器留出一块内存并将名称(和变量类型)与它关联起来。在C / C ++中,它看起来像这样:

int x;

编译器看到了这一点并为x留出了一个地址位置,并知道它应该用什么方法对x执行操作(不同的变量类型将使用不同的访问操作)。这样,当编译器运行到行

x = 3 + 5;

它知道将整数值8(不是浮点值8)放入内存位置,也称为“x”。

分配 - 这是当您将值填入先前声明的变量时。作业与“等号”相关联。在前面的示例中,变量'x'被赋值为8。

初始化 - 这是一个变量预设值。无法保证在变量声明期间每个变量都会被设置为某个默认值(除非您明确地这样做)。可以说初始化是变量的第一次赋值,但这并不完全正确,我将在稍后解释。典型的初始化是变量声明与赋值的混合,如下所示:

int x = 6;

初始化和赋值之间的区别在处理常量时变得更加重要,例如......

const int c = 15;

处理常量时,只能在声明/初始化时分配它们的值。否则,他们无法触及。这是因为常量通常位于程序存储器和数据存储器中,它们的实际分配是在编译时与运行时间进行的。

答案 6 :(得分:0)

第1步:声明:int a;

第2步:初始化:a = 5;

第3步:作业:a = b; (例如:int b = 10;现在a变为10)

答案 7 :(得分:0)

Declaration
When we first create a variable of any Data Type is call Declaration. Example: 

int obj;
String str;

Initialization
When (Declaration is completed) or variable is created the assigned any value to this variable is call Initialization. Example 
    int obj = 10;
    String str = "Azam Khan";

Assignment
Reassign value to that variable that is already initialized is call Assignment. Example
int obj = 15;
obj = 20;       // it print **20** value.
String str = "simple"
str = "Azam Khan"  // it's result or print **Azam Khan** value...

简单的程序

class ABC{
public static void main(String args[]){
int obj; // this is **Declaration:**
int  testValue= 12;   // After the **Declaration**, 
testValue is **Initialize**. 
testValue = 25;
System.out.println(textValue);
}
} 
the output result is 25.

它保存了 25 的值。