检查“布尔"值“int"的结果类型

2022-01-19 00:00:00 logical-operators boolean int java

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

I'm learning Java, coming from C and I found an interesting difference between languages with the boolean type. In C there is no bool/ean so we need to use numeric types to represent boolean logic (0 == false).

我猜在 Java 中是行不通的:

I guess in Java that doesn't work:

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

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

Nor does changing the conditional via a typecast:

if ((boolean)i)

所以除了做类似的事情:

So besides doing something like:

if ( i != 0 )

还有其他方法可以对 int 类型进行 C-ish 逻辑检查吗?只是想知道是否有任何 Java 技巧允许对此类非布尔类型进行布尔逻辑.

Is there any other way to do a C-ish logic check on an int type? Just wondering if there were any Java tricks that allow boolean logic on non-boolean types like this.


上面的例子非常简单,而且思维范围很窄.当我最初问这个问题时,我也在考虑函数调用的非布尔返回.例如 Linux fork() 调用.它本身不返回 int,但我可以很好地使用数字返回值作为条件:


The example above was very simplistic and yields itself to a narrow scope of thinking. When I asked the question originally I was thinking about non-boolean returns from function calls as well. For example the Linux fork() call. It doesn't return an int per se, but I could use the numeric return value for a conditional nicely as in:

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

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

This allows me to process the code in the conditional for the child, while not doing so for the parent (or in case of negative return result for an error).

所以我目前还没有足够的 Java 知识来提供一个好的Java"示例,但这是我的初衷.

So I don't know enough Java to give a good "Java" example at the moment, but that was my original intent.

推荐答案

在Java中,

if ( i != 0 )

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

is the idiomatic way to check whether the integer i differs from zero.

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

If i is used as a flag, it should be of type boolean and not of type int.

相关文章