Khi tôi cố gắng chuyển đổi một số Chuỗi Đối tượng boolean, kết quả sẽ khác.Đối tượng chuỗi thành Boolean
String strFlag="true";
boolean boolFlag = Boolean.getBoolean(strFlag);
boolFlag
kết thúc bằng giá trị false
.
Khi tôi cố gắng chuyển đổi một số Chuỗi Đối tượng boolean, kết quả sẽ khác.Đối tượng chuỗi thành Boolean
String strFlag="true";
boolean boolFlag = Boolean.getBoolean(strFlag);
boolFlag
kết thúc bằng giá trị false
.
Sử dụng Boolean.valueOf(String string) để archieve mục tiêu của bạn.
boolean boolFlag = Boolean.valueOf(strFlag);
Trả về một Boolean với một giá trị đại diện bởi các chuỗi xác định. Boolean trả về đại diện cho giá trị true nếu đối số chuỗi không phải là null và bằng nhau, bỏ qua trường hợp, với chuỗi "true".
Ví dụ: Boolean.valueOf("True")
trả về giá trị đúng.
Ví dụ: Boolean.valueOf("yes")
trả về sai.
Kể từ java 1.5 cũng có Boolean.parseBoolean(String s)
trả về kiểu nguyên thủy boolean
thay vì kiểu hộp Boolean
để dành một số chu kỳ CPU trong hầu hết các trường hợp.
nếu 'strFlag' chứa giá trị sai? – Mdhar9e
thì 'boolFlag' là sai.Vì 'boolean' chỉ có thể là true hoặc false, nó đủ để kiểm tra một trong số chúng, tùy thuộc vào những gì" mặc định "nên được. Đối với trình bao bọc 'Boolean' bạn sẽ đúng, vì nó có thể trở thành' null'. – devsnd
Hoặc chỉ 'boolean boolFlag =" true ".equalsIgnoreCase (strFlag);' – Jesper
Bạn có thể sử dụng
boolFlag = "true".equalsIgnoreCase(strFlag);
Nếu strFlag sẽ là 'null', điều này sẽ cho bạn' NullPointerException'. – devsnd
cảm ơn chỉnh sửa –
Sử dụng Boolean.valueOf
boolean boolFlag = Boolean.valueOf(strFlag);
Phương pháp này trả về một Boolean với một giá trị đại diện bởi các chuỗi xác định. Boolean trả về đại diện cho giá trị true nếu đối số chuỗi không phải là null và bằng nhau, bỏ qua trường hợp, với chuỗi "true".
ok .. tôi sẽ cố gắng với this.It dường như làm việc. – Mdhar9e
Sử dụng trình cài sẵn là một lựa chọn tốt hơn so với giải pháp của tôi. +1 – devsnd
nếu bạn đang lưu trữ trong một nguyên thủy, sau đó phân tích cú pháp là rất, rất nhanh hơn một chút (vì nó tránh unboxing), nhưng thời gian đó sẽ được lùn bởi thời gian phân tích ở mức nào, do đó, nó không phải là một vấn đề. – user439407
Boolean.getBoolean
xét nghiệm để xem nếu tài sản hệ thống nhất định là đúng, bạn muốn Boolean.parseBoolean
bạn có thể thả một đoạn mã hay không. – Mdhar9e
Cố gắng sử dụng Boolean.valueOf(strFlag)
Sử dụng Boolean.parseBoolean
boolean boolFlag = Boolean.parseBoolean(strFlag);
Phương pháp này trả về một boolean nguyên thủy kiểu. Nó hoạt động giống như Boolean.valueOf, không có chi phí unboxing.
Bạn có thể sử dụng sau đây
Boolean.getBoolean không làm những gì bạn nghĩ rằng nó. Đọc hướng dẫn. – Corbin
Tôi không chắc chắn, nhưng có lẽ nó phân biệt chữ hoa chữ thường? Nhân tiện, tại sao bạn không sử dụng 'Boolean.parseBoolean (string);'? – Leri
@PLB Đoán không được sử dụng nhiều, đặc biệt là các dự đoán không chính xác như thế này. OP nên đọc hướng dẫn như đã thông báo, và bạn nên làm như vậy. – EJP