2016-04-02 128 views
7

隨着下面的代碼示例爲什麼在第一次加入(1/2 + 1/2)打印0但第二加法打印00.爪哇整數加法與字符串

System.out.println(1/2+1/2+"=1/2+1/2"); 
System.out.println("1/2+1/2="+1/2+1/2); 

輸出:

0 = 1/2 + 1/2

1/2 + 1/2 = 00

+1

因爲它從左到右。第一個是'1/2',它是'0'(整​​數除法),然後'1/2'再次是0。所以'0 + 0 = 0',那麼它將把它連接到字符串'1/2 + 1/2'上。對於第二個,它將在字符串1/2 + 1/2 ='上再次進行concat(1/2)(1/2)爲0,然後再次爲下一個 – 3kings

回答

4

整型數學運算(中間體1通過INT 2劃分爲int 0,如果要一個浮點結果投下一個或兩者的1和2爲浮點類型)和操作順序第二個例子是String串聯。編譯器開啓到這

System.out.println(new StringBuilder("1/2+1/2=").append(1/2).append(1/2)); 

,然後你會得到

System.out.println(new StringBuilder("1/2+1/2=").append(0).append(0)); 
0

第一條語句 「的System.out.println(1/2 + 1/2 +」= 1/2 + 1/「);」打印0因爲從1/2獲得的整數值爲零。剩餘部分被丟棄,因爲1/2等於0.5,所以.5被丟棄。 第二條語句「System.out.println(」1/2 + 1/2 =「+ 1/2 + 1/2);」由於連接符號打印出00。在第二個語句中,第一個整數1顯示爲+1,因此語句實際上被讀作(+1/2 +1/2),這就是爲什麼它返回00. 如果第二個語句的設置如下所示:

System.out.println("1/2+1/2="+ (1/2+1/2)); 

輸出結果與第一條語句相同。

-2

java假定除法的結果是整數,因爲它的成員是整數。對於每個部門的浮動結果(0.5),除數或被除數應該是浮點類型float

System.out.println(「1/2 + 1/2 =」+(1/2.0 + 1/2.0 ));

0

表達式從左到右進行評估。在第一種情況下,它的確是int+int(即0),然後是int + "= String"這是String tmp = "0= String"。在另一種情況下,您有'「String =」+ int which becomes「String = int」to which you append one more int`。因此您可以打印字符串「0」和「0」。