Java中常用的數(shù)據(jù)類型包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,其中基本數(shù)據(jù)類型在傳遞時是按值傳遞的,而引用數(shù)據(jù)類型在傳遞時是按引用傳遞的。具體來說,就是:
基本數(shù)據(jù)類型按值傳遞
public static void main(String[] args) { int a = 1; int b = 2; System.out.println("交換前:a=" + a + ", b=" + b); swap(a, b); System.out.println("交換后:a=" + a + ", b=" + b); } private static void swap(int x, int y) { int temp = x; x = y; y = temp; }
上述代碼中,swap()方法內(nèi)部是交換了x和y的值,但是實際上并沒有交換主函數(shù)中的a和b的值,因為在方法中傳遞的是a和b的副本,而不是它們的引用。因此,方法內(nèi)部的修改并不會影響主函數(shù)中的變量。
引用數(shù)據(jù)類型按引用傳遞
public static void main(String[] args) { int[] arr = {1, 2}; System.out.println("交換前:arr[0]=" + arr[0] + ", arr[1]=" + arr[1]); swap(arr); System.out.println("交換后:arr[0]=" + arr[0] + ", arr[1]=" + arr[1]); } private static void swap(int[] arr) { int temp = arr[0]; arr[0] = arr[1]; arr[1] = temp; }
上述代碼中,swap()方法接收的是一個int類型的數(shù)組的引用,因此在方法中修改數(shù)組元素的值會影響主函數(shù)中的變量。
需要注意的是,如果在方法中改變了引用,比如將方法的參數(shù)指向了一個新的對象,那么這種改變是不會影響原來的引用的。