variable usar sirve que para objeto metodos metodo inicializar estaticos ejemplos cuando clases clase atributos java initialization

usar - para que sirve static en java



¿Con qué se inicializan los campos del objeto java? (5)

¿Es null para el tipo de Object ?

class C { int i; String s; public C() {} }

siempre será nulo?

¿Qué pasa con los tipos simples como int? ¿Qué será eso? Cero o un valor arbitrario?

¿Qué pasa con las variables locales en los métodos?

public void meth() { int i; }

¿Cuál es el valor unificado de i?

<Confiar en tales valores predeterminados, sin embargo, generalmente se considera un mal estilo de programación>

Ok, ¿qué sugieres que hagamos?

class A { String s=""; int i=0; }

O

class A { String s; int i; public A() { // default constr s=""; i=0; } }

¿Cuál es mejor y por qué?


En cuanto a la pregunta del método setter: el objetivo de setters es que pueden verificar si el objeto pasado cumple con los requisitos de la clase. p.ej

public void setS(String s) { if (s == null) throw new IllegalArgumentException("S must not be null"); this.s = s; }

O bien, con Google Collections / Google Guava:

public void setS(String s) { this.s = Preconditions.checkNotNull(s, "S must not be null"); }

Por supuesto, puede definir restricciones arbitrarias, por ejemplo:

/** * Sets the foo. Legal foo strings must have a length of exactly 3 characters. */ public void setFoo(String foo) { if (foo == null) throw new IllegalArgumentException("Foo must not be null"); if (foo.length() != 3) throw new IllegalArgumentException("Foo must have exactly 3 characters"); ...

Por supuesto, en tal caso, siempre debe indicar el rango correcto de valores para sus propiedades en JavaDoc del setter y / o de la clase.


Los campos primitivos se inicializan a 0 / false . Los objetos se inicializan a null . Pero francamente, podrías haber intentado eso ...


Para variables miembro: el valor predeterminado para String es nulo. El valor predeterminado para las primitivas es 0 (o 0.0 para valores de coma flotante).

Para variables locales: debe inicializar explícitamente una variable local antes de usarla.

En cuanto a la segunda parte de su pregunta: Siempre puede decir String s = ""; en la definición de variable miembro, o s = ""; en el constructor Entonces sabrá que tendrá un valor no nulo. (Además, en tu setter necesitarás asegurarte de que alguien no intente volver a establecerlo como nulo).


Campos: los objetos predeterminados son nulos; ints, longs y shorts a 0; Cadenas para anular; booleanos a falso. Todo está aquí .

El compilador lo forzará a inicializar las variables declaradas en métodos, variables locales , usted mismo.


De soles tutorial java

No siempre es necesario asignar un valor cuando se declara un campo. Los campos declarados pero no inicializados se establecerán en un valor razonable predeterminado por el compilador. En general, este valor predeterminado será cero o nulo, según el tipo de datos. Sin embargo, confiar en dichos valores predeterminados generalmente se considera un mal estilo de programación.

El siguiente cuadro resume los valores predeterminados para los tipos de datos anteriores.

Data Type Default Value (for fields) byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char ''/u0000'' boolean false String (or any object) null

Las variables locales son ligeramente diferentes; el compilador nunca asigna un valor predeterminado a una variable local no inicializada. Si no puede inicializar su variable local donde está declarada, asegúrese de asignarle un valor antes de intentar usarla. El acceso a una variable local no inicializada dará como resultado un error en tiempo de compilación.