2017-09-17 83 views
-4

enter image description here 爲什麼("bc" + 2 + 3)有兩個不同的答案?和(2 + 3 + "bc")我只改變"bc"32順序,但系統會給出完全不同的答案爲除提前爲什麼會有兩個不同的結果?

感謝

+4

由於評估的順序 – UnholySheep

+0

請提供[MCVE],例如工作代碼示例和示例輸出。 – juzraai

+0

請編輯您的問題並複製/粘貼代碼和輸出,而不是截圖。索引將變得更容易。 –

回答

3

+作品既作爲算術以及連接運算符。所有的表達式都是從左到右執行的。因此,在2 + 3 + "bc"的情況下,它首先添加2和3作爲算術運算符,然後當它在一側找到字符串並且在那時找到其他字符時,它將作爲連接運算符。

0

當使用+將任何東西添加到字符串時,Java將它視爲將該東西連接到字符串。

讓我們來看看每種情況。

"bc" + 2 + 3 

+是左結合,這意味着2個最左邊的操作數被第一評價。在這種情況下,它是"bc" + 2。這評估爲"bc2"。然後我們評估"bc2" + 3,產生"bc23"

2 + 3 + "bc" 

兩個最左邊的操作數被第一評價:2 + 3計算結果爲5。這是因爲存在在表達無字符串。 +執行數學加法。然後我們評估5 + "bc",產生"5bc"

0

Java正在從左向右讀取您的操作。如果第一個變量是一個字符串,其餘的值將連接到它。在第二種情況下,您必須先編號,然後將其與總結,然後將該值與以下字符串連接起來。這將得出結果:第一種情況:「bc23」和第二種情況「23bc」。

0

在你的情況下,如果你將字符串值放在第一個Java中,將把所有的值作爲字符串處理,除非前兩個值是可計算的。
這裏是幫助你理解基本概念的示例代碼。

public static void main(String[] args) { 
    // TODO code application logic here 
    System.out.println("bc"+2+3); //bc23 
    System.out.println("bc"+(2+3)); //bc5 
     System.out.println(2+3+"bc"); //5bc 
     System.out.println(2+3+"bc"+2+3); //5bc23 
     System.out.println("bc"+2+3==2+3+"bc");// false 

    } 

enter image description here

相關問題