您的位置:首页 > 编程语言 > Java开发

Java的堆、栈和垃圾回收

2017-08-30 18:27 141 查看
平常写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内存区域
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java