0

Aprendiendo de variables y tipos de datos me encontré con el valor "null". Comprendo lo que significa, sin embargo no sé qué utilidad puede tener al momento de programar.

  • 2
    si vos queres que un dato no tenga nada... usas null... sobre todo en bases de datos... si vos queres que una referencia a un objeto deje de existir.. lo pones en null... si no, como identificarias un tipo de dato que no existe.. por ejemplo.. si un numero no existe.. es null.. no es 0... porque el 0, existe... – gbianchi May 06 '21 at 22:41
  • ¿Qué porcentaje de los objetivos cumplió Juana? No es lo mismo que no haya cumplido nada y tenga 0% a que no haya trabajado, y no se le compute ningún porcentaje... La utilidad de null no es nula ... De todas formas creo que la pregunta se puede responder de demasiadas formas. Si se te ocurre cómo acotarla, sería genial si pudieses [edit] – Pollo May 06 '21 at 22:44

3 Answers3

0

Por ejemplo si estás pidiendo un valor numérico ("no válidas el tipo de valor numérico en el input"), al momento de castear el valor a un Integer ocurre una exception, tu puedes validar si la variable es null no continúe tu aplicación.

  • Genial! Podrias agregar un ejemplo para que esto sea una verdadera respuesta – Christian May 07 '21 at 00:18
  • 1
    Esto parece realmente un comentario mas que una respuesta. Con un poco mas de reputación, [vas a poder comentar en cualquier lado.](//es.stackoverflow.com/privileges/comment). Por favor mira [answer] – gbianchi May 07 '21 at 02:43
  • `String precioString =jTextField1.getText(); BigDecimal precio=null; try { precio = new BigDecimal(precioString); } catch (Exception e) {} if(precio!=null){ System.out.println("Debe ingresar un precio"); }` – ernesto chavez May 07 '21 at 17:44
0

Algo muy útil del valor null es utilizarlo como detector de error. Imagínate una variable que debes setearle un valor retornado por una función la cual puede tener diversos motivos por los cuales fallar. Puedes utilizar el valor null como valor inicial de la variable y como valor de retorno en caso de error. De esta forma, cuando tengas que utilizar la variable posteriormente sabrás que si tiene un valor null algo erroneo ocurrió.

maucm92
  • 1
  • 2
  • 2
    Esto parece realmente un comentario mas que una respuesta. Con un poco mas de reputación, [vas a poder comentar en cualquier lado.](//es.stackoverflow.com/privileges/comment). Por favor mira [answer] – gbianchi May 07 '21 at 02:43
-3

Null significa que no ocupa ningún lugar en la memoria. Una variable que no hace referancia a nada es igual a null. Cuando tenés una variable que contiene, por ejemplo, un cero, un string vacío, o un arreglo vacío, son instancias de una clase con sus atributos y métodos.

Podés hacer "".constructor o [].constructor y te va a mostrar la definición la clase que se está instanciando a pesar de que estén vacíos. Sin embargo, null no tiene ni atributos ni métodos porque es sinónimo de "no existe".

Se suele usar la palabra reservada null para (1) prevenir errores que surgen, por ejemplo, al tratar de acceder a una propiedad de una variable que pensamos que contiene un objeto pero que, por algún motivo, no se le fue asignado en ningún momento.

var x;
if(deberíaDevolverTruePeroNo()){
  x = "y";
}
----------------------
var z = x.length;        // error
----------------------
if(x != null){
  var z = x.length;      // ok
}

O (2) para liberar espacio en memoria: variableQueYaNoVoyAUsar = null;

¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?

N.N.
  • 591
  • 4
  • 17
  • 6
    "Null significa que no ocupa ningún lugar en la memoria" esto es un grave error. la variable ocupa un lugar en memoria, siempre. Que su valor sea null, quiere decir que es un valor interno del sistema que es nulo. pero la variable, existe, siempre... – gbianchi May 07 '21 at 00:00
  • Osea, me imagino que ocupa lugar para reservar el nombre, el scope y cosas por el estilo pero no hace referencia a ningún espacio en la memoria (el valor). ¿O sí? – N.N. May 07 '21 at 00:06
  • Y si. Y mas si la variable es boxed o no. El concepto es mucho ms amplio. Pero el valor null existe. Si la variable no apuntara a nada, entonces su direccion seria nula. Pero no existe el valor numerico null. Entonces que valor le pondrias como apuntador? 0 es una direccion de memoria valida (a la cual nadie accede salvo la bios) pero es valida. Es ms, fijate que las variables aunque no apunten a nada, tienen un tipo, por lo cual ya estan pcupando valor en memoria. – gbianchi May 07 '21 at 00:20
  • Una definicion mas correcta seria que null es un valor (valido) que significa que su contenido o no esta definido o no esta creado. Pero por lo menos, la variable existe – gbianchi May 07 '21 at 00:21
  • La verdad desconozco el funcionamiento a tan bajo nivel, pero por lo que entendí, mínimo ocupa lo que ocupa un puntero hacia la direccion de memoria `0` que representaría `null`. Quizás dependa también de lo estricto que sea cada lenguaje con las tipologías, porque en javascript creo que no tendría manera de saber cuánto espacio reservar para una variable. – N.N. May 07 '21 at 00:57
  • Igualmente creo que en el contexto de javascript, con su garbage collector, o de casi cualquier cosa que no sea escribir un programa ultra eficiente en ensamblador, o algo así, es una definición aceptable. – N.N. May 07 '21 at 01:38