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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

第一道题:        static {
                int x = 5;
        }
        static int x,y;
        public static void main(String[] args) {
                x--;
                myMethod(); //不传入参数的时候  
                System.out.println(x);  //结果是什么? 为啥
                System.out.println(x + y++ + x); //结果是什么? 为啥
        }
        public static void myMethod() {
                y = x++ + ++x;
        }
}       
       
第二道:
  static {
                int x = 5;
        }
        static int x,y;
        public static void main(String[] args) {
                x--;
                myMethod(x); //传入参数的时候  
                System.out.println(x);  结果是什么? 为啥
                System.out.println(x + y++ + x);  结果是什么? 为啥
        }
       
        public static void myMethod(int x) {
                y = x++ + ++x;
        }
}

4 个回复

正序浏览
不管什么程序,先看main方法,++x,是先做自加再参与运算,x++是先参与运算再自加
回复 使用道具 举报
第二题 x=-1,x + y++ + x=-2   跟第一题相比只是你的 myMethod() 中的 static x 变成 局部变量x;第一题中就属于址传递,第二题就属于值传递。所以方法结束后对main函数中的x=-1值不影响。
回复 使用道具 举报
第一题  输出 x=1, y=0   static 中的 int x=5 属于局部变量 不用管;  还有记住  ++x  是x先自加在去做运算,x++相反;重点是:  y = x++ + ++x;  要从右往左看,先++x , 在 + x ,在赋值y;最后x++;这样就得出 x y的值了。main函数中的运算同理
回复 使用道具 举报
不懂帮顶  同求问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马