[java] 문자열 객체를 부울 객체로 변환하는 방법?

String객체를 Boolean객체 로 변환하는 방법 ?



답변

원하는 결과 유형에 따라 시도하십시오.

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

이점:

  • 부울 : 새 부울 인스턴스를 만들지 않으므로 성능이 향상되고 가비지 수집이 줄어 듭니다. Boolean.TRUE또는 의 두 인스턴스를 재사용합니다 Boolean.FALSE.
  • 부울 : 인스턴스가 필요하지 않으며 기본 유형을 사용합니다.

공식 문서는 Javadoc에 있습니다.


업데이트 :

오토 박싱도 사용할 수 있지만 성능 비용이 있습니다.
캐스트를 피할 수 없을 때가 아니라 스스로 캐스팅해야 할 때에 만 사용하는 것이 좋습니다.


답변

Boolean.valueOf (string) 또는 Boolean.parseBoolean (string)을 사용할 때는주의해야합니다 . 그 이유는 String이 “true”가 아닌 경우 메소드가 항상 false를 리턴하기 때문입니다 (대소 문자는 무시 됨).

예를 들면 다음과 같습니다.

Boolean.valueOf("YES") -> false

이 동작 때문에 부울로 변환해야하는 문자열이 지정된 형식을 따르도록 메커니즘을 추가하는 것이 좋습니다.

예를 들어 :

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}


답변

Boolean b = Boolean.valueOf(string);

b문자열이 널이 아니고 true대소 문자를 무시 하면 값 은 true 입니다.


답변

KLE의 탁월한 답변 외에도 유연한 것을 만들 수 있습니다.

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") ||
        string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") ||
        string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") ||
        string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");

(zlajo의 답변에서 영감을 얻었습니다 … :-))


답변

boolean b = string.equalsIgnoreCase("true");


답변

글쎄, 2018 년 1 월 현재와 같이 가장 좋은 방법은 아파치를 사용하는 것 BooleanUtils.toBoolean입니다.

이렇게하면 문자열과 같은 부울이 부울로 변환됩니다 (예 : Y, 예, true, N, no, false 등).

정말 편리합니다!


답변

public static boolean stringToBool(String s) {
        s = s.toLowerCase();
        Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
        Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));

        if (trueSet.contains(s))
            return true;
        if (falseSet.contains(s))
            return false;

        throw new IllegalArgumentException(s + " is not a boolean.");
    }

문자열을 부울로 변환하는 방법.