2017-04-26 15 views
1

我想將我的布爾對象轉換爲String。以下哪一項是更好/正確的做法,爲什麼?在java中,哪一個更適合將對象轉換爲字符串「.toString()」或連接符+「」或「String.valueOf」?

boolean booleanValue = true; 
String strValue = Boolean.toString(booleanValue); 

boolean booleanValue = true; 
String strValue = booleanValue + ""; 

編輯

下面的答案提示我補充幾個

boolean booleanValue = true; 
String strValue = String.valueOf(booleanValue); 

和非基本數據類型,如Integer

Integer i = 10; 
String strValue = i.toString(); 

所以,最後我們有三種不同類型的Boolean.toString(),CONCAT與+String.valueOf()任何數據類型轉換爲String

+0

@ΦXocę웃eúpa:編輯過一樣..請檢查。 – Natasha

+0

它們是等效的。後者稱前者。 – EJP

回答

1

使用String.valueOf(booleanValue)Boolean.toString(booleanValue)因爲他們既簡潔又傳達清楚你想要什麼去做。避免將字符串與+ ""連接起來,因爲它稍微慢一些(儘管可以忽略),並且不會像其他兩個選項那樣表達意義。

+0

謝謝你的時間來解釋我。但是我想知道爲什麼用'+「」'連接字符串會讓它慢一點? – Natasha

+0

編譯器通常會生成一個'StringBuffer'並調用'.append()'方法來生成你的字符串,這會導致它比其他選項慢。你的第二個選項如下:'new StringBuffer()。append(booleanValue).append(「」)。toString()' –

1

前者可以執行得更快,而後者佔用更少的屏幕空間。

順便說一句,在你的程序的用戶界面中,普通人不應該看到真/假詞,所以第三種方法是將(booleanValue ? "yes" : "no")翻譯成合適的語言。或開/關或啓用/禁用或可見/隱藏,等

+0

Illing:是的,這是很好的方式。但我想知道'前者將如何更快執行'? – Natasha

+0

似乎「+」運算符在「StringBuilder」的幫助下在內部工作,所以它比另一個慢一點。參考:http://stackoverflow.com/a/5464427/6680585 – Natasha

1

給下面的例子:

// One 
String value = Integer.toString(someValue); 

// Two 
String value = someValue + ""; 

// let me add Three 
String value = String.valueOf(someValue); 

我會建議將String.valueOf的使用()。原因是這個調用沒有明確包含參數的類型,所以如果後面的從int更改爲doubleboolean,則不需要修改代碼。

第二我會把它解決出來,因爲隱式地創建一個StringBuilder並附加組件。

我猜#1相比,#3只快一點,所以我留在3

1

在你所提到的兩個選擇,去的第一個用於生產。

僅將第二個選項用於調試。 例如,您想要應用打印語句來顯示任何特定方法的輸出。

除了上述兩個選項,你可以去String.valueOf(boolean_obj)方法。 優點在於,如果布爾對象具有null分配給它,它將被分配爲空字符串,在使用Boolean.toString(boolean_obj)時它將拋出NullPointerException

相關問題