tipos tipo primitivos objeto ejemplos datos dato java null primitive-types

objeto - tipos de datos primitivos en java



Nulo para tipos de datos primitivos (9)

El lenguaje de programación Java está tipado estáticamente, lo que significa que todas las variables deben declararse antes de que puedan ser utilizadas. Esto implica indicar el tipo y nombre de la variable.

Al declarar cualquier tipo de datos primitivos como int o double , se inicializan a 0 o 0.0 . ¿Por qué no podemos establecerlos como null ?


En primer lugar, la diferencia de Primitive y Object Reference es la variable Primitive store the real values, mientras que la variable de referencia de objeto almacena la dirección del objeto al que se refieren, en este caso en referencia de objeto si no hay una dirección a la que pasará " nulo".

Los valores predeterminados del tipo de datos primitivos dependen del tipo de datos primitivos: como byte = 0, short = 0, int = 0, long = 0L, float = 0.0f, double = 0.0d, boolean = false, char = "/ u0000" .

Cuando declaramos una variable de cualquier tipo de clase, se conoce como tipo de datos de referencia.

EX:

Prueba t1

Prueba t2

(Tipos de envoltura de objetos)

Entero i

Larga l

Valores predeterminados de referencia de objeto, Jvm inicializa la variable de referencia como "nulo" y también inicializa la matriz a "nulo"


Junto con todas las respuestas anteriores, me gustaría agregar este punto también.

Para los tipos primitivos, tenemos el tamaño de la memoria fija, es decir, para int tenemos 4 bytes y char tenemos 2 bytes. Y null se usa solo para objetos porque el tamaño de la memoria no es fijo.

Entonces, por defecto, tenemos

int a=0;

y no

int a=null;

Lo mismo ocurre con otros tipos primitivos y, por lo tanto, nulo solo se usa para objetos y no para tipos primitivos.


Los objetos implican más sobrecarga que primitivos. La siguiente prueba muestra que int se realiza aproximadamente 10 veces más rápido que Integer.

int n; EtmPoint point1 = etmMonitor.createPoint("test:objects"); for (n = 0; n < 1000000; n++) { Integer t = 0; t = 10; t = 11; } point1.collect(); EtmPoint point = etmMonitor.createPoint("test:primitives"); for (n = 0; n < 1000000; n++) { int t = 0; t = 10; t = 11; } point.collect(); etmMonitor.render(new SimpleTextRenderer());

Esta es la razón por la cual .net implementó primitivas nullables, lamentablemente java no tiene primitivas anulables.


Porque es un tipo primitivo y no un objeto. Puede usar el objeto correspondiente para cada tipo si necesita la capacidad de usar valores nulos (es decir, doble para el doble, largo para largo, booleano para booleano, etc.)


Porque eso es lo que dice el estándar de lenguaje.

Si desea poder pasar null , debe usar los tipos de envoltura , por ejemplo, Integer lugar de int .


Porque los tipos de datos primitivos en Java no son Object s. Siempre puede usar una de las clases contenedoras para tener un Object . Cada uno de los ocho tipos de datos primitivos tiene su envoltorio correspondiente:

  • byte: java.lang.Byte
  • corto: java.lang.Short
  • int: java.lang.Integer
  • largo: java.lang.Long
  • flotador: java.lang.Float
  • double: java.lang.Double
  • booleano: java.lang.Boolean
  • char java.lang.Character

Si está interesado en la estructura completa, puede comenzar aquí (Tipos de datos primitivos) .


Porque null es una referencia. Y los tipos primitivos no son tipos de referencia. Solo los objetos son tipos de referencia.


Un tipo primitivo es solo datos. Lo que llamamos objetos, por otro lado, son solo indicadores de dónde se almacenan los datos. Por ejemplo:

Integer object = new Integer(3); int number = 3;

En este caso, el object es solo un puntero a un objeto Entero cuyo valor resulta ser 3. Es decir, en la posición de la memoria donde está almacenado el objeto variable, todo lo que tiene es una referencia a dónde realmente están los datos. La posición de memoria donde se almacena el number , por otro lado, contiene el valor 3 directamente.

Por lo tanto, podría establecer el object como nulo, pero eso solo significaría que los datos de ese objeto están en nulo (es decir, no están asignados). No puede establecer un int en nulo, porque el lenguaje lo interpretaría como el valor 0.

¡Espero que ayude!