Java有8种基本数据类型,分整数、浮点、字符、布尔四类;String和数组是引用类型,不可用==比较内容或声明时指定长度;类型转换需注意自动提升与强制转换的规则及溢出风险。

Java 数据类型是编程的起点,选对类型、用对方式,代码才不容易出错、运行才更高效。初学者常卡在 byte 和 int 该怎么选、float 为什么不能直接比较、String 为什么不能用 == 判等这些细节上——其实背后都有明确规则。
8 种基本数据类型怎么选
Java 只有 8 种基本类型,分四类:整数、浮点、字符、布尔。不用死记范围,重点看使用场景:
-
整数:日常计数、循环变量、ID 用
int(最常用);时间戳、大文件大小用long(必须加L后缀);状态标记、网络协议字段可考虑byte(范围 -128 ~ 127);short基本不用,除非兼容旧系统 -
浮点:精度要求不高(如价格显示)可用
float(必须带f),但推荐统一用double(默认类型,精度更高);注意0.1f == 0.1是false,浮点数别直接用==比较 -
字符与布尔:
char存单个 Unicode 字符(如'中'、'\n'),不是字符串;boolean只能是true或false,不能和数字互转
字符串和数组不是基本类型
String 是引用类型,不是基本类型——这点常被忽略。它不可变,内容比较必须用 .equals(),而不是 ==(后者比的是内存地址)。
数组也是引用类型,声明时不能写长度:int[] arr; 正确,int[5] arr; 错误。创建后长度固定,索引从 0 开始,最大合法下标是 arr.length - 1。访问 arr[5](而长度只有 5)会抛 ArrayIndexOutOfBoundsException。
立即学习“Java免费学习笔记(深入)”;
- 静态初始化:
String[] names = {"Tom", "Jerry"}; - 动态初始化:
int[] scores = new int[3];→ 元素自动为0 - 二维数组本质是一维数组的数组,
int[][] grid = new int[3][4];表示 3 行 4 列
类型转换的常见坑
自动转换只发生在小类型→大类型(如 byte → int → long → double),反过来必须强制转换,且可能丢数据:
-
int x = 130; byte b = (byte) x;→ 结果是-126(溢出回绕) - 混合运算时,
byte + byte结果是int,需强转才能赋给byte - 整数字面量默认是
int,赋值给short或byte要么在范围内(编译器允许),要么加强转 - 浮点字面量默认是
double,赋给float必须加f,否则编译报错
实战练习建议方向
光看不练容易忘,建议从这几类小题入手,边写边验证:
- 判断语句输出:
int a = 128; byte b = (byte) a; System.out.println(b);→ 理解溢出 - 字符串比较:
String s1 = "abc"; String s2 = new String("abc"); System.out.println(s1 == s2); System.out.println(s1.equals(s2));→ 区分引用与内容 - 数组越界模拟:
int[] arr = {1,2,3}; System.out.println(arr[3]);→ 观察异常信息 - 类型提升验证:
byte x = 1, y = 2; byte z = x + y;→ 编译失败,改写成byte z = (byte)(x + y);


















