概述
平常写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的堆、栈和垃圾回收的全部内容,希望文章能够帮你解决Java的堆、栈和垃圾回收所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复