1.基本数据类型存在栈内(如:int)。
在main中定义变量,传递给别的方法时(如下swap1方法),传递的是该变量的一个副本,最终并没有改变main函数中的变量值。
2.引用数据类型存在堆内(如:数组)。
在main中定义变量(变量存于堆内),变量传递给别的方法时(如下swap2方法)是 在栈内执行指令,而该指令指向的是内存地址。如下代码中的main方法和swap2方法的变量传递都是指向内存地址,可以成功交换。
代码如下:
public class Transmit {
public static void main(String[] args) {
int number1 = 1;
int number2 = 6;
swap1(number1, number2);
System.out.println("number1: "+ number1 +" number2: " + number2);
System.out.println("------------------------");
int[] numbers ={2,4};
swap2(numbers);
System.out.println("numbers[0]: "+numbers[0]+" numbers[1]: "+numbers[1]);
}
//值传递
public static void swap1(int num1, int num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
//引用传递
public static void swap2(int[] nums){
int temp = nums[0];
nums[0] = nums[1];
nums[1] = temp;
}
}
结果如下: