Java的堆、栈和垃圾回收

来源:互联网 发布:java bigdecimal取整 编辑:程序博客网 时间:2024/06/05 21:56

平常写Android,慢慢忘了很多的Java的基础知识,之后看到一道面试题,其实就是java能否实现像c一样的swap方法

 public static void main(String[] args) {        MyClass myClass = new MyClass();        myClass.mainTest();    }    public void mainTest(){        S s1 = new S("s1",10);        S s2 = new S("s2",20);        S s3 = new S("s3",30);        S s4 = new S("s4",40);        swap(s1.age,s2.age);//1        System.out.println(s1.age+"----"+s2.age);        swap(s1,s2);//2 //     S temp; //     temp = s1;  //    s1 = s2;  //    s2 = temp;        System.out.println(s1.age+"----"+s2.age);        changeName(s3);//3        System.out.println(s3.name);        changeName(s4.name);//4        System.out.println(s4.name);    }    public static void swap(int a,int b){        int temp = a;        a = b;        b = temp;    }    public static void swap(S a,S b){        S temp = a;        a = b;        b = temp;    }    public static void changeName(String name){        name = "hello world";    }    public static void changeName(S s){        s.name = "bean";        s = new S();        s.name = "sam";    }    public static class S {        private String name;        private int age;        public S(){}        public S(String name, int age) {            super();            this.name = name;            this.age = age;        }        public String getName() {            return name;        }        public void setName(String name) {            this.name = name;        }        public int getAge() {            return age;        }        public void setAge(int age) {            this.age = age;        }    }

问最后打印的是什么,结果是
10—-20
10—-20
bean
s4
虽然我知道java方法传参是传引用,但还是上面标注的2有些不明白。当我将swap方法总的代码直接移到2的位置,又可以交换成功,真心有点不太明白,希望看到博客的那些懂的大神,可以为小弟解惑!
之后去看了很多资料,都说java无法正常像c一样实现swap方法。

之后看到两篇不错的文章,就记录下来,我对java研究不是很深,直接给链接吧,有兴趣的去看看,感谢原博主!
Java中堆内存和栈内存详解
Java垃圾收集器
Java内存管理:深入Java内存区域

原创粉丝点击