2010-04-10 13 views
32

Encuentro los defs circulares, los sujetos están definidos por sus verbos pero los verbos no están definidos. Entonces, ¿cómo los defines?Java: define la inicialización de términos, la declaración y la asignación

la circular Definiciones

inicialización: para inicializar una variable. Se puede hacer en el momento de la declaración .

asignación: para asignar valor a una variable. Se puede hacer en cualquier lugar, solo una vez con el identificador final.

declaración: para declarar el valor de una variable.

[actualización, tratando de comprender el tema con cálculo lambda]

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

[Declaración] (https://docs.oracle.com/javase/tutorial/java/javaOO/variables.html), [Inicialización] (https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html), y [Assignment] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html) están todos incluidos en The Java Tutorials Trail : [Aprendiendo el lenguaje Java] (https://docs.oracle.com/javase/tutorial/java/TOC.html). – jaco0646

Respuesta

56

assi gnment: tirar el antiguo valor de una variable y su sustitución por una nueva

inicialización: es un tipo especial de asignación: el primero. Antes de que los objetos de inicialización tengan el valor null y los tipos primitivos tienen valores predeterminados como 0 o false. Se puede hacer junto con la declaración.

declaración: una declaración indica el tipo de una variable, junto con su nombre. Una variable puede declararse solo una vez. Es utilizado por el compilador para ayudar a los programadores a evitar errores como la asignación de valores de cadena a variables enteras. Antes de leer o asignar una variable, esa variable debe haber sido declarada.

+2

¿RESUMEN? La inicialización es un cambio desde un valor inicial. La declaración está etiquetando con nombre y tipo. La asignación es un cambio más general en el valor, la inicialización es un tipo especial de asignación. – hhh

+1

correcto. La inicialización es especial solo porque es la primera asignación de una variable –

+2

No creo que las primitivas tengan valores '0' o 'falsos' antes de la inicialización, dado que cuando intentas imprimir una variable no inicializada, produce una compilación error de tiempo que indica que la variable puede no haberse inicializado, en lugar de imprimir su valor. –

3

declaración: cada vez que se define una nueva variable con su tipo

asignación: cada vez que cambie el valor de una variable dándole un nuevo valor

inicial ization: una asignación que se realiza junto con la declaración, o en cualquier caso la primera asignación que se hace con una variable, generalmente es una llamada de constructor para un objeto o una asignación simple para una variable

+0

No puedo entender la diferencia por declaración e inicialización. – hhh

+0

inicialización = declaración + asignación? – hhh

+0

es más parecido a la inicialización = primera asignación (puede ser implícita para los campos de clase, pero tiene que ser explícita para las variables locales) – pablochan

6

Declaración no es declarar "valor" a una variable; es para declarar tipo de la variable.

La asignación es simplemente el almacenamiento de un valor a una variable.

La inicialización es la asignación de un valor a una variable en el momento de la declaración.

Estas definiciones también se aplican a los campos.

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 

Sin embargo, se debe mencionar que "inicialización" también tiene una definición más relajado de "la primera asignación a una variable", independientemente del lugar en que sucede.

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 

Esto, sin embargo, compila:

int i; // the following also compiles if i were declared final 
if (something) i = 42; 
else i = 666; 
System.out.println(i); 

Aquí i puede "iniciada" desde dos ubicaciones posibles, por las tareas simples. Por eso, si i era una matriz, no puede usar la sintaxis abreviada de inicializador de matriz especial con esta construcción.

Así que, básicamente "inicialización" tiene dos definiciones posibles, dependiendo del contexto:

  • En su forma más estrecha, es cuando una misión se comboed con la declaración.
    • Permite, entre otras cosas, serie especial de los de sintaxis abreviada inicializador
  • De manera más general, que es cuando se realiza una asignación primero en una variable.
    • Permite, entre otras cosas, asignaciones a una variable final en varios lugares.
      • El compilador hará todo lo posible para asegurarse de que exactamente una de esas tareas puede suceder, por lo tanto "inicializar" el final variables

También hay clases JVM-contexto e inicialización de instancia, inicialización de objeto de contexto de OOP, etc.

+0

"int [] arr = {1, 2, 3};" es arr-declarado y {1,2,3} -assignment. Implica una inicialización. ¿Derecha? – hhh

+0

Sí, ese es un ejemplo de la sintaxis de inicializador de matriz especial que se utiliza, por lo que es la inicialización. – polygenelubricants

57
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 
+7

"El mejor código es autoexplicativo /" –

0

Vengo de un fondo de C/C++, pero las ideas deben ser las mismas.

Declaración - Cuando se declara una variable, le está diciendo al compilador que reserve una parte de la memoria y asocie un nombre (y un tipo de variable) con ella. En C/C++ que podría tener este aspecto:

int x; 

El compilador ve esto y deja de lado una ubicación de dirección para x y sabe qué métodos se debe utilizar para realizar operaciones en x (diferentes tipos de variables utilizarán diferentes operaciones de acceso) De esta manera, cuando el compilador se encuentra con la línea

x = 3 + 5; 

Se sabe que poner el valor entero de 8 (no el valor de punto flotante 8) en la posición de memoria también conocido como 'x'.

Asignación - Esto es cuando se rellena un valor en la variable previamente declarada.La asignación está asociada con el 'signo igual'. En el ejemplo anterior, a la variable 'x' se le asignó el valor 8.

Inicialización - Esto es cuando una variable está preestablecida con un valor. No hay garantía de que una variable se establezca en algún valor predeterminado durante la declaración de la variable (a menos que explícitamente lo haga). Se puede argumentar que la inicialización es la primera asignación de una variable, pero esto no es del todo cierto, como explicaré en breve. Una inicialización típica es una mezcla de la declaración de variables con una asignación de la siguiente manera:

int x = 6; 

La distinción entre la inicialización y asignación se hace más importante cuando se trata de constantes, como este ...

const int c = 15; 

Cuando se trata de constantes, solo se puede asignar su valor en el momento de la declaración/inicialización. De lo contrario, no pueden ser tocados. Esto se debe a que las constantes a menudo se ubican en la memoria de programa frente a la memoria de datos, y su asignación real se produce en tiempo de compilación frente a tiempo de ejecución.

0

Paso 1: Declaración: int a;

Paso 2: Inicialización: a = 5;

Paso 3: Asignación: a = b; (por ejemplo: int b = 10; ahora a se convierte en 10)

3

Aquí hay una breve explicación con algunos ejemplos.

Declaración: La declaración es cuando declara una variable con un nombre, y una variable puede declararse solo una vez.

Ejemplo: int x;, String myName;, Boolean myCondition;

Inicialización: inicialización es cuando ponemos un valor en una variable, esto sucede mientras declaramos una variable.

Ejemplo: int x = 7;, String myName = "Emi";, Boolean myCondition = false;

Asignación: asignación es cuando ya declarada o inicializado una variable, y estamos cambiando el valor. Puede cambiar el valor de la variable tantas veces como desee o necesite.

Ejemplo:

int x = 7; x = 12; ....... Nos acaba de cambiar el valor.

String myName = "Emi"; myName = "John" ....... Acabamos de cambiar el valor.

Boolean myCondition = false; myCondition = true; ....... Acabamos de cambiar el valor.

Nota: En la memoria se guardará el último valor que puse.

Cuestiones relacionadas