黑马程序员技术交流社区

标题: 哪位给解释下原因 [打印本页]

作者: 从未有过的晴天    时间: 2014-6-20 20:56
标题: 哪位给解释下原因
本帖最后由 从未有过的晴天 于 2014-6-21 21:34 编辑

class ArgsDemo {
                public static void main(String[] args) {
                        int a = 10;
                        int b = 20;
                        System.out.println(a+"---"+b);
                        change(a,b);
                        System.out.println(a+"---"+b);

                        int[] arr = {1,2,3,4,5};
                        change(arr);
                        System.out.println(arr[1]);
                }

                public static void change(int a,int b) {
                        System.out.println(a+"---"+b);
                        a = b;
                        b = a + b;
                        System.out.println(a+"---"+b);
                }

                public static void change(int[] arr) {
                        for(int x=0; x<arr.length; x++) {
                                if(arr[x]%2==0) {
                                        arr[x]*=2;
                                }
                        }
                }
        }


作者: 小周务商    时间: 2014-6-20 21:30
你想表达什么呢?????????????????、
作者: alive    时间: 2014-6-20 21:52
不要太水了大家都在水
作者: 郑飞    时间: 2014-6-20 22:01
要不要这样啊.....:o
作者: 从未有过的晴天    时间: 2014-6-21 21:35
结果知道,想知道为什么
作者: Geek_001    时间: 2014-6-21 21:41
你发表是为了解决什么问题?
作者: a6217815    时间: 2014-6-21 21:48
不知道  你想问什么,所以把结果的原因都弄出来了,不懂的再问好了
  1. import java.util.*;

  2. class ArgsDemo {
  3.     public static void main(String[] args) {
  4.             int a = 10;
  5.             int b = 20;
  6.             System.out.println(a+"---"+b);//10---20
  7.             change(a,b);
  8.             System.out.println(a+"---"+b);

  9.             int[] arr = {1,2,3,4,5};
  10.             change(arr);
  11.             System.out.println(arr[1]);                //arr[1]=4
  12.     }

  13.     public static void change(int a,int b) {
  14.             System.out.println(a+"---"+b);        //10---20
  15.             a = b;                                                        //b覆盖a ,a=20 b=20
  16.             b = a + b;                                                //b=40
  17.             System.out.println(a+"---"+b);        //20---40
  18.     }

  19.     public static void change(int[] arr) {
  20.             for(int x=0; x<arr.length; x++) {
  21.                     if(arr[x]%2==0) {
  22.                             arr[x]*=2;                //arr[1] = arr[1] * 2  ,得到4
  23.                     }
  24.             }
  25.     }
  26. }
复制代码

作者: 小坏坏    时间: 2014-6-21 22:49
你是在问为什么一个函数可以交换,另一个可以不改变吗?
作者: 从未有过的晴天    时间: 2014-6-22 10:00
是啊,为什么前面没改变,后面却改变了
作者: 嗅ㄨiaǒ孑    时间: 2014-6-22 12:13
change是静态方法,作用于局部,a和b不是全局变量,没被改变




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