Java: tipos de datos básicos y tipos encapsulados

Los tipos primitivos tienen valores predeterminados, mientras que los tipos contenedores son inicialmente nulos. Luego use estas dos características para diferentes negocios. Según las especificaciones de Alibaba, todas las clases POJO deben usar tipos de paquete y se recomienda usar tipos básicos para variables locales.

alí

 El lenguaje Java proporciona ocho tipos básicos. Seis tipos numéricos (cuatro enteros, dos tipos de punto flotante), un tipo de carácter y un tipo booleano. 

1. Entero: incluido int, short, byte, long, el valor inicial es 0.

2. Tipo de punto flotante: el valor inicial de flotante y doble es 0,0

3. Carácter: el valor inicial de char es un espacio, es decir, '' ". Si se genera, el efecto no será visible en la consola.

4. Booleano: el valor inicial booleano es falso 

tipo básico tamaño valor mínimo valor máximo
booleano ----- ----- ------
carbonizarse 16 bits Unicódigo 0 Unicódigo 2^16-1
byte 8 bits -128 +127
corto 16 bits -2^15 +2^15-1
En t 32 bits -2^31 +2^31-1
largo 64 bits -2^63 +2^63-1
flotar 32 bits IEEE754 IEEE754
doble 64 bits IEEE754 IEEE754
vacío

Aviso:

El ^ en la tabla representa el poder.

Java usa Unicode, 2 bytes representan un carácter y 1 byte equivale a 16 bits. 

Tipo básico de clase contenedora

Entero, Largo, Corto, Byte, Carácter, Doble, Flotante, Booleano, BigInteger, BigDecmail

Entre ellos, BigInteger y BigDecimal no tienen tipos básicos correspondientes y se utilizan principalmente para operaciones de alta precisión. BigInteger admite números enteros de precisión arbitraria. 

BigDecimal admite operaciones de precisión arbitraria con punto decimal

Tipos básicos: int, double, float, long, byte, boolean , char
Tipos de empaquetado: entero, Double, Float, Long, Byte, Boolean, Char

Características de los tipos básicos.

1. Los tipos de datos básicos utilizan la transferencia de valores al pasar parámetros.

2. Los tipos básicos se crean en la pila (hay un problema de fuga)

3. La creación no se hace a través de lo nuevo.

Características de los tipos de paquetes.

1. Crear a través de nuevo o asignar directamente.

2. Al pasar parámetros, utilizamos "pasar por referencia", que es el método de paso de direcciones.

3. La creación se crea en el montón.

4. El valor de la clase contenedora del tipo de datos es inmutable.

Ventajas de los tipos de paquetes:

Para crear un tipo de paquete, puede utilizar algunos métodos que el tipo básico no tiene, como valueOf(), toString(), etc. Además, si desea pasar una referencia a un objeto int en lugar de un valor, solo puede usar una clase contenedora.

Similitudes y diferencias entre tipos básicos y tipos de paquetes :

1. En Java, todo es un objeto, pero los ocho tipos básicos no son objetos.

2. Diferentes métodos de declaración: los tipos básicos no necesitan crearse mediante la nueva palabra clave, mientras que los tipos encapsulados requieren la nueva palabra clave.

3. El método de almacenamiento y la ubicación son diferentes: el tipo básico almacena directamente el valor de la variable, a la que se puede acceder de manera eficiente guardándola en la pila, el tipo encapsulado debe apuntar a la instancia a través de una referencia, y la instancia específica se guarda en el montón;

4. El valor inicial es diferente: el valor inicial del tipo encapsulado es nulo y el valor inicial del tipo básico depende del tipo específico. Por ejemplo, el valor inicial del tipo int es 0 y el tipo booleano es FALSO;

5. Diferentes métodos de uso. Por ejemplo, cuando se trabaja con clases de colección, solo se pueden usar tipos de empaque.

6. ¿Cuándo debería usar una clase contenedora y cuándo debería usar un tipo básico? Depende del negocio básico: si se permiten valores nulos en este campo, si está permitido, debe usar una clase contenedora; de lo contrario, el tipo básico será suficiente. Si usa funciones como genéricas y reflexión, ¡necesita usar una clase contenedora!

Código fuente

Eche un vistazo  Boolean a las propiedades y al constructor para ver cómo se ajusta. boolean

// final boolean类型的属性,通过构造方法注入值
private final boolean value;
​
// 构造方法 Boolean a = true 实际上就是调用这个方法
public Boolean(boolean value) {
    this.value = value;
}
​
// 构造方法
public Boolean(String s) {
    this(parseBoolean(s));
}

En pocas palabras, los atributos definidos por booleano deben tener un valor. Si  Boolean el valor del objeto es  null, se producirá NPE durante el proceso de descompresión.

Los tipos de datos básicos y los tipos de contenedor utilizan estándares

alí

Nota:

El método de asignación de clases contenedoras es valueof, pero a partir de Java 5.0 (1.5), la máquina virtual JAVA (máquina virtual Java) puede completar la conversión automática entre tipos básicos y sus clases contenedoras correspondientes. Por lo tanto, usamos sus clases contenedoras como tipos básicos al realizar asignaciones, transferencias de parámetros y operaciones matemáticas, pero esto no significa que pueda llamar a métodos que solo están disponibles en sus clases contenedoras a través de tipos básicos. Además, las clases contenedoras de todos los tipos básicos (incluido void) utilizan modificación final, por lo que no podemos heredarlas para extender nuevas clases, ni podemos anular ninguno de sus métodos.

Eche un vistazo al código fuente de valueof para comprender el mecanismo de almacenamiento en caché.

public static Integer valueOf(int i) {
     assert IntegerCache.high>= 127;
     if (i >= IntegerCache.low&& i <= IntegerCache.high)
     return IntegerCache.cache[i+ (-IntegerCache.low)];
     return new Integer(i); 
}

El rango de valores de caché de cada clase de empaquetado:

booleano: verdadero y falso 
byte: -128~127 
char: 0~127 
short: -128~127 
int: -128~127 
long: -128~127 
float y double no se almacenan en caché

El valor dentro del rango de caché equivale a un espacio que se ha abierto o un objeto que ha sido nuevo.

Java: grupo de caché constante de enteros (rango de valores predeterminado -128 ~ 127)_rango de datos de caché entero-CSDN Blog

Supongo que te gusta

Origin blog.csdn.net/MinggeQingchun/article/details/130796693
Recomendado
Clasificación