Java学习记录-Java中方法的参数传递
Java中方法的参数传递是值传递(指变量在栈内存中的值)
基本数据类型是保存在栈内存中,引用对象在栈内存中保存的是引用对象在堆内存中的地址
即:
- 如果方法的形参是基本类型,那么实参在向形参传递参数时,就是直接传递值,把实参的值复制,再传递给形参
1 public class test1 { 2 public static void main(String[] args) { 3 int a = 0; 4 System.out.println(swap(a)); 5 System.out.println("a的值为" + a); 6 } 7 8 public static int swap(int i){ 9 i = 666; 10 return i; 11 } 12 }swap(a)的值为666,但最终a的值仍为0,因为swap方法中的形参为基本类型,在实参a向swap传递形参的时候,把a的副本传递给swap作为形参,swap里面并没有对a本身进行操作
- 如果方法的形参是对象,那么实参向形参传递参数时,传递的值是实参在栈内存中的值,也就是引用对象在堆内存中的地址
1 public class test1 { 2 public static void main(String[] args) { 3 DataSwap ds1 = new DataSwap(); 4 System.out.println(ds1.i); 5 swap(ds1); 6 System.out.println("ds1.i最终的值" + ds1.i); 7 } 8 9 public static int swap(DataSwap ds){ 10 ds.i = 666; 11 return ds.i; 12 } 13 } 14 15 class DataSwap{ 16 public int i; 17 }执行swap方法前ds1.i的值为0,执行swap方法后最终ds1.i的值为666,这里swap方法中的形参是一个对象,实参传递形参时,他们俩的值都指向了DataSwap在堆内存中的地址,所以swap中ds.i修改后,ds1.i也一样发生了变化

浙公网安备 33010602011771号