📄 methodspecial.java
字号:
public class MethodSpecial
{
public static void main(String [] args)
{
IntClass A=new IntClass(2);
IntClass B=new IntClass(4);
swap(A,B);
System.out.println("A="+A.getNum());
System.out.println("B="+B.getNum());
}
static void swap(IntClass i,IntClass j)
{
int k;
k=i.getNum();
i.setNum(j.getNum());
j.setNum(k);
}
}
class IntClass
{
public int x;
public IntClass(int t) {x=t;}
public int getNum() {return x;}
public void setNum(int t) {x=t;}
}
/*
错误版本
public class MethodSpecial
{
public static void main(String [] args)
{
Integer A=new Integer(2);
Integer B=new Integer(4);
swap(A,B);
System.out.println("A="+A);
System.out.println("B="+B);
}
static void swap(Integer i,Integer j)
{
Integer k;
k=i; i=j; j=k;
}
}
我的理解是:
方法调用时,程序首先为形参分配一个空间,再把实参复制到形参中,形参和实参位于两个不同的内存空间,方法过程结束后,i的值并没有回传给A,所以A的值不变
而C++中,形参如果是指针,形参和实参指向同一个内存空间,所以i的值就是A的值
区别在于引用。在 C++ 中当传递给函数的参数是引用时,您传递的就是这个引用,或者内存地址(按引用传递)。在 Java 应用程序中,当对象引用是传递给方法的一个参数时,您传递的是该引用的一个副本(按值传递),而不是引用本身。
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -