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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王睿 中级黑马   /  2012-3-10 18:14  /  1437 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1.         private static int a ;
  2.         public static void modify(int a ){
  3.                
  4.                 System.out.println(a++);
  5.                
  6.         }
  7.         public static void main(String[] args) {
  8.                 modify(a);
  9.         }
复制代码
结果是0 ,为什么不是1呢?

4 个回复

倒序浏览
System.out.println(a++)
本句等同于
System.out.println(a);
a=a+1;
即a++是a先参加相关的运算,然后在进行自加运算

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
初始化的时候,int类型的默认值是0的。 System.out.println(a++);在执行这句话的时候,因为a是0,所一先打印出a(即0),然后在给a加1这时候a=1了。因为是先打印后加的所以结果必然是0而不是1。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
要得1应该用++a
++a是先自加 a=a+1 ,再执行当前语句,即print语句

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
成员变量是虚拟机给初始化的  int是0 float是0.0f等    private static int a ; 在这时a呗初始化了为0
你调用的过程我就不说了
当你打印的时候  ++a是先运算后用
而a++是先使用后运算  也就是说 你这条语句 System.out.println(a++)打印的结果必然是0此时的a当离开这条语句后 比如下面还有一条语句System.out.println(a++)打印结果就是1了 但是打印完此时的a的值就变成2了

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马