参数传递方法主要有三种:
1、按值传递
接收的是调用者提供的变量的拷贝,不改变参数的值。
2、按引用传递
接收的是调用者提供的变量地址。
3、按指针传递
接收的是调用者提供的指针的拷贝,不改变指针的值和地址,但可以改变指针指向的地址。
JAVA参数传递方法只有一种,按值传递。
JAVA数据类型:
1、基本数据类型(byte,int,long,short,float,double,char,boolean)
在使用方法时,基本数据类型由于在内存中的一个地址存放的是这些变量的值,所以方法中的形参就是复制这些变量的值,所以不会影响到原来变量的值。
2、对象引用数据类型(类,接口类型,数组类型,枚举类型,注解类型)
在使用方法时,引用类数据类型由于引用的是内存地址而不是具体的值,所以方法中的形参就是复制这些变量值的地址,在进行修改的时候,会影响到原来的变量。
在Java中,对于基本数据类型,Java方法并不能修改变量内容,但是对于自定义类型是可以修改的,但参数传递使用的是值传递而非引用传递。
通过这两个代码,你可以发现其中的不同。
public class Main1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=2,b=3;
swap(a,b);
System.out.println(a);
System.out.println(b);
}
public static void swap(int a,int b)
{
int t;
t=a;
a=b;
b=t;
}
}
结果显示,a,b的值并未发生交换
public class Mine {
private Object num;
public Mine(Object num)
{
this.num=num;
}
public Mine() {
// TODO Auto-generated constructor stub
}
public Object getNum() {
return num;
}
public void setNum(Object num) {
this.num = num;
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Mine m1=new Mine(2);
Mine m2=new Mine(3);
swap(m1,m2);
System.out.println(m1.getNum());
System.out.println(m2.getNum());
}
public static void swap(Mine m1,Mine m2)
{
Object t=m1.getNum();
m1.setNum(m2.getNum());
m2.setNum(t);
}
}
结果显示,a,b的值发生了交换。