2015-12-06 18 views
0

我剛剛在Android Studio中嘗試了幾件事情,下面的代碼片段沒有編譯器或運行時錯誤,並給出了正確的答案。Android Studio(Java的).setText方法現在使用混合參數

cmessage1.setText(AppData.hcptotal + 2.3/7 + " HCP"); 

Appdata.hcptotal與10 的文本顯示的值的一個整數作爲10.32857142857143 HCP所以這種方法的setText是允許整數和加倍到被混合在一起,並參與在數學計算中,並用串混合!我不知道這是可能的。官方文件似乎並未表明這是允許的。此網站上的其他帖子表明the.setText方法參數必須是一個字符串。

任何人都可以在這個非常多才多藝(和新?

+0

參數在傳遞給方法之前變成一個字符串。 'int'通過自動裝箱變爲'Integer',然後調用toString()。這在java中非常常見。 – csmckelvey

+0

因爲你的表達式中有字符串,結果也是字符串,它不是與android studio相關的東西,這是因爲字符串連接是這樣工作的。 – dtx12

+0

我不明白,dtx12。你說這是因爲表達式中有一個字符串,它允許你連接一個字符串到浮點計算的結果。你是否因此說如果我刪除了+「HCP」,它將無法工作? –

回答

0

setText()方法允許CharSequence變量參數。 CharSequence是一個任意的變量類型。因此,它可以是Double,String,Float等,但該方法會自動將這些值全部轉換爲一個CharSequence變量(CharSequence VS String in Java)。在這種方法中將所有這些多個變量類型混合在一起時,它幾乎會自動認爲它是一個CharSequence。

+0

謝謝,Mekkah08。如果參數是0.333 +「HCP」,並且它將0.333轉換爲「0.333」,我會理解它。但是通過接受一個浮點計算,評估它,然後將答案轉換爲一個字符串,超出了這個範圍。我也嘗試刪除+「HCP」。當我這樣做時,我得到一個編譯器錯誤「無法解析方法'setText(double)'」。這支持dtx12的斷言,它的工作原理與此相同,因爲參數中有一個字符串。如果參數是一個複雜的數學表達式,只要給它添加+「」,它就可以工作。非常神奇。 –

+0

我進一步發現,如果x是一個整數並且y是一個double,那麼: –

+0

實際上,再次查看您的代碼語句,這非常驚人。通過在方法參數字段中取出「HCP」字符串,似乎不滿足參數字段中存在最少字符串的條件。 – Mekkah08