当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。
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了。