Java的堆、棧和垃圾回收
阿新 • • 發佈:2019-02-02
平常寫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方法。