A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 追梦之旅 初级黑马   /  2014-4-11 22:53  /  1349 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中如   class ShiShi {        public static void main(String[] args)
        {
                int a=0;
                a=(a++);
                System.out.println("a="+a);
        }
}
中输出的a结果是0而不是1.。为什么?在java中()的运算符的优先级不是大于++么?

3 个回复

倒序浏览
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, 下载次数: 44)

QQ截图20140412200749.png
回复 使用道具 举报
ò壞尛孩 发表于 2014-4-12 20:33
LZ 我之前也为这个问题困扰过!我给你的解答你看下,

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

a=(a++);首先将1赋值给a,再做a++,这时a就变为1了啊?
回复 使用道具 举报
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马