2015-10-05 42 views
-3

爲什麼我不能這樣做? 我明白,一個int和一個字符串或布爾,(真或假)的連接是可能的,但不是一個帶int的布爾加法。當u添加一個int型和布爾布爾與Int的連接

到底會發生什麼?爲什麼會顯示錯誤?

System.out.println(a.length() + a.startsWith("a")); 

我也明白,這個代碼的解決辦法是

System.out.println(""+a.length() + a.startsWith("a")); 

它採用串聯。當u添加一個int型和布爾

+0

這不是一個解決辦法。這是做你想做的事情的正確方法。 – zubergu

+0

「boolean」或「Boolean」和「int」應該做什麼沒有標準的定義。對於String而言,這只是一種方便的方法。 –

+0

@zubergu,使用'(「」+ a.lenght())'這不僅是一個錯誤的方式,它也是一個非常醜陋的解決方法。 –

回答

2

因爲+操作具有不同的功能。

在第一個例子,你嘗試號碼+布爾。這沒有意義,所以編譯器會給出錯誤。

在第二個例子中,你嘗試字符串+編號(這是允許作爲字符串 - concentation並返回一個字符串)。然後你嘗試字符串+布爾(這也是允許的)

+0

是的。當Java對兩個數字(整數,雙精度等)進行+運算時,Java知道你正在執行算術運算。當你有兩個字符串用於+操作時,Java也知道你正在執行一個串接。就像Denis說的那樣,Number + Boolean並不是立即顯而易見的,所以Java會拋出一個錯誤,指出您需要更加明確。 – shrmn

1

到底會發生什麼?爲什麼會顯示錯誤?

因爲沒有爲這些操作數定義+運算符。

0

使用Boolean.toString()靜態方法獲取布爾值的字符串表示:

Boolean.toString(a.startsWith("a"));