值传递与引用传递

    xiaoxiao2025-08-05  25

    值传递

    一般是对于基本类型而言,传递的是变量值的一个副本,因此,对变量副本进行相关修改,不会影响原来的数据。

    如下例子:

    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中元素变为两条 }

    结果:

     

    最新回复(0)