Java-数据类型

Java 数据类型完整详解(2026 版)

Java 的数据类型分为两大类:基本数据类型(Primitive Types)引用数据类型(Reference Types)


1. 基本数据类型(8 种)

类型字节数取值范围默认值说明
byte1-128 ~ 1270字节型
short2-32768 ~ 327670短整型
int4-2^31 ~ 2^31-1(约21亿)0整型(最常用)
long8-2^63 ~ 2^63-10L长整型
float4±1.4E-45 ~ ±3.4028235E380.0f单精度浮点
double8±4.9E-324 ~ ±1.7976931348623157E3080.0双精度浮点(默认)
char20 ~ 65535(Unicode)‘\u0000’字符型
booleantrue / falsefalse布尔型

代码示例:

public class DataTypeDemo {
    public static void main(String[] args) {
        // 整数类型
        byte b = 127;
        short s = 32767;
        int i = 100;
        long l = 10000000000L;     // 必须加 L 或 l

        // 浮点类型
        float f = 3.14f;           // 必须加 F 或 f
        double d = 3.141592653589793;

        // 字符类型
        char c1 = 'A';
        char c2 = '中';            // 支持 Unicode
        char c3 = '\u0041';        // Unicode 编码

        // 布尔类型
        boolean flag = true;
    }
}

2. 引用数据类型

所有使用 new 关键字创建的对象都是引用类型,包括:

  • (Class):如 StringScannerArrayList
  • 接口(Interface)
  • 数组(Array)
  • 枚举(Enum)
  • 注解(Annotation)

核心区别

  • 基本类型:存储实际值,存放在
  • 引用类型:存储对象的地址(引用),对象本体存放在
String str1 = "Hello";           // 字符串常量池
String str2 = new String("Hello");

int[] arr = new int[10];         // 数组是引用类型

3. 自动装箱与拆箱(Autoboxing & Unboxing)

从 Java 5 开始支持:

Integer num1 = 100;     // 自动装箱:int → Integer
int num2 = num1;        // 自动拆箱:Integer → int

// 底层相当于
Integer num1 = Integer.valueOf(100);
int num2 = num1.intValue();

注意Integer 缓存了 -128 ~ 127 的对象,使用 == 比较时在此范围内结果为 true


4. 类型转换

4.1 自动类型转换(隐式转换)

从小范围到大范围:

byte b = 10;
int i = b;           // 自动转换
long l = i;
double d = l;

4.2 强制类型转换(显式转换)

double d = 3.14159;
int i = (int) d;     // 结果为 3(直接截断小数)

long l = 3000000000L;
int n = (int) l;     // 可能造成数据溢出

5. 常见陷阱与最佳实践

1. 整数溢出

int max = Integer.MAX_VALUE;
System.out.println(max + 1);   // -2147483648(溢出)

推荐:使用 longBigInteger

2. 浮点数精度问题

double a = 0.1;
double b = 0.2;
System.out.println(a + b);     // 0.30000000000000004

推荐:金融计算使用 BigDecimal

3. char 类型本质是整数

char c = 'A';
System.out.println(c + 1);     // 输出 66(Unicode 值)

4. 变量命名与默认值

  • 成员变量有默认值
  • 局部变量必须手动初始化

6. 包装类型 vs 基本类型

场景推荐使用
普通计算、性能敏感基本类型
集合(List、Map)包装类型
泛型包装类型
需要 null 值包装类型

总结记忆口诀

基本八种记心里byte short int longfloat doublechar boolean
引用类型 new 出来String 是最常用
装箱拆箱自动换精度范围要记清


练习题(建议立即动手):

  1. 写一个方法,判断一个 int 是否是 2 的整数次幂(使用位运算)
  2. 使用 BigDecimal 实现精确的金额加法
  3. 演示 Integer 缓存机制对 == 的影响

需要我继续讲解以下哪个专题?

  • String 详解(常量池、不可变性)
  • 数组与集合
  • BigDecimal 与 BigInteger
  • Java 内存模型与数据类型的关系

随时告诉我!

文章已创建 5321

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部