java中boolean与int不可直接强转,必须通过三元运算符(如flag?1:0)或非零判断(如num!=0)转换;需注意boolean包装类的null安全处理。

Java 中 boolean 和 int 不能直接强转,必须通过逻辑判断或条件表达式实现转换。这是语言设计决定的——boolean 表示逻辑真/假,int 表示数值,二者语义不同,编译器禁止隐式或强制类型转换。
boolean 转 int:用三元运算符映射 true→1、false→0
这是最常用、最清晰的方式:
-
int value = flag ? 1 : 0; - 不建议用数组索引(如
new int[]{0, 1}[flag ? 1 : 0]),可读性差且有额外开销。
int 转 boolean:用非零判断,即 num != 0
Java 中约定:
-
0对应false - 所有非零值(包括负数,如
-1、100)都对应true
所以直接写: -
boolean flag = num != 0;
避免写num == 1,否则2、-5等都会被误判为false。
注意包装类 Boolean 和 null 的情况
如果用的是 Boolean(引用类型,可为 null):
-
Boolean b = null; int i = b != null && b ? 1 : 0;—— 需先判空,否则会 NPE -
int i = Optional.ofNullable(b).map(x -> x ? 1 : 0).orElse(0);是更安全的写法(适合复杂逻辑)
别踩这些坑
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- ❌
int i = (int) someBoolean;→ 编译报错 - ❌
boolean b = (boolean) 1;→ 编译报错 - ❌
boolean b = 1 == true;→ 编译报错(true 是布尔字面量,不能和 int 比较) - ❌ 把
int转boolean时只检查== 1,忽略负数和大于 1 的情况
不复杂但容易忽略。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










