色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java里的傳引用和傳值的區別

衛若男1年前8瀏覽0評論

Java是一門面向對象的編程語言,其中參數傳遞是非常常見的操作。在Java中可以傳遞值類型的參數,也可以傳遞引用類型參數。但是在傳值類型和引用類型參數時有著很大的區別。

傳值類型參數,就是將基本類型的數據作為參數傳遞到方法中。基本類型有byte、short、int、long、float、double、char和boolean等。在傳遞值類型參數時,函數內對參數的修改不會影響到原始值類型參數的值。

public class PassValueDemo {
public static void main(String[] args) {
int num = 10;
changeValue(num);
System.out.println("num = " + num); // 輸出結果為10
}
public static void changeValue(int num) {
num = 5;
System.out.println("num = " + num); // 輸出結果為5
}
}

傳引用類型參數,就是將對象或者數組作為參數傳遞到方法中。對象和數組是引用類型,此時函數內對參數的修改會影響到原始引用類型參數的值。因為引用類型參數傳遞時,傳遞的是指針的副本。

public class PassReferenceDemo {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
changeValue(arr);
for (int i : arr) {
System.out.print(i + " "); // 輸出結果為2 4 6 8 10
}
}
public static void changeValue(int[] arr) {
for (int i = 0; i< arr.length; i++) {
arr[i] *= 2;
}
}
}

在傳遞引用類型參數時需要注意,在函數內不要直接修改原始引用類型參數的指向,否則會造成內存泄漏或者誤操作:

public class PassReferenceDemoWithMistake {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
changeValue(arr);
for (int i : arr) {
System.out.print(i + " "); // 輸出結果為1 2 3 4 5
}
}
public static void changeValue(int[] arr) {
arr = new int[]{2, 4, 6, 8, 10}; // 錯誤的操作,修改了原始引用類型參數的指向
for (int i = 0; i< arr.length; i++) {
arr[i] *= 2;
}
}
}

以上就是Java里的傳值和傳引用的區別。在實際編程中,需要根據具體情況選擇傳值或者傳引用類型參數。