Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Lớp Boolean trong Java

Lớp Boolean là wrapper class bao gói kiểu nguyên thủy boolean thành đối tượng. Chứa một trường đơn kiểu boolean.

Các trường static (Constants)

TrườngKiểuMô tả
FALSEBooleanĐối tượng Boolean đại diện cho false.
TRUEBooleanĐối tượng Boolean đại diện cho true.
TYPEClass<Boolean>Đối tượng Class cho kiểu nguyên thủy boolean.

Các phương thức chính

STTPhương thức & Mô tả
1 boolean booleanValue() - Trả về giá trị primitive boolean.
2 int compareTo(Boolean b) - So sánh: false < true. Trả về -1, 0, 1.
3 boolean equals(Object obj) - True nếu obj là Boolean cùng giá trị.
4 static boolean getBoolean(String name) - Đọc system property, true chỉ nếu property = "true" (case-insensitive).
5 int hashCode() - Mã băm: 1231 (true), 1237 (false).
6 static boolean parseBoolean(String s) - Parse string: true nếu equalsIgnoreCase("true"), ngược lại false.
7 String toString() - Trả về "true" hoặc "false".
8 static String toString(boolean b) - Static version.
9 static Boolean valueOf(boolean b) - Trả về Boolean.TRUE hoặc Boolean.FALSE (singleton).
10 static Boolean valueOf(String s) - Parse string, trả về TRUE/FALSE singleton.

Ví dụ 1: equals(), hashCode()

public class Demo {
    public static void main(String[] args) {
        Boolean val1 = Boolean.valueOf(true);
        Boolean val2 = Boolean.valueOf(true);
        
        boolean res = val1.equals(val2);
        System.out.println("Are both equal? = " + res); // true
        
        System.out.println("HashCode true: " + val1.hashCode());   // 1231
        System.out.println("HashCode false: " + Boolean.FALSE.hashCode()); // 1237
    }
}

Kết quả

Are both equal? = true
HashCode true: 1231
HashCode false: 1237

Ví dụ 2: parseBoolean, getBoolean, valueOf

public class Demo {
    public static void main(String[] args) {
        // parseBoolean: không ném exception, chỉ true/false
        System.out.println(Boolean.parseBoolean("true"));   // true
        System.out.println(Boolean.parseBoolean("True"));   // true
        System.out.println(Boolean.parseBoolean("FALSE"));  // false
        System.out.println(Boolean.parseBoolean("yes"));    // false
        System.out.println(Boolean.parseBoolean("1"));      // false
        System.out.println(Boolean.parseBoolean(null));     // false
        
        // valueOf: trả về singleton TRUE/FALSE
        Boolean b1 = Boolean.valueOf("true");
        Boolean b2 = Boolean.valueOf("false");
        System.out.println("b1 == Boolean.TRUE: " + (b1 == Boolean.TRUE));   // true
        System.out.println("b2 == Boolean.FALSE: " + (b2 == Boolean.FALSE)); // true
        
        // getBoolean: đọc system property
        // java -Dmy.flag=true MyClass
        System.out.println("my.flag = " + Boolean.getBoolean("my.flag"));
    }
}

Kết quả

true
true
false
false
false
false
b1 == Boolean.TRUE: true
b2 == Boolean.FALSE: true
my.flag = false

Ví dụ 3: So sánh Boolean (compareTo)

public class CompareDemo {
    public static void main(String[] args) {
        Boolean bTrue = Boolean.TRUE;
        Boolean bFalse = Boolean.FALSE;
        
        System.out.println("true compareTo false: " + bTrue.compareTo(bFalse));   // 1
        System.out.println("false compareTo true: " + bFalse.compareTo(bTrue));   // -1
        System.out.println("true compareTo true: " + bTrue.compareTo(bTrue));     // 0
    }
}

Lưu ý quan trọng

  • Không dùng new Boolean(...) - Deprecated từ Java 9. Luôn dùng Boolean.valueOf(...) để tận dụng singleton TRUE/FALSE.
  • parseBoolean không ném exception - bất kỳ string nào khác "true" (case-insensitive) đều trả về false.
  • getBoolean đọc system property (JVM argument -Dkey=value), không phải environment variable.
  • hashCode cố định: true=1231, false=1237 (theo spec).
  • Autoboxing/unboxing tự động chuyển đổi giữa boolean và Boolean.

So sánh parseBoolean vs valueOf(String)

Phương thứcTrả vềCache?Exception?
parseBoolean(String)primitive booleanKhôngKhông
valueOf(String)Object BooleanCó (TRUE/FALSE singleton)Không