Java的数据类型主要包括基本数据类型和引用数据类型
一、基本数据类型
简单类型 | 二进制位数 | 取值范围 | 默认值 | 包装类 | 高频区间数据缓存范围 |
---|---|---|---|---|---|
byte | 8 | -2^8 - 2^8-1 | 0 | Byte | -128 - 127 |
short | 16 | -2^16 - 2^16-1 | 0 | Short | -128 - 127 |
int | 32 | -2^32 - 2^32-1 | 0 | Integer | -128 - 127 |
long | 64 | -2^64 - 2^64-1 | 0 | Long | -128 - 127 |
float | 32 | -2^32 - 2^32-1 | 0.0 | Float | 无缓存区 |
double | 64 | -2^64 - 2^64-1 | 0.0 | Double | 无缓存区 |
boolean | 1 | true/false | false | Boolean | 使用静态final定义,就会返回静态值 |
char | 16 | -2^16 - 2^16-1 | \u0000 | Character | 0 - 127 |
补充说明:
- byte,short,int,long 为整型类型,当赋予的值超过了该整型变量的取值范围,则会发生整型溢出
(例:int a = 2^8;//溢出, 解决方案:将int类型扩大为long类型)
-
高频缓存区的作用:提高性能
//以Integer为例 Integer var1 = 100; //new了一个对象,赋予属性值100 Integer var2 = 100; //由于100在Integer的高频缓存区内,则无需再new一个新的对象,直接让var2 指向和var1同样的内存空间 System.out.println(var1 == var2); //由于var1 和var2 指向同一片空间,所以二者地址值相等,答案应为true //倘若有多个Integer 对象 属性值为100,则这些变量都和var1指向相同的内存空间,因此可以提高性能
-
基本数据类型与包装类之间的转换(自动装箱 && 自动拆箱)
Integer val = 100; 等价于 Integer var = Integer.valueof(100); // 这就是基本类型转换为包装类类型的自动装箱
int num = var; 等价于 int num == var.intValue(); //这就是包装类类型转换成基本类型的自动拆箱
二、引用数据类型
Java 的四种引用类型从强到弱分别是:强引用、软引用、 弱引用、 虚引用。
Java 的三种引用数据类型分别是:类、数组、接口。