黑马程序员技术交流社区

标题: 请教一道题 [打印本页]

作者: 秋天-10    时间: 2015-4-28 22:15
标题: 请教一道题
  1. 写出结果。
  2. public class Test      
  3. {
  4.         public static void leftshift(int i, int j)
  5.         {
  6.                    i+=j;
  7.         }
  8.         public static void main(String args[])
  9.         {
  10.                 int i = 4, j = 2;
  11.                 leftshift(i, j);
  12.                 System.out.println(i);
  13.         }
  14. }
复制代码

作者: ayl648989    时间: 2015-4-28 22:17
应该是 6吧。
作者: 米江波    时间: 2015-4-28 22:24
结果打印6    i+=j 就是把两个数相加然后赋值给第一个
作者: 依秋无泪    时间: 2015-4-28 22:28
结果是4,只有当引用类型当形参的时候传递是地址,所以操作的是同一个内存空间,基础变量传递是值,所以不会影响原来的值
作者: 陈文超    时间: 2015-4-28 22:30
4因为 里面leftshift里的i,j只是形参,不会对main里面的i,j实参造成任何影响
作者: 神话归来99    时间: 2015-4-28 22:31
/**变量的作用域实例
* 通过方法调用实现
*廖开德注释
*/

public class Test9      
{
        public static void leftshift(int i, int j)
        { //此处的i,j 是局部变量  只在leftshift()中有效,
                //他的值的变化不会引起其他地方同名变量的变化
                   i+=j;
        }
        public static void main(String args[])
        {
                //此处i,j是局部变量只在main()方法中有效
                int i = 4, j = 2;
                //此处传递的是i,j的值,不是他的引用
                leftshift(i, j);
                //此处输出的是main()方法中的i的值,他没有被leifshift()方法改变
                System.out.println(i);
        }
}
作者: 神话归来99    时间: 2015-4-28 22:32
神话归来99 发表于 2015-4-28 22:31
/**变量的作用域实例
* 通过方法调用实现
*廖开德注释

输出结果是4
作者: gzp123    时间: 2015-4-28 22:37
这道题的正确答案是:4




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