授课语音

Java 中的基本数据类型与包装类

Java 是一种强类型语言,提供了 8 种基本数据类型(Primitive Types)和与之对应的包装类(Wrapper Classes)。掌握基本数据类型及其包装类是学习 Java 的基础,也是进行类型转换、集合操作等的重要前提。


1. 基本数据类型

Java 提供了 8 种基本数据类型,分为四类:整型、浮点型、字符型和布尔型。

类型 关键字 位数 取值范围 默认值
整型 byte 8 位 -128 ~ 127 0
short 16 位 -32,768 ~ 32,767 0
int 32 位 -2^31 ~ 2^31 - 1 0
long 64 位 -2^63 ~ 2^63 - 1 0L
浮点型 float 32 位 1.4E-45 ~ 3.4028235E38 0.0f
double 64 位 4.9E-324 ~ 1.7976931348623157E308 0.0d
字符型 char 16 位 单个 Unicode 字符(0 ~ 65,535) '\u0000'
布尔型 boolean 1 位 truefalse false

基本数据类型代码案例

package basics;

public class PrimitiveTypesExample {
    public static void main(String[] args) {
        // 整型
        byte b = 127; // byte 类型,范围:-128 到 127
        short s = 32000; // short 类型,范围:-32,768 到 32,767
        int i = 100000; // int 类型,范围:-2^31 到 2^31-1
        long l = 10000000000L; // long 类型,需要以 L 结尾

        // 浮点型
        float f = 3.14f; // float 类型,需要以 f 结尾
        double d = 3.141592653589793; // double 类型,精度更高

        // 字符型
        char c = 'A'; // char 类型,存储单个字符
        char unicodeChar = '\u4F60'; // Unicode 字符:'你'

        // 布尔型
        boolean flag = true; // boolean 类型,值为 true 或 false

        // 输出
        System.out.println("byte: " + b);
        System.out.println("short: " + s);
        System.out.println("int: " + i);
        System.out.println("long: " + l);
        System.out.println("float: " + f);
        System.out.println("double: " + d);
        System.out.println("char: " + c);
        System.out.println("Unicode char: " + unicodeChar);
        System.out.println("boolean: " + flag);
    }
}

代码注释:

  1. 每种基本数据类型都有固定的取值范围,超出范围会导致编译错误或数据溢出。
  2. 字符型支持 Unicode 编码,适合国际化应用。

2. 包装类

基本数据类型的包装类提供了对象版本,支持更多的操作(如方法调用)和与泛型类的兼容性。

基本类型 包装类 默认值 自动装箱与拆箱
byte Byte null 从 Java 5 开始支持
short Short null 从 Java 5 开始支持
int Integer null 从 Java 5 开始支持
long Long null 从 Java 5 开始支持
float Float null 从 Java 5 开始支持
double Double null 从 Java 5 开始支持
char Character null 从 Java 5 开始支持
boolean Boolean null 从 Java 5 开始支持

包装类的特点

  • 每个包装类都是 java.lang 包的一部分。
  • 提供静态方法 valueOfparseXXX,用于类型转换。
  • 支持自动装箱(Auto-boxing)和自动拆箱(Unboxing)。

包装类代码案例

package basics;

public class WrapperClassesExample {
    public static void main(String[] args) {
        // 自动装箱
        Integer intObj = 100; // int 自动转换为 Integer
        Double doubleObj = 3.14; // double 自动转换为 Double

        // 自动拆箱
        int intVal = intObj; // Integer 自动转换为 int
        double doubleVal = doubleObj; // Double 自动转换为 double

        // 手动转换
        Integer manualIntObj = Integer.valueOf(200); // 将 int 转换为 Integer
        int manualInt = manualIntObj.intValue(); // 将 Integer 转换为 int

        // 字符串与数值转换
        String str = "123";
        int parsedInt = Integer.parseInt(str); // 将字符串转换为 int
        String intToStr = Integer.toString(456); // 将 int 转换为字符串

        // 输出
        System.out.println("自动装箱: " + intObj);
        System.out.println("自动拆箱: " + intVal);
        System.out.println("手动装箱: " + manualIntObj);
        System.out.println("字符串转换为整数: " + parsedInt);
        System.out.println("整数转换为字符串: " + intToStr);
    }
}

代码注释:

  1. 自动装箱和拆箱极大地简化了基本数据类型与包装类之间的转换。
  2. Integer.parseIntInteger.valueOf 的区别:parseInt 返回基本类型,valueOf 返回包装类对象。

总结

基本数据类型与包装类的对比

特点 基本数据类型 包装类
存储方式 栈内存 堆内存
操作方式 高效,直接操作 灵活,支持更多功能
应用场景 高性能计算、简单变量存储 泛型类、集合框架等复杂操作

通过深入理解基本数据类型和包装类,可以为性能优化和代码灵活性找到平衡点。

去1:1私密咨询

系列课程: