Red de conocimiento informático - Conocimiento informático - ¿Cuál es la diferencia entre definir variables locales con o sin nulo?

¿Cuál es la diferencia entre definir variables locales con o sin nulo?

No existe una diferencia esencial entre agregar nulo y no agregar nulo.

(Porque en Java, para garantizar la seguridad, las variables deben inicializarse antes de usarlas de todos modos, por lo que inevitablemente aparecerán las siguientes declaraciones jack = new Man() o jack = ManFacory. getMan(), etc. .)

Vacío

Man jack indica que se declara una variable de tipo jack. Jack es una variable, solo sabe que su jack es una referencia a una variable de tipo Man, pero en realidad no tiene ningún valor.

Man jack = null; Se declara una variable de tipo jack, pero su valor es nulo. (Tenga en cuenta que nulo también se considera un valor, pero es un valor que representa nulo, a diferencia de lo anterior).

Si hay diferencia.

Si escribes el código así:

//Por ejemplo, la clase Man tiene un método sayName(), que devuelve un tipo de cadena que representa tu nombre

Man jack

jack.sayName();

¡Hacerlo hará que el compilador informe un error e incluso no podrá compilar! .Debido a que jack nunca ha sido inicializado y desea utilizar el método de jack, y debido a que jack no hace referencia a ninguna variable, el compilador pensará que está hablando de algo que no ha sido inicializado. Entonces el compilador cree que cometiste un error.

Man jack=null;

jack.sayName();

De esta manera, el compilador te permitirá pasar, pero obtendrás un error de NullPointer en tiempo de ejecución. Porque el compilador de Java cree que jack tiene un valor inicial (pero no nulo). Entonces pasa y no cree que hayas cometido un error.

Los errores (más precisamente, excepciones) se encuentran en el momento de la ejecución.

Cuando escribimos programas, el principio de las pruebas de software es encontrar errores lo antes posible y corregirlos. Por lo tanto, si hay un error, es mejor fallar en tiempo de compilación en lugar de generar una excepción en tiempo de ejecución para encontrar el error.

Por lo tanto, no estoy de acuerdo con las opiniones de los encuestados anteriores.

Man jack = new Man();

Esta es la mejor práctica. Inicialícelo en el momento de la declaración.

Sin embargo, si comparas Man jack =null con Man jack; Agregar nulo no tiene ningún sentido, simplemente engaña al compilador. En cambio, deja el riesgo de excepciones en tiempo de ejecución causadas por olvidar inicializar las variables en tiempo de ejecución. Esto aumentará el esfuerzo de depuración.

Entonces, si desea declarar una variable sin inicializarla, agregar un valor nulo sin sentido no sería prudente.

Esto es un poco como try catch, no escribir nada en catch, en mi opinión, esta es una forma de ahorrar tiempo sin prestar atención a los detalles de seguridad. Cuando un programa tiene mucho código, puede llevar 10 veces más tiempo depurar los detalles que guardar unas pocas líneas de código.