黑马程序员技术交流社区

标题: 值传递?跪求各位大神指点,谢谢!!! [打印本页]

作者: 孙建志    时间: 2015-11-19 21:30
标题: 值传递?跪求各位大神指点,谢谢!!!
第一道题:        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;
        }
}
作者: 你是对的    时间: 2015-11-19 21:39
不懂帮顶  同求问
作者: 小笨笨天    时间: 2015-11-19 22:18
第一题  输出 x=1, y=0   static 中的 int x=5 属于局部变量 不用管;  还有记住  ++x  是x先自加在去做运算,x++相反;重点是:  y = x++ + ++x;  要从右往左看,先++x , 在 + x ,在赋值y;最后x++;这样就得出 x y的值了。main函数中的运算同理
作者: 小笨笨天    时间: 2015-11-19 22:25
第二题 x=-1,x + y++ + x=-2   跟第一题相比只是你的 myMethod() 中的 static x 变成 局部变量x;第一题中就属于址传递,第二题就属于值传递。所以方法结束后对main函数中的x=-1值不影响。
作者: 深寒丶    时间: 2015-11-19 22:42
不管什么程序,先看main方法,++x,是先做自加再参与运算,x++是先参与运算再自加




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