一般是对于基本类型而言,传递的是变量值的一个副本,因此,对变量副本进行相关修改,不会影响原来的数据。
如下例子:
public static void main(String[] args) { int i = 4; System.out.println(i); add(i); System.out.println(i); } public static void add(int i){ i = i + 1; }
结果:
引用传递
一般是对于对象型变量而言,传递的是对象变量的地址副本(相当于拷贝的是原对象的引用),并不是原对象本身。对应用对象的修改,会影响原对象。
如下例子:
public static void main(String[] args) { List<List<String>> listA = new LinkedList<>(); List<String> listB = new ArrayList<>(); listB.add("before add"); System.out.println(listA); listA.add(listB); System.out.println(listA); listB.add("after add");//对引用对象进行操作会同时改变原对象 System.out.println(listA);//fatherList中元素变为两条 }结果: