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ường | Kiểu | Mô tả |
FALSE | Boolean | Đối tượng Boolean đại diện cho false. |
TRUE | Boolean | Đối tượng Boolean đại diện cho true. |
TYPE | Class<Boolean> | Đối tượng Class cho kiểu nguyên thủy boolean. |
Các phương thức chính
| STT | Phươ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ức | Trả về | Cache? | Exception? |
parseBoolean(String) | primitive boolean | Không | Không |
valueOf(String) | Object Boolean | Có (TRUE/FALSE singleton) | Không |