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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xunhaifeng 中级黑马   /  2015-9-2 20:37  /  512 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                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;
                                }
                        }
                }
自己跟着老师画内存图,倒是可以理解。但是离开图就不明白,不能每次都画图吧,有没有什么好点的方法来记述下。而且在论坛看见好几个类似的题,画图作对,不画就会出错。

4 个回复

倒序浏览
自己了解原理就好了啊
回复 使用道具 举报
首先你知道栈的作用会释放数据,而堆却是会保存的.当你改完数据时只要你不设置null值,那么数据改变就会自动保存在堆.
回复 使用道具 举报
你去看图,先有个映像,然后看代码,先看main主方法下的方法块,就当你是虚拟机,一步步的运行,保存了变量,然后输出打印,运行发现有方法,将参数传递到方法,运行方法,将该输出打印的打印,该返回的返回值给调用者。。。我是这样理解的,看看有没有效果
回复 使用道具 举报
嗯,我再看看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马