Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Inicializar variables

Buenas a todos!
Llevo un tiempo con una duda que no logro entender.
En algunos lugares he leido que las variables deben inicializarse(darles un valor,el que sea) y despues usarse como se quiera.He leido hasta que es de buen programador hacer eso.
Mi pregunta es que sentido tiene eso?
Se supone que al declarar la variable(a menos que sea una objeto)ya estas reservando espacio para ella, es mas si la declaras y no la usas tendras un aviso, pero si la declaras y la inicializas y se te olvida usarla por lo que sea pues no te enteraras.
Es una duda de novata que tengo, que opinan de esto?
Saludines

marzo 22, 2014 | Unregistered CommenterAna

En Java, en general las variables con tipo primitivo se inicializan por defecto con valor cero al declararlas.
Por ejemplo:

int entero; // valor inicial es 0

Sin embargo, las clases se inicializan a null al declararlas.
Por ejemplo:

String cadena; // valor inicial es null

En ocasiones, sí es imprescindible inicializar una variable primitiva.

public class Test {

public static void main(String[] args) {
System.out.println("contador = " + getContador(""));
System.out.println("contador = " + getContador("1"));
}

public static int getContador(String cadena) {
int cont = 0; // si no se inicializa: error de compilación
if (cadena.isEmpty()) {
cont = 1;
}
return cont;
}
}

marzo 22, 2014 | Registered Commenterchoces

Pues muchas gracias, no lo habia visto en ningun sitio tan bien explicado.
Besos, Ana.

marzo 22, 2014 | Unregistered CommenterAna

Hola:

La cosa es así:
Las variables de clase se incializan con un valor por defecto, el valor por defecto depende del tipo:

Tipos primitivos
================
boolean: false
char:'/u0000'
Enteros(byte,short,int,long): 0Lpara long, 0 para los otros
Decimales(float,double):0.0F o 0.0D

Variables de referencia
=======================
Tipo referencia null

Las variables locales (las que se declaran en métodos ) deben ser inicializadas explicitamente, sino dará un error de compilación.

marzo 23, 2014 | Unregistered Commenterdonk

Gracias donk && choces ;) no hubierais podido explicarlo mejor

marzo 23, 2014 | Unregistered CommenterAna

Lo siento, @donk, pero no es exacto decir que las variables locales deben inicializarse, o habrá un error de compilación. No siempre es necesario.
En el caso siguiente no hay error de compilación, porque siempre se asignará un valor a la variable cont, a diferencia del ejemplo del mensaje anterior, en el que la asignación es condicional.

public class Test {

public static void main(String[] args) {
System.out.println("contador = " + getContador(""));
System.out.println("contador = " + getContador("1"));
}

public static int getContador(String cadena) {
int cont; // no hay error de compilación
if (cadena.isEmpty()) {
cont = 1;
} else {
cont = 0;
}
return cont;
}
}

marzo 23, 2014 | Registered Commenterchoces

mm, yo no dije que había que inicializarlas en la misma linea de la declaración.
sin embargo siempre se les debe asignar un valor antes de usarlas. ya que el compilador no les asigna un valor por defecto.

marzo 23, 2014 | Unregistered Commenterdonk

En el caso anterior no hay error de compilación, porque la asignación no es condicional.
Los valores que devuelve un método siempre deben estar explícitamente asignados, no sirve la inicialización por defecto. Si en todos los casos existe asignación explícita, como en el ejemplo anterior, el compilador no lanza un error en la declaración, aunque no haya asignación de valor en la misma declaración.

marzo 23, 2014 | Registered Commenterchoces