Day7-21.Precedence

来源:互联网 发布:淘宝风力灭火机价格 编辑:程序博客网 时间:2024/06/03 20:52

当一个表达式中存在多个操作符时,操作符的优先级就决定了各部分的计算顺序。

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了。