检查“int”类型的“boolean”结果

新手上路,请多包涵

我正在学习 Java,来自 C,我发现 boolean 类型的语言之间存在一个有趣的区别。在 C 中没有 bool / ean 所以我们需要使用数字类型来表示布尔逻辑( 0 == false )。

我猜在 Java 中是行不通的:

 int i = 1;
if (i)
    System.out.println("i is true");

也不会通过类型转换改变条件:

 if ((boolean)i)

所以除了做类似的事情:

 if ( i != 0 )

有没有其他方法可以对 int 类型进行 C-ish 逻辑检查?只是想知道是否有任何 Java 技巧允许像这样的非布尔类型上的布尔逻辑。


编辑:

上面的例子非常简单,让自己陷入了狭隘的思维范围。当我最初问这个问题时,我也在考虑函数调用的非布尔返回。例如 Linux fork() 调用。它本身不返回 int ,但我可以很好地使用数字返回值作为条件,如下所示:

 if( fork() ) {
    // do child code

这允许我在条件中为孩子处理代码,而不是为父母这样做(或者在错误返回结果为负的情况下)。

所以目前我对 Java 的了解还不够多,无法给出一个好的“Java”示例,但这是我的初衷。

原文由 Mike 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 496
2 个回答

在爪哇,

 if ( i != 0 )

是检查整数 i 是否不同于 zero 的惯用方法。

如果 i 用作标志,它应该是 boolean 类型而不是 int 类型。

原文由 NPE 发布,翻译遵循 CC BY-SA 3.0 许可协议

尝试来自 Apache common-lang 的 BooleanUtils

   BooleanUtils.toBoolean(0) = Boolean.FALSE
  BooleanUtils.toBoolean(1) = Boolean.TRUE
  BooleanUtils.toBoolean(2) = Boolean.TRUE

原文由 Tioma 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题