2009-10-08 101 views

回答

416

嘗試(取決於你想要什麼樣的結果類型):

Boolean boolean1 = Boolean.valueOf("true"); 
boolean boolean2 = Boolean.parseBoolean("true"); 

優勢:

  • 布爾:這不會產生布爾的新實例,因此性能更好(少garbage-採集)。它重用了兩個實例Boolean.TRUEBoolean.FALSE
  • 布爾值:不需要實例,您使用原始類型。

官方文檔在Javadoc


更新:

自動裝箱也可以使用,但它有一個性能開銷。
我建議只有當你不得不自己施放時才使用它,而不是在施放時可以避免。

+0

不會將boolean.valueOf賦值給boolaen2自動拆箱嗎?我在這裏看不到parseBoolean的區別。 –

+6

最大的問題是,布爾在看到不應該接受的東西時不會例外。對於任何被視爲「真實」的東西,它都會返回true,並且將爲其他所有*返回false。如果您試圖強制將字符串匹配到適當的布爾值,則必須添加額外的邏輯以手動捕獲非法案例。 –

+0

如果我使用boolean boolean2 = Boolean.valueOf(「true」);' – vipin8169

18
Boolean b = Boolean.valueOf(string); 

如果字符串是不是一個空和等於true(忽略大小寫)的b的值是正確的。

77

你必須使用通過Boolean.valueOf(串)Boolean.parseBoolean(串)時要小心。其原因是,如果字符串不等於「true」(該情況被忽略),方法將始終返回false。

例如:

Boolean.valueOf("YES") -> false 

正因爲如此行爲,我會建議增加一些機制,以確保應翻譯爲布爾該字符串指定的格式。

例如:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) { 
    Boolean.valueOf(string) 
    // do something 
} else { 
    // throw some exception 
} 
+7

這是我見過的最好的例子,以及布爾類型應該以什麼開始實現。針對無效布爾值拋出異常對許多應用程序很重要。 –

+1

不,這不完全正確。 (s)= null)&& s.equalsIgnoreCase(「true」));}};}}}這裏是parseBoolean的底層實現 public static boolean parseBoolean(String s){ return((s!= null)&& s.equalsIgnoreCase(「true」)); } – electricalbah

18

除了KLE的出色答卷,我們還可以使事情更加靈活:

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") || 
     string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") || 
     string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") || 
     string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai"); 

(由zlajo的回答啓發... :-))

10
boolean b = string.equalsIgnoreCase("true"); 
-3

參觀http://msdn.microsoft.com/en-us/library/system.boolean.parse.aspx

這會讓你知道該怎麼做。

這是我從Java documentation得到:

方法詳細信息

parseBoolean

public static boolean parseBoolean(String s)

將字符串參數分析爲boolean值。返回的布爾值表示如果字符串參數不是null並且與字符串「true」相等(忽略大小寫),則值爲true。

參數:

s - 包含布爾表示的字符串進行解析

返回: 1.5

:由字符串參數

由於所表示的布爾

+1

儘管問題的文本並不明確,但這是一個關於Java的問題。至少它是這樣標記的。這個答案可能會讓人迷惑。 –

0

這是我做的:

"1##true".contains(string)

對於我來說,主要是1或真。我使用散列作爲分隔符。

-2

可以直接通過 系統類和訪問它的任何地方布爾值相當於設置爲任何字符串..

System.setProperty("n","false"); 
System.setProperty("y","true"); 

System.setProperty("yes","true");  
System.setProperty("no","false"); 

System.out.println(Boolean.getBoolean("n")); //false 
System.out.println(Boolean.getBoolean("y")); //true 
System.out.println(Boolean.getBoolean("no")); //false 
System.out.println(Boolean.getBoolean("yes")); //true 
2

得到一個字符串的布爾值,試試這個:

public boolean toBoolean(String s) { 
    try { 
     return Boolean.parseBoolean(s); // Successfully converted String to boolean 
    } catch(Exception e) { 
     return null; // There was some error, so return null. 
    } 
} 

如果有錯誤,它將返回null。 例子:

toBoolean("true"); // Returns true 
toBoolean("tr.u;e"); // Returns null 
+4

你有試過嗎? :)根據Javadoc的說法,'parseBoolean(String s)'不會引發異常。 – rapt

3
public static boolean stringToBool(String s) { 
     s = s.toLowerCase(); 
     Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes")); 
     Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no")); 

     if (trueSet.contains(s)) 
      return true; 
     if (falseSet.contains(s)) 
      return false; 

     throw new IllegalArgumentException(s + " is not a boolean."); 
    } 

我的方式將字符串轉換爲布爾值。

3
String[] values= new String[]{"y","Y","n","N","Yes","YES","yes","no","No","NO","true","false","True","False","TRUE","FALSE",null}; 
for(String booleanStr : values){ 
    System.out.println("Str ="+ booleanStr +": boolean =" +BooleanUtils.toBoolean(booleanStr)); 
} 

結果:

Str =N: boolean =false 
Str =Yes: boolean =true 
Str =YES: boolean =true 
Str =yes: boolean =true 
Str =no: boolean =false 
Str =No: boolean =false 
Str =NO: boolean =false 
Str =true: boolean =true 
Str =false: boolean =false 
Str =True: boolean =true 
Str =False: boolean =false 
Str =TRUE: boolean =true 
Str =FALSE: boolean =false 
Str =null: boolean =false 
+0

什麼是BooleanUtils? –

+0

org.apache.commons.lang3.BooleanUtils來自Apache commons Lang API。 – Dhana

0

爲什麼不使用正則表達式?

public static boolean toBoolean(String target) 
{ 
    if(target == null) return false; 
    return target.matches("(?i:^(1|true|yes|oui|vrai|y)$)"); 
} 
0

嗯,現在一月,2018年,這種情況的最好方法是使用Apache的BooleanUtils.toBoolean

這會將任何布爾類型的字符串轉換爲布爾值,例如,是,是,是,否,否,假等。

真的很方便!