Java에서 부울을 int로 변환
가장 일반적인 변환 방법은 무엇입니까?boolean
에 대해서int
자바어?
int myInt = myBoolean ? 1 : 0;
^^
PS : true = 1 및 false = 0
int val = b? 1 : 0;
3진 연산자를 사용하는 것이 가장 간단하고 효율적이며 원하는 작업을 수행하는 가장 읽기 쉬운 방법입니다.저는 당신이 이 솔루션을 사용할 것을 권장합니다.
하지만, 나는 대체적이고, 교묘하고, 비효율적이고, 읽기 어려운 해결책을 제안하지 않을 수 없다.
int boolToInt(Boolean b) {
return b.compareTo(false);
}
야, 사람들은 그런 멋진 대답에 투표하기를 좋아해!
편집
덧붙여서, 나는 종종 부울에서 int로 변환하는 것을 보았다. 두 값의 비교를 하기 위한 유일한 목적(일반적으로, 구현에서)을 위해서입니다.compareTo
메서드). 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);
Apache Commons Lang(많은 프로젝트에서 사용하는 것 같습니다)을 사용하면 다음과 같이 사용할 수 있습니다.
int myInt = BooleanUtils.toInteger(boolean_expression);
toInteger
method는 1을 반환합니다.boolean_expression
true 입니다.그렇지 않으면 0 입니다.
그건 상황에 따라 다르죠.대부분의 경우 이해하기 쉽기 때문에 가장 간단한 접근법이 가장 좋습니다.
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;
}
}
한다면true -> 1
그리고.false -> 0
필요한 것은 매핑입니다.다음 작업을 수행할 수 있습니다.
boolean b = true;
int i = b ? 1 : 0; // assigns 1 to i.
난독화하려면 다음 명령을 사용합니다.
System.out.println( 1 & Boolean.hashCode( true ) >> 1 ); // 1
System.out.println( 1 & Boolean.hashCode( false ) >> 1 ); // 0
가지고 장난을 치자Boolean.compare(boolean, boolean)
. 함수의 기본 동작: 두 값이 모두 반환되는 값보다 같을 경우0
그렇지않으면-1
.
public int valueOf(Boolean flag) {
return Boolean.compare(flag, Boolean.TRUE) + 1;
}
설명:Boolean.compare의 기본 반환값은 불일치 시 -1이므로 +1은 다음 기간 동안 0으로 반환됩니다.False
의 경우는 1 입니다.True
public static int convBool(boolean b)
{
int convBool = 0;
if(b) convBool = 1;
return convBool;
}
다음으로 다음을 사용합니다.
convBool(aBool);
언급URL : https://stackoverflow.com/questions/3793650/convert-boolean-to-int-in-java
'programing' 카테고리의 다른 글
[BootstrapVue warn]: 팝오버 - 문서에서 대상 요소를 찾을 수 없습니다. (0) | 2022.07.31 |
---|---|
최적의 자동 완성/제안 알고리즘, 데이터베이스 [C++/C] (0) | 2022.07.31 |
계산된 속성 및 Vuex (0) | 2022.07.31 |
이미지를 vuex에 저장할 수 있습니까?한번 해볼까? (0) | 2022.07.31 |
uint32_t 및 size_t의 printf 형식 지정자 (0) | 2022.07.31 |