Java运算优先顺序问题

2025-02-27 21:09:59
推荐回答(3个)
回答1:

x+=x+(x=1)

等同于

x = x + x + (x = 1)

先不说优先顺序,计算机在计算时候都是从左往右计算的,每次计算前都会检查运算符的优先级

当从左开始时候

3 + 3 = 6

然后继续 ,碰见 + ( x = 1 ) 小括号,优先计算小括号里的,小括号里是赋值,结果为1,继续

6 + 1 = 7

所以最后 x= 7


===================================================


这样理解吧:


String str="a";
Object result = 1 + 1 + ( 1 + str );
System.out.println( result );

这个result结果是“21a”,这个就能说明它是从左往右扫描,逐步计算的

回答2:

肯定是括号优先啊 先算(x=1) 在算x+(x=1);最后算x+=x+(x=1) 不要以为x=1就改变的x在内存地址的值 其实内存地址的值还是3

回答3:

我的理解是 在表达式里面声明变量的赋值对于编译器的解释来说只是一个值的引用,就好像一个副本元素一样。