java参数有值类型和引用类型两种。所以java参数的传值也就从这两个方面分析。
从内存模型来说参数传递更为直观一些,这里涉及到两种类型的内存:栈内存(stack)和堆内存(heap)。
基本类型作为参数传递时,传递的是这个值的拷贝。无论你怎么改变这个拷贝,原值是不会改变的。
引用类型作为参数传递时,传递的是引用地址。所以在改变引用类型的值时,原值会改变。(String类型特殊,单独说)
基本类型作为参数传递
基本类型作为参数传递时,传递的是这个值的拷贝。无论你怎么改变这个拷贝,原值是不会改变的。
代码如下:
1 public class ParameterTransfer { 2 public static void main(String[] args) { 3 int num = 30; 4 System.out.println("调用add方法前num=" + num); 5 add(num); 6 System.out.println("调用add方法后num=" + num); 7 } 8 9 public static void add(int param) { 10 param = 100; 11 } 12 }