在Java中如何将布尔值转换为int?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (10)
  • 关注 (0)
  • 查看 (230)

在java中如何将boolean转换为int

提问于
用户回答回答于
int myInt = (myBoolean) ? 1 : 0;

PS:true=1和false=0

用户回答回答于

Boolean.compare(boolean, boolean)函数有一个默认值:假设两个值相等的话则返回0,如果不想等的话则返回-1

public int valueOf(Boolean flag) {
   return Boolean.compare(flag, Boolean.TRUE) + 1;
}

在错误匹配的情况下,布尔值默认会返回-1,所以可以通过+1来返回值,0代表false,1代表true

用户回答回答于

可以使用以下命令:

System.out.println( 1 & Boolean.hashCode( true ) >> 1 );  // 1
System.out.println( 1 & Boolean.hashCode( false ) >> 1 ); // 0
用户回答回答于

如果true -> 1false -> 0映射是你想要的,你可以使用以下代码:

boolean b = true;
int i = b ? 1 : 0; // assigns 1 to i.
用户回答回答于
import org.apache.commons.lang3.BooleanUtils;
boolean x = true;   
int y= BooleanUtils.toInteger(x);
用户回答回答于
if (something) {
    otherThing = 1;
} else {
    otherThing = 0;
}

或者是

int otherThing = something ? 1 : 0;

当存在同步和异步进程的时候,使用枚举会比布尔值更有效:

Process process = Process.SYNCHRONOUS;
System.out.println(process.getCode());

在Java中,枚举可以具有其他属性和方法:

public enum Process {

    SYNCHRONOUS (0),
    ASYNCHRONOUS (1);

    private int code;
    private Process (int code) {
        this.code = code;
    }

    public int getCode() {
        return code;
    }
}
用户回答回答于
public int boolToInt(boolean b) {
    return b ? 1 : 0;
}

用户回答回答于
boolean b = ....; 
int i = -("false".indexOf("" + b));
用户回答回答于

使用三元操作符是最简单、最有效和最易读的方法。

以下解决方案较为低效:

int boolToInt(Boolean b) {
    return b.compareTo(false);
}

从布尔值到int的转换一般是为了对这两个值进行比较(通常使用的是compareTo方法),在某些情况写也会使用Boolean#compareTo

Boolean#compare可以直接处理原语类型

int boolToInt(boolean b) {
    return Boolean.compare(b, false);
}
用户回答回答于

扫码关注云+社区