a boolean
를 int
Java 로 변환하는 가장 널리 사용되는 방법은 무엇입니까 ?
답변
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;
}
}