Java中不存在带下划线的基本数据类型,8种基本类型均为固定关键字:byte、short、int、long、float、double、char、boolean,全小写且不可加下划线;变量名可用下划线但类型声明严禁使用。

Java里没有“基本数据类型_”这种写法,下划线不是合法标识符组成部分,_ 不能出现在类型名或变量名中间——你看到的 基本数据类型_ 很可能是个命名错误、文档笔误,或是混淆了命名习惯(比如 IDE 自动生成的临时变量名加了后缀)。
Java 的 8 种基本数据类型名称是固定的
它们是语言关键字,全小写、无下划线、不可重命名:
-
byte、short、int、long -
float、double charboolean
任何带下划线的变体(如 int_、boolean_)都不是合法类型,编译会直接报错:error: cannot find symbol 或 error: illegal start of expression。
变量命名允许下划线,但类型声明绝对不允许
你可以用下划线命名变量(虽然不推荐),但类型本身必须写标准关键字:
立即学习“Java免费学习笔记(深入)”;
int count = 10; // ✅ 正确 int _count = 10; // ✅ 合法(但语义模糊,易被 lint 工具警告) int count_ = 10; // ✅ 合法(常见于避免关键字冲突,如 int class_ = 1) int int_ = 10; // ❌ 编译失败:'int_' 不是类型,编译器不认识
注意:int_ 是一个合法的变量名,但它前面如果写成 int_ x = 5;,编译器会认为你在调用一个叫 int_ 的方法或引用一个变量,而不是声明类型。
为什么有人会写“基本数据类型_”?常见混淆场景
这类写法通常出现在以下情况,需对症处理:
- IDE 自动生成代码时,把模板占位符(如
${type}_)没清理干净,直接粘贴进源码 - 从 Python/Go 等支持下划线分隔的命名风格迁移到 Java,误以为
long_long或uint_8是 Java 类型 - 阅读中文技术文档时,把标题“基本数据类型_详解”误解为代码片段(实际只是排版分隔符)
- 使用 Lombok 或注解处理器时,错误地把注解参数名(如
@FieldNameConstants(suffix = "_"))套用到类型声明上
正确声明和使用的最小可行示例
声明变量只需两要素:类型关键字 + 变量名。别加多余字符:
boolean isActive = true; char grade = 'A'; int score = 95; double price = 29.99; long fileSize = 1_073_741_824L; // 这里的下划线是数字字面量分隔符,仅限字面量,非类型名
注意最后一行:1_073_741_824L 中的 _ 是 Java 7+ 支持的**数字字面量分隔符**,只允许在数字中间,和类型名完全无关。
真正容易被忽略的是:基本类型没有父类,不能为 null,且包装类(如 Integer)和基本类型(int)在自动拆/装箱时可能引发 NullPointerException ——这比下划线拼写错误更隐蔽,也更常在线上出问题。










