了解实参和形参
方法的定义可能会用到参数,参数分为:
- 实参(实际参数) :用于传递给函数/方法的参数,必须有确定的值。
- 形参(形式参数) :用于定义函数/方法,接收实参,不需要有确定的值。
int a = 10;
print(a);
void print(int num) {
System.out.println(num);
}
值传递和引用传递
将实参传递给方法(或函数)的方式分为两种:
- 值传递 :方法接收的是实参值的拷贝,会创建副本。
- 引用传递 :方法接收的值是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。
传递基本类型参数
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
swap(num1, num2);
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
public static void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
System.out.println("a = " + a);
System.out.println("b = " + b);
}
解析:
交换
拷贝
拷贝
num1--实参
a--形参
num2--实参
b--形参
一个方法不能修改一个基本数据类型的参数
传递引用类型参数
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr[0]);
change(arr);
System.out.println(arr[0]);
}
public static void change(int[] array) {
array[0] = 0;
}
这里传递的还是值,这个值是实参的地址!!!
总结
Java 中将实参传递给方法(或函数)的方式是 值传递 :
- 如果参数是基本类型的话,传递的就是基本类型的值的拷贝,会创建副本。
- 如果参数是引用类型,传递的就是实参所引用的对象在堆中地址值的拷贝,同样也会创建副本。
|