1. 程式人生 > >Java的堆、棧和垃圾回收

Java的堆、棧和垃圾回收

平常寫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方法。