Java数据类型分类及使用指南
Java数据类型分为两大类,“基本数据类型”和“引用数据类型”。
基本数据类型:byte、short、int、long、float、double、char、boolean。
引用数据类型:类、接口、数组、枚举。
一、基本数据类型(8种)
基本数据类型由Java语言预定义,直接存储数据值,分配在栈内存中。
1.整型(整数)
注:long类型赋值时需要在数值后加L或l,推荐使用大写L。
类型 | 大小(位数) | 取值范围 | 默认值 | 示例 |
byte | 8位 | -128 ~ 127 | 0 | byte b = 100; |
short | 16位 | -32768 ~ 32767 | 0 | short s = 5000; |
int | 32位 | -2³¹ ~ 2³¹-1 | 0 | int i = 100000; |
long | 64位 | -2⁶³ ~ 2⁶³-1 | 0L | long l = 100000L; |
2.浮点型(小数)
类型 | 大小(位数) | 精度说明 | 默认值 | 示例 |
float | 32位 | 单精度(6-7位有效数字) | 0.0f | float f = 3.14f; |
double | 64位 | 双精度(15位有效数字) | 0.0d | double d = 3.1415926; |
注:float需在数值后加F或f,否则默认为double。
浮点型不适合精确计算(如货币),推荐用BigDecimal。
3.字符型(单个字符)
类型 | 大小(位数) | 取值范围 | 默认值 | 示例 |
char | 16位 | Unicode字符(0 ~ 65535) | '\u0000' | char c = 'A'; |
特点:用单引号''定义,支持转义字符(如\n)。
可存储中文字符:char ch = '中';
4. 布尔型(逻辑值)
类型 | 大小(不明确) | 取值范围 | 默认值 | 示例 |
boolean | 通常1位 | true/false | false | boolean flag = true; |
注:Java中boolean不能与整数(0或1)互换。
二、引用数据类型
引用数据类型存储的是对象的地址(引用),分配在堆内存中,默认值为null。
1. 类(Class)
-
如String、自定义类等。
-
示例:
- 1 String str = "Hello";
2. 接口(Interface)
-
如List、Map等。
-
示例:
- 1 List<Integer> list = new ArrayList<>();
3. 数组(Array)
-
可以是基本类型或引用类型的数组。
-
示例:
4. 枚举(Enum)
-
从Java 5开始支持。
-
示例:
-
1 enum Color { RED, GREEN, BLUE } 2 Color color = Color.RED;
三、注意事项
1.自动装箱与拆箱(Java 5+):
基本类型与对应的包装类(如int ↔ Integer)可自动转换。
示例:
1 Integer num = 10;(自动装箱) 2 int n = num;(自动拆箱)
2.类型转换:
隐式转换(小类型→大类型):
1 int i = 100; long l = i;
强制转换(大类型→小类型):
1 double d = 3.14; int i = (int) d; // 可能丢失精度
3.默认值规则:
类的成员变量有默认值(如int默认为0)。
局部变量必须显式初始化,否则编译报错。
4.内存效率:
基本类型直接存储值,效率高;引用类型需要对象开销。
四、常见问题
浮点数精度问题
避免用==比较浮点数,推荐用差值法或BigDecimal。
整数溢出:
int超出范围会循环,如:
1 Integer.MAX_VALUE + 1 = Integer.MIN_VALUE
空指针异常:
引用类型未初始化
1 String s = null; 2 s.length(); // 会抛出NullPointerException
通过合理选择数据类型,可以优化内存使用并避免运行时错误。