java字符串连接和运算符优先级

源代码:
public class EnumTest {

public static void main(String[] args) {  
    int x = 100;  
    int y = 200;  
    
    System.out.println("x+y=" + y + x + y);  
    System.out.println(x + y + "=x+y");  
}  

}
程序输出:
x+y=200100200
300=x+y
未曾见过的代码.
原因:

System.out.println("x+y=" + y + x + y);
在这条语句中,字符串 "x+y=" 会被作为字符串,后面的 + 运算符会执行字符串连接。
按照运算符优先级,从左到右的顺序进行字符串连接:
首先 "x+y=" + y 的结果为 "x+y=200"
然后再连接 + x,结果为 "x+y=200100"
最后连接 + y,结果为 "x+y=200100200"
所以,输出为:
x+y=200100200

System.out.println(x + y + "=x+y");
在这一条语句中,x + y 会首先被计算,因为运算符 + 具有更高的优先级(数值加法优先于字符串连接)。
因此,x + y 的结果是 100 + 200,即 300。
接下来,这个结果与字符串 "=x+y" 连接:
300 + "=x+y" 的结果为 "300=x+y"。
所以,输出为:
300=x+y

posted @ 2024-09-28 20:43  3jingsh0u  阅读(36)  评论(0)    收藏  举报