欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java引用傳遞和值傳遞的區(qū)別

Java中函數(shù)參數(shù)的傳遞可以分為兩種方式:值傳遞和引用傳遞。那么這兩種方式有什么區(qū)別呢?

值傳遞是指將一個(gè)變量的值復(fù)制給另一個(gè)變量,傳遞后對(duì)這個(gè)變量的修改不會(huì)影響到傳遞前的變量。下面看一個(gè)例子:

public class Main {
public static void main(String[] args) {
int a = 5;
System.out.println("a="+a);
changeValue(a);
System.out.println("a="+a);
}
public static void changeValue(int a) {
a = 10;
System.out.println("change a to "+a);
}
}

執(zhí)行結(jié)果:

a=5
change a to 10
a=5

可以看到,雖然在changeValue()函數(shù)中修改了a的值,但是在傳遞前和傳遞后的a是兩個(gè)獨(dú)立的變量,傳遞后的修改并不會(huì)影響到傳遞前的變量。

引用傳遞是指將一個(gè)對(duì)象的引用復(fù)制給另一個(gè)變量,傳遞后對(duì)這個(gè)對(duì)象的引用的修改會(huì)影響到傳遞前的對(duì)象。下面看一個(gè)例子:

public class Main {
public static void main(String[] args) {
int[] arr = {1,2,3};
System.out.println("arr[0]="+arr[0]);
changeArray(arr);
System.out.println("arr[0]="+arr[0]);
}
public static void changeArray(int[] arr) {
arr[0] = 10;
System.out.println("change arr[0] to "+arr[0]);
}
}

執(zhí)行結(jié)果:

arr[0]=1
change arr[0] to 10
arr[0]=10

可以看到,在changeArray()函數(shù)中修改了arr[0]的值后,傳遞前和傳遞后的arr都指向同一個(gè)對(duì)象,傳遞后的修改也影響到了傳遞前的對(duì)象。

通過(guò)上面的例子可以看出,值傳遞和引用傳遞的不同之處在于,值傳遞只是將變量的值傳遞給函數(shù),兩個(gè)變量是相互獨(dú)立的,而引用傳遞是將對(duì)象的引用傳遞給函數(shù),多個(gè)變量指向同一個(gè)對(duì)象,對(duì)一個(gè)變量的修改會(huì)影響到其他變量。