java运算符优先级和结合性


运算符                         结合性

[ ] . ( ) (方法调用)                  从左向右

! ~ ++ -- +(一元运算) -(一元运算)           从右向左

* / %                        从左向右

+ -                          从左向右

<< >> >>>                     从左向右

< <= > >= instanceof                从左向右

== !=                         从左向右

&                             从左向右
^                              从左向右
|                               从左向右
&&                              从左向右
||                               从左向右
?:                               从右向左

= += -= *= /= %= &= |= ^= <<= >>= >>=    从右向左
=============================================
出一个题目:
int i=3;
int number=-i++;
System.out.printf("number=%d\n",number);
System.out.printf("i=%d\n",i);
答案显示number=-3  i=4
问题:++的优先级不是高于-号吗?为啥不是 -(i++)呢?
解答:首先向右结合指的是符号本身,而不是变量,所以++的右面没有变量,而-的右面有变量,
而且,++和-的优先级相同。所以,这个时候变成-3,根据后置++的定义,变量是先使用后自增的原则,结果为-3
最后i的值自增1变为4。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM