java改变x的值_Java中关于x++与++x在运算中值的变化

首先(x++)+1中的小括号毫无意义,小括号并不会改变++运算的优先级,

对表达式自增运算符加括号绝大部分是因为需要进行代码的格式化,

并告诉java++应该是如何被解释的,否则x+++x只会有一种解释方式。但要注意是否该自增变量的后一表达式元素是否为常量。

如都为变量+++就存在2种情况。

其次,x+++1,也只能进行x++ + 1 这种分割,++1是不行的,常量无法自增。

x = 5;

System.out.println(x+++x++);

请问,为什么是11,不是10?

这一题否定了一部分人所说的自增是表达式运算之后进行的,而另一个模糊的解释是x参加一次运算之后,看起来好像是对的。

分析表达式,会发现,如果是x参加一次运算,那么这个表达式就成了x+x    x++    syso(x)    x++

所以严格来说,是参与一次不为自己的运算。

我习惯用另一种方式来理解他,虽然这与实际赋值的顺序不一致,因为压后了,但是它好理解,

x++的自增将会出现在下次x取值之前。

x=5;

System.out.println(x+++1+x++);

请问为什么是12?

表达式为 x+1   ++x  (5+1)+6  x++

x=5;

System.out.println(x+++x);

请问为什么是11?

(x++) + x 和 x + (++x)虽然执行顺序上完全不一致,但是他们结果是一致的。

x=5;

System.out.println(x++ + 1);

System.out.println(x++ + x);

因为x+++x并不会被java理解成x +  ++x。 x++ + 1被解释成x+1 x++ x++ + x被解释成 x++  x+x   这里为什么是这样呢,因为+x之前,x已经是6了

而这个问题可以使用

x = 5; y = x; System.out.println(x+++y); 这样会发现结果为10,也就是说,x++ + y

自增和自减在实际应用是经常用到的,而在复杂的表达式中,你仍然需要用小括号合理解释到底是先加还是后加。

答案可以用来理解,但细微上解释跟字节码执行并不相同,如果想仔细了解,可以javap -c 来查看字节码得到正规的执行顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值