隨着下面的代碼示例爲什麼在第一次加入(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/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通過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));
第一條語句 「的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));
輸出結果與第一條語句相同。
java假定除法的結果是整數,因爲它的成員是整數。對於每個部門的浮動結果(0.5),除數或被除數應該是浮點類型float
System.out.println(「1/2 + 1/2 =」+(1/2.0 + 1/2.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」。
因爲它從左到右。第一個是'1/2',它是'0'(整數除法),然後'1/2'再次是0。所以'0 + 0 = 0',那麼它將把它連接到字符串'1/2 + 1/2'上。對於第二個,它將在字符串1/2 + 1/2 ='上再次進行concat(1/2)(1/2)爲0,然後再次爲下一個 – 3kings