2012-04-25 35 views
5

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.

+6

Boolean.getBoolean không làm những gì bạn nghĩ rằng nó. Đọc hướng dẫn. – Corbin

+1

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

+3

@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

Trả lời

8

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.

+0

nếu 'strFlag' chứa giá trị sai? – Mdhar9e

+1

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

+1

Hoặc chỉ 'boolean boolFlag =" true ".equalsIgnoreCase (strFlag);' – Jesper

3

Bạn có thể sử dụng

boolFlag = "true".equalsIgnoreCase(strFlag); 
+2

Nếu strFlag sẽ là 'null', điều này sẽ cho bạn' NullPointerException'. – devsnd

+0

cảm ơn chỉnh sửa –

10

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".

+0

ok .. tôi sẽ cố gắng với this.It dường như làm việc. – Mdhar9e

+0

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

+0

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

4

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

+0

bạn có thể thả một đoạn mã hay không. – Mdhar9e

3

Cố gắng sử dụng Boolean.valueOf(strFlag)

3

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.

Các vấn đề liên quan