方法:必须有其所在类或对象调用才有意义。
若方法含有参数:
- 形参:方法声明时的参数
- 实参:方法调用时实际传给形参的参数值
Java里方法的参数传递方式只有一种:值传递。
基本数据类型,值是保存在栈中;
引用对象,值保存在堆中,栈中存的是对象在堆中的地址。
方法参数传递之基本数据类型
public class Main {
public static void main(String args[]) {
int a = 0;
swap(a);
System.out.println("main方法中的参数a的值:" + a);
}
public static void swap(int i) {
i = 6;
System.out.println("swap方法中的参数i的值:" + i);
}
}
运行结果如下:
分析:
先执行的int a = 0; 在栈中开辟了一块内存,地址是XXXX,存的值是0.
再调用swap方法,执行int i 部分,在栈中开辟一块内存,地址是XXXX1,值就是从a那里复制过来的值0,执行swap的方法体里面的代码,i=6,把 i 在栈中的值改成6.
方法参数传递之基引用对象
public class Main {
public static void main(String args[]) {
DataSwap ds = new DataSwap();
System.out.println("调用swap方法之前,ds.a的值是:" + ds.a);
swap(ds);
System.out.println("调用swap方法之后,ds.a的值是:" + ds.a);
}
public static void swap(DataSwap ds1) {
ds1.a=6;
System.out.println("在swap方法中,ds1.a的值是:" + ds1.a);
}
}
public class DataSwap {
public int a;
}
运行结果如下:
分析:
1、DataSwap ds = new DataSwap();把new DataSwap()存到堆内存中,地址是XXXX
2、ds引用对象存到栈中,地址是XXXX1,值是new DataSwap()对象在堆中的的地址
3、调用swap方法,给ds1引用对象保存到栈中,地址是XXXX2,存的值是来源于实参(ds),也就是ds的栈中存的值,这个值实际上就是之前new DataSwap()对象在堆内存的地址
总结: