優先級
當一個表達式中存在多個操作符時,操作符的優先級就決定了各部分的計算順序。Java對計算順序做了特別的規定。其中,最簡單的規則就是先乘除後加減。程序員經常會忘記其他優先級規則,所以應該用括號明確規定計算順序。例如,以下語句中的(1)和(2):
//:operators/precedence.java
public class Precedence {
public static void main(String[] args) {
int x = 1,y = 2,z = 3;
int a = x + y -2/2+z; //(1)
int b = x+(y-2)/(2+z); //(2)
System.out.println("a="+a+"b="+b);
}
}/*Output:
a = 5 b = 1
*///:~
這兩個語句看起來大體相同,但是從輸出就可以看出他們具有截然不同的含義,而這正是使用括號的結果。
請注意,System.out.println()語句中包含”+“操作符。在這種上下文環境中,”+“意味着”字符串連接“,並且如果必要,它還要執行”字符串轉換“。當編譯器觀察到一個String後面緊跟一個”+“,而這個後面又緊跟一個非String類型的元素時,就會嘗試着將這個非String類型的元素轉換爲String。正如在輸出中所看到的,它成功地將a和b從int轉換爲String了。