java有8种基本数据类型,分为整数型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean),直接存储值,效率高;引用类型存储对象地址,包括类、接口、数组等。

Java 数据类型是程序运行的底层支撑,理解它们不是背表格,而是搞清“存什么、怎么存、为什么这么存”。核心就两点:基本类型直接存值,引用类型存地址;类型定死,不可隐式越界。
八种基本数据类型怎么选
选对类型直接影响内存、精度和可读性:
- 整数运算优先用 int:32 位够用、JVM 优化好、无额外装箱开销;除非明确要节省内存(如百万级 byte 数组)或处理超大数(如时间戳、ID),才考虑 byte/short/long
- 浮点计算慎用 float:单精度误差大,金融、科学计算一律用 double;真要高精度必须上 BigDecimal,别信 float/double 能精确表示 0.1
- 字符用 char,文本用 String:char 是 16 位 Unicode 码元(不是字节),只能存一个字符;字符串拼接、查找、编码转换全靠 String 及其工具类
- boolean 就是 true/false:不参与算术运算,不转 0/1;JVM 内部可能用 4 字节存储,但语义上它没有大小概念
基本类型和包装类的关系
int 是栈上 4 字节值,Integer 是堆上对象。自动装箱(int → Integer)和拆箱(Integer → int)看似方便,实则暗藏陷阱:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- 集合(List、Map)、泛型、反射只接受引用类型,所以必须用 Integer 而非 int
- == 比较要小心:Integer a = 100, b = 100 → a == b 为 true(缓存 -128~127);但 Integer c = 200, d = 200 → c == d 为 false(超出缓存,新建对象);永远用 equals() 判等
- 空指针风险:Integer e = null; int f = e; → 运行时 NullPointerException
引用类型不只是“对象”
String、数组、自定义类、接口、枚举都属引用类型,但行为差异大:
- String 不可变:每次拼接都生成新对象,大量字符串操作用 StringBuilder
- 数组长度固定:声明时即确定,不能扩容;[] 是类型的一部分,int[] 和 int[][] 类型不同
- 枚举是类的语法糖:每个枚举常量都是该类的静态 final 实例,自带 name()、ordinal(),还能加字段和方法
- 接口不是类,但可实例化(通过 lambda 或匿名内部类):如 Runnable r = () -> System.out.println("ok");
类型转换的边界在哪
Java 强制类型安全,转换必须显式且合理:
- 自动提升只发生在算术表达式中:byte b = 1; int i = b + 2; → b 自动转 int;但 byte b2 = b + 2; 编译失败(结果是 int,需强转)
- 强转可能丢精度或溢出:double d = 123.999; int i = (int) d; → 得 123(截断,非四舍五入);int j = (int) 3e9; → 溢出成负数
- 字符串转数字用包装类方法:Integer.parseInt("123"),不是 new Integer("123")(已弃用);注意 NumberFormatException
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










