黑马程序员技术交流社区

标题: java中运算符优先级问题 [打印本页]

作者: 追梦之旅    时间: 2014-4-11 22:53
标题: java中运算符优先级问题
在java中如   class ShiShi {        public static void main(String[] args)
        {
                int a=0;
                a=(a++);
                System.out.println("a="+a);
        }
}
中输出的a结果是0而不是1.。为什么?在java中()的运算符的优先级不是大于++么?


作者: ò壞尛孩    时间: 2014-4-12 20:33
LZ 我之前也为这个问题困扰过!我给你的解答你看下,
  1. class Test
  2. {      
  3.         public static void main(String[] args)
  4.         {
  5.                         int a=0,b,c;
  6.                         b=(a++);
  7.                         c=a;
  8.                        
  9.                         System.out.println("a="+a+"..b="+b+"..c="+c);
  10.         }
  11. }
复制代码

你运行下这个代码结果是 1 0 1;
说明在执行b=(a++)的过程中a 的值变化了,但是b还是指向a原来的值
在JAVA中()的优先级是最高的,++的运算优先级也比 =高,所以你在这加()的意义不大
但是问题b为啥不等于1,原因是b=a++的过程中,是先把a赋值给b,然后a再自增,但是作为返回值出现,并没有再赋值给b。


QQ截图20140412200749.png (90.86 KB, 下载次数: 70)

QQ截图20140412200749.png

作者: 夜班心桥    时间: 2015-3-14 23:38
ò壞尛孩 发表于 2014-4-12 20:33
LZ 我之前也为这个问题困扰过!我给你的解答你看下,

你运行下这个代码结果是 1 0 1;

a=(a++);首先将1赋值给a,再做a++,这时a就变为1了啊?
作者: JARVIS_YJ    时间: 2015-3-20 21:52
学习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2