[java] Java에서 부울을 int로 변환

a booleanintJava 로 변환하는 가장 널리 사용되는 방법은 무엇입니까 ?



답변

int myInt = myBoolean ? 1 : 0;

^^

PS : true = 1 및 false = 0


답변

int val = b? 1 : 0;


답변

삼항 연산자를 사용하는 것은 원하는 것을 수행하는 가장 간단하고 효율적이며 읽기 쉬운 방법입니다. 이 솔루션을 사용하는 것이 좋습니다.

그러나 나는 대안 적이며, 고 안되고, 비효율적이며 읽을 수없는 대안을 제안하는 것에 저항 할 수 없다.

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

이봐, 사람들은 멋진 답변에 투표하고 싶어!

편집하다

그건 그렇고, 나는 종종 두 가지 값 (일반적으로 compareTo방법 구현에서 )을 비교하기위한 목적으로 부울에서 int로 변환하는 것을 종종 보았습니다 . Boolean#compareTo그러한 특정한 경우에가는 길입니다.

편집 2

Java 7은 기본 유형과 직접 작동하는 새로운 유틸리티 기능을 도입했습니다 Boolean#compare(감사합니다 shmosel ).

int boolToInt(boolean b) {
    return Boolean.compare(b, false);
}


답변

boolean b = ....;
int i = -("false".indexOf("" + b));


답변

public int boolToInt(boolean b) {
    return b ? 1 : 0;
}

단순한


답변

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;

그러나 때로는 부울 플래그 대신 Enum을 사용하는 것이 유용합니다. 동기식 및 비동기식 프로세스가 있다고 상상해보십시오.

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

Java에서 enum은 추가 속성 및 메소드를 가질 수 있습니다.

public enum Process {

    SYNCHRONOUS (0),
    ASYNCHRONOUS (1);

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

    public int getCode() {
        return code;
    }
}