黑马程序员技术交流社区

标题: 总结:Java中参数传递问题 [打印本页]

作者: xunhaifeng    时间: 2015-9-2 20:37
标题: 总结:Java中参数传递问题
                public static void main(String[] args) {
                        int a = 10;
                        int b = 20;
                        System.out.println("a:"+a+",b:"+b);
                        change(a,b);
                        System.out.println("a:"+a+",b:"+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:"+a+",b:"+b);
                        a = b;
                        b = a + b;
                        System.out.println("a:"+a+",b:"+b);
                }
       
                public static void change(int[] arr) {
                        for(int x=0; x<arr.length; x++) {
                                if(arr[x]%2==0) {
                                        arr[x]*=2;
                                }
                        }
                }
自己跟着老师画内存图,倒是可以理解。但是离开图就不明白,不能每次都画图吧,有没有什么好点的方法来记述下。而且在论坛看见好几个类似的题,画图作对,不画就会出错。
作者: 寒星在天    时间: 2015-9-2 20:43
自己了解原理就好了啊
作者: a6658637    时间: 2015-9-2 21:11
首先你知道栈的作用会释放数据,而堆却是会保存的.当你改完数据时只要你不设置null值,那么数据改变就会自动保存在堆.
作者: 王海彬    时间: 2015-9-2 21:12
你去看图,先有个映像,然后看代码,先看main主方法下的方法块,就当你是虚拟机,一步步的运行,保存了变量,然后输出打印,运行发现有方法,将参数传递到方法,运行方法,将该输出打印的打印,该返回的返回值给调用者。。。我是这样理解的,看看有没有效果
作者: xunhaifeng    时间: 2015-9-3 14:15
嗯,我再看看




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