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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© houyudong 中级黑马   /  2014-5-6 20:58  /  1282 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 houyudong 于 2014-5-8 12:45 编辑

class Demo
{
        public static void main(String[] args)
        {
                int x = 4;
                show(x);
                System.out.println(x);
        }
        public static void show(int x)
        {
                x = 2;
        }
}
输出结果为:4
1、show(x),把x=4放入show方法,将4替换为2,输出x。为什么会是4不是2 ?那么show没有起到作用|??
class Demo
{
        int x = 3;
        public static void main(String[] args)
        {
                Demo d = new Demo();
                d.x = 10;
                show(d);//show(new Demo());
                System.out.println(d.x);
        }
        public static void show(Demo d)
        {
                d.x = 6;
        }
}
输出结果为:6
建立对象名为d的Demo类对象,成员变量x=3被d.x替换为10,将d对象放入show方法中,更改对象成员变量x为6.输出d对象的成员变量x值为6,这样流程对吗??
class Demo
{
        public static void main(String[] args)
        {
                int[] arr = new int[2];
                show(arr);
                System.out.println(arr[0]);
        }
        public static void show(int[] arr)
        {
                arr[0]++;
        }
}
输出结果为:1
定义一个数组名为arr的一维数组,有两个元素,调用show方法,将arr放入show方法,arr【0】++?什么意思。arr【0】中元素加一,还是角标加一????

这个show调用的的是对象还是变量?

评分

参与人数 1技术分 +1 收起 理由
张然龙 + 1

查看全部评分

2 个回复

倒序浏览
1,
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int x = 4;
  6.                 show(x);
  7.                 System.out.println(x);
  8.         }
  9.         public static void show(int x)
  10.         {
  11.                 x = 2;
  12.         }
  13. }
复制代码

对于System.out.println(x);来说show方法里的x为局部变量,所谓局部变量就是定义在方法内的变量,局部变量会随着方法的结束而被内存释放,而此时主函数并没有结束,所以打印语句打印的是int x=4;这个x,所以结果为4
2.
  1. class Demo
  2. {
  3.         int x = 3;
  4.         public static void main(String[] args)
  5.         {
  6.                 Demo d = new Demo();
  7.                 d.x = 10;
  8.                 show(d);//show(new Demo());
  9.                 System.out.println(d.x);
  10.         }
  11.         public static void show(Demo d)
  12.         {
  13.                 d.x = 6;
  14.         }
  15. }
复制代码

x的初始值为3,将10在赋值给x,x==10,然后调用show方法,将6赋值给了x,所以最后x==6。
3,
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = new int[2];
  6.                 show(arr);
  7.                 System.out.println(arr[0]);
  8.         }
  9.         public static void show(int[] arr)
  10.         {
  11.                 arr[0]++;
  12.         }
  13. }
复制代码

数组未初始化,默认的值都为0,所以arr[0]==0;然后调用show方法arr[0]++自增1,然后打印出来,所以结果为:1
这些题目都蛮基础的,建议还是认真点看毕老师的基础视频。

评分

参与人数 1技术分 +1 收起 理由
轻语。 + 1

查看全部评分

回复 使用道具 举报
这个就是Java中参数传递的问题了,只要记住,基本类型参数传的是值,也就是原变量值的拷贝,引用变量传的是地址,也就是引用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马