programing

부울 객체를 Java 문자열로 변환하는 최선의 방법

firstcheck 2022. 9. 5. 23:50
반응형

부울 객체를 Java 문자열로 변환하는 최선의 방법

부울을 문자열 형식으로 변환하려고 합니다...

Boolean b = true;
String str = String.valueOf(b);

또는

Boolean b = true;
String str = Boolean.toString(b);

위 중 어떤 것이 더 효율적일까요?

성능 차이는 크지 않을 것 같지만 첫 번째 방법이 더 좋습니다.

를 가지고 있는 경우Boolean언급,Boolean.toString(boolean)던지다NullPointerException만약 당신이 언급한다면null. 참조가 개봉되면boolean메서드로 전달되기 전에.

하는 동안에,String.valueOf()method는 소스코드가 나타내듯이 명시적인가?null체크:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

다음 코드를 테스트합니다.

Boolean b = null;

System.out.println(String.valueOf(b));    // Prints null
System.out.println(Boolean.toString(b));  // Throws NPE

원시 부울의 경우 차이가 없습니다.

값이 다음 값이 아니라고 확신하는 경우null다음 세 번째 옵션을 사용할 수 있습니다.

String str3 = b.toString();

그리고 그 코드는

public String toString() {
    return value ? "true" : "false";
}

null-safe 사용을 원하는 경우String.valueOf(b)어떤 코드가

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

보시는 바와 같이 먼저 테스트합니다.null이후 호출toString()메서드를 지정합니다.


부르기Boolean.toString(b)호출하다

public static String toString(boolean b) {
    return b ? "true" : "false";
}

보다 조금 느리다b.toString()JVM이 먼저 개봉해야 하기 때문에 Boolean로.boolean그것은 의 논거로서 통용될 것이다.Boolean.toString(...),하는 동안에b.toString()재사용private boolean value에 참가하다.Boolean상태를 유지하는 객체.

public class Sandbox {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Boolean b = true;
        boolean z = false;
        echo (b);
        echo (z);
        echo ("Value of b= " + b +"\nValue of z= " + z);
    }

    public static void echo(Object obj){
        System.out.println(obj);
    } 

}
Result
--------------
true
false
Value of b= true
Value of z= false
--------------

이것이 "True" 또는 "TRUE"가 아닌 "True" 값을 일정하게 얻기 위한 목적이라면 다음을 사용할 수 있습니다.

Boolean.TRUE.toString();
Boolean.FALSE.toString();

디버깅 등의 빠른 방법을 찾고 있는 경우 빈 문자열을 부울에 연결하기만 하면 됩니다.

System.out.println(b+"");

다만, 생산용의 경우는 다른 방법을 사용하는 것을 강하게 추천합니다.이것은 디버깅에 도움이 되는 간단한 퀵솔루션입니다

"효율적"이라는 말이 무슨 뜻인지에 따라 다릅니다.퍼포먼스 면에서는 양쪽 버전이 같은 바이트 코드와 동일합니다.

$ ./javap.exe -c java.lang.String | grep -A 10 "valueOf(boolean)"
  public static java.lang.String valueOf(boolean);
    Code:
       0: iload_0
       1: ifeq          9
       4: ldc           #14                 // String true
       6: goto          11
       9: ldc           #10                 // String false
      11: areturn


$ ./javap.exe -c java.lang.Boolean | grep -A 10 "toString(boolean)"
  public static java.lang.String toString(boolean);
    Code:
       0: iload_0
       1: ifeq          9
       4: ldc           #3                  // String true
       6: goto          11
       9: ldc           #2                  // String false
      11: areturn

두 가지 방법이 모두 구현되어 있는 경우 동일한 것으로 나타납니다.

String.valueOf(b)

public static String valueOf(boolean b) {
        return b ? "true" : "false";
    }

Boolean.toString(b)

public static String toString(boolean b) {
        return b ? "true" : "false";
    }

따라서 두 방법 모두 똑같이 효율적입니다.

언급URL : https://stackoverflow.com/questions/18833054/best-approach-to-converting-boolean-object-to-string-in-java

반응형