[자바] 부울 값을 정수 값으로 변환하기

2023. 4. 3. 19:44프로그래밍

728x90

https://www.baeldung.com/java-boolean-to-int

 

1. 개요

이 자습서에서는 부울 값을 int 값으로 변환하는 방법을 배울 것입니다. 먼저 Java가 이 두 가지 기본 데이터 유형을 처리하는 방법을 살펴보겠습니다. 그런 다음 우리는 부울을 정수로 변환하는 여러 가지 방법을 살펴볼 것입니다.

 

2. 데이터 유형들

Java에서 정수는 원시 데이터 유형, int 또는 Integer 래퍼 클래스로 나타낼 수 있습니다. 원시 데이터 유형은 2의 보수 인코딩 방법으로 표시되는 32비트 부호 있는 정수입니다. Integer 클래스는 부호 없는 정수 연산을 수행할 뿐만 아니라 정수(기본) 값을 제네릭과 함께 사용할 객체로 처리할 수 있도록 하는 래퍼 역할을 수행합니다.

 

반면.

부울 값은 메모리 상 특정 크기를 가지지 않지만 기본적으로 운영 체제 및 JVM(Java Virtual Machine)가 이에 대한 기본 크기를 가지고 있습니다.

마찬가지로 Java의 모든 원시 데이터 유형과 마찬가지로 boolean에는 boolean 값이 객체처럼 작동하도록 허용하는 Boolean 래퍼 클래스가 있습니다.

 

우리는 두 데이터 유형(부울 및 int)의 기본 값과 래퍼 클래스를 활용하여 데이터 변환을 수행할 수 있습니다. true 및 false 부울 값이 각각 1과 0을 나타낸다고 가정해 본다면, 우리는 변환을 만들어내는 여러 접근 방식이 있을 것임을 알 수 있습니다.

 

3. 원시 boolean 값을 int로

기본 boolean 값을 int로 변환하기 위해서 우리는 식의 조건을 평가하여 반환하기 위한 정수를 결정합니다.

public int booleanPrimitiveToInt(boolean foo) {
    int bar = 0;
    if (foo) {
        bar = 1;
    }
    return bar;
}
 

삼항 연산자를 이용하면, 이 함수를 단순화할 수 있습니다.

public int booleanPrimitiveToIntTernary(boolean foo) {
    return (foo) ? 1 : 0;
}
 

이 접근 방식은 반환 되는 값을 원시 데이터 유형(부울 및 int)으로 사용 하였습니다. 결과적으로 부울 표현식이 참일 때 1을 얻고 그렇지 않으면 메서드는 0을 반환합니다.

 

4. 래퍼 클래스

래퍼 클래스, Boolean을 사용하여 우리는 이러한 변환을 수행하는 몇 가지 접근 방식을 만들어 볼 수 있습니다:

public static int booleanObjectToInt(boolean foo) {
    return Boolean.compare(foo, false);
}
 

Boolean 클래스의 정적 메서드를 활용할 수 있습니다.

Boolean 객체에서 직접 메서드를 호출할 수도 있습니다.

 

4.1. 정적 메서드들

Boolean 클래스에는 다음과 같이 사용할 수 있는 compare 메서드가 있습니다:

public static int booleanObjectToIntInverse(boolean foo) { 
    return Boolean.compare(foo, true) + 1;
}
 

static compare 메서드는 두 인수가 동일한 값을 갖는 경우 0을 반환한다는 점을 기억합시다. 즉, foo가 거짓이면 비교 결과는 0이 됩니다. 그렇지 않으면 함수는 첫 번째 인수가 참이고 두 번째 인수가 거짓이면 1을 반환합니다.

 

마찬가지로 동일한 정적 메서드를 사용하여 두 번째 인수를 true로 변경할 수 있습니다.

public static int booleanObjectToIntInverse(boolean foo) { 
    return Boolean.compare(foo, true) + 1;
}
 

이번에는 foo가 참이면 compare 메서드는 동일한 값의 두 인수를 평가하여 결과가 0이 됩니다. 하지만 결과에 1을 더하면 원하는 참 부울 변수로 정수 값을 반환 할 것입니다.

 

4.2. Boolean 클래스 객체

Boolean 클래스 객체에는 다음과 같이 사용할 수 있는 compareTo와 같은 함수를 가지고 있습니다:

public static int booleanObjectMethodToInt(Boolean foo) {
    return foo.compareTo(false);
}
 

booleanObjectMethodToInt 메서드를 사용하면 정적 메서드에서 했던 것과 비슷한 방식으로 부울 값을 정수로 변환할 수 있습니다. 마찬가지로 인수를 true로 변경하고 결과에 1을 추가하여 반전된 버전으로 적용해 볼수도 있을 것입니다.

 

5. Apache Commons

Apache Commons는 BooleanUtils와 같은 유틸리티 클래스를 제공하는 널리 사용되는 Java용 오픈 소스 라이브러리입니다. 다음과 같이 Maven에서 종속성으로 라이브러리를 추가할 수 있습니다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>
 

라이브러리가 pom.xml 파일에 명시되어 있으면 BooleanUtils 클래스를 사용하여 boolean 값을 정수로 변환할 수 있습니다:

public static int booleanUtilsToInt(Boolean foo) {
    return BooleanUtils.toInteger(foo);
}
 

예제 메서드 booleanPrimitiveToIntTernary와 마찬가지로 내부적으로 toInteger 메서드는 동일한 삼항 연산자를 수행하여 변환을 수행합니다.

 

6. 결론

이 자습서에서는 boolean을 정수 값으로 변환하는 방법을 배웠습니다. 

true가 1로 변환되고 false가 0으로 변환된다고 가정하고 이 변환을 달성하기 위해 다양한 구현 결과를 만들어 보았습니다.

 

항상 그렇듯이 이 기사의 전체 코드 샘플은 GitHub에서 찾을 수 있습니다.

 

https://github.com/eugenp/tutorials/tree/master/core-java-modules/core-java-numbers-4

 

GitHub - eugenp/tutorials: Just Announced - "Learn Spring Security OAuth":

Just Announced - "Learn Spring Security OAuth": . Contribute to eugenp/tutorials development by creating an account on GitHub.

github.com

 

이상.

728x90