programing

Java에서 부울을 int로 변환

newsource 2022. 7. 31. 23:06

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); 

toIntegermethod는 1을 반환합니다.boolean_expressiontrue 입니다.그렇지 않으면 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