检查“int”类型的“布尔”结果

2022-09-01 07:25:37

我正在学习Java,来自C,我发现语言与类型之间存在有趣的差异。在C中没有/,因此我们需要使用数值类型来表示布尔逻辑()。booleanboolean0 == false

我猜在Java中这不起作用:

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

通过类型转换更改条件也不起作用:

if ((boolean)i)

因此,除了做这样的事情之外:

if ( i != 0 )

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


编辑:
上面的例子非常简单,并且屈服于狭隘的思维范围。当我最初提出这个问题时,我也在考虑函数调用的非布尔返回。例如,Linux 调用。它本身不返回,但我可以使用数字返回值作为条件,如:fork()int

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

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

因此,我目前还没有足够的Java知识来给出一个好的“Java”示例,但这是我的初衷。


答案 1

在爪哇,

if ( i != 0 )

是检查整数是否与 不同的典型方法。izero

如果 用作标志,则它应该是 类型而不是 类型 。ibooleanint


答案 2

为什么不使用类型?这将按预期工作,而不会有潜在问题的整数/布尔合并。boolean

private boolean isValid;
...
if (!isValid) {
   ...
}

请注意,这是惯用的 Java 方法。第三方库使用它,您的API的消费者也会使用它并期望它。我希望你用来给你的libs,因此它只是你对待.booleansintsbooleans