programacion - Java que define o inicializa atributos de una clase
que es un atributo en java (3)
En Java, la inicialización se define explícitamente en la especificación del lenguaje. Para campos y componentes de matriz, cuando se crean elementos, el sistema los establece automáticamente en los siguientes valores predeterminados:
números: 0 o 0.0
booleanos: falso
referencias de objeto: nulo
Esto significa que establecer explícitamente los campos en 0, falso o nulo (según sea el caso) es innecesario y redundante.
Java noob aquí. Al codificar una nueva clase, al definir los atributos de clase, ¿existe alguna diferencia en la definición de una variable y la inicialización de una variable? ¿Alguna vez hay casos en los que te gustaría hacer uno sobre el otro? He usado un primitivo y un Objeto a propósito en caso de que haya una diferencia para cada caso.
es decir
import Java.util.Random;
public class Something extends Activity {
int integer;
Random random = null;
Something(){
integer = 0;
random = new Random();
....
frente a la importación de Java.util.Random;
public class Something extends Activity {
int integer = null;
Random random;
Something(){
integer = 0;
random = new Random();
....
En primer lugar, no puede configurar una primitiva para que sea nula ya que una primitiva es solo datos donde null
es una referencia de objeto. Si intentara compilar int i = null
, obtendría un error de tipo incompatible.
En segundo lugar, la inicialización de las variables a null
o 0
cuando se declaran en la clase es redundante como en Java, las primitivas por defecto a 0
(o false
) y las referencias de objeto por defecto a null
. Sin embargo, este no es el caso para las variables locales, si intentaste lo siguiente obtendrías un error de inicialización en tiempo de compilación
public static void main(String[] args)
{
int i;
System.out.print(i);
}
Inicializarlos explícitamente en un valor predeterminado de 0
o false
o null
tiene sentido, pero es posible que desee establecerlos en otro valor predeterminado, entonces puede crear un constructor que tenga los valores predeterminados, por ejemplo
public MyClass
{
int theDate = 9;
String day = "Tuesday";
// This would return the default values of the class
public MyClass()
{
}
// Where as this would return the new String
public MyClass (String aDiffDay)
{
day = aDiffDay;
}
}
Shanku y Morpheus respondieron la pregunta correctamente. En primer lugar, obtendrá un error de compilación al establecer su variable int primitiva "entero" en nulo; solo puedes hacer eso para Objetos. En segundo lugar, Shanku tiene razón en que Java asigna valores por defecto a las variables de instancia , que son "enteras" y "aleatorias" en su código de ejemplo; las variables de instancia son visibles dentro o fuera de la clase, dependiendo del alcance (público, privado, protegido, paquete).
Sin embargo, los valores predeterminados no están asignados a las variables locales . Por ejemplo, si asignó una variable en su constructor como "int height"; entonces no se inicializará a cero.
Recomiendo leer la documentación de la variable Java , que describe muy bien las variables y, además, puede consultar los tutoriales de Java , que de nuevo son un excelente material de lectura.