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

java的傳值和傳址

林玟書1年前7瀏覽0評論

Java中的參數傳遞有兩種方式:傳值和傳址。

傳值是指在方法調用時,將實際參數的值復制一份傳遞給形式參數,在方法內部對形式參數的修改不影響實際參數的值,示例代碼如下:

public class ParameterPassing {
public static void main(String[] args) {
int x = 1;
addOne(x);
System.out.println(x);    //輸出結果為1
}
public static void addOne(int a) {
a++;
}
}

傳址是指在方法調用時,將實際參數的引用(地址)傳遞給形式參數,在方法內部對形式參數的修改會影響實際參數的值,示例代碼如下:

public class ParameterPassing {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3};
addOne(arr);
for (int i = 0; i< arr.length; i++) {
System.out.println(arr[i]);    //輸出結果為2 3 4
}
}
public static void addOne(int[] a) {
for (int i = 0; i< a.length; i++) {
a[i]++;
}
}
}

需要注意的是,Java中的基本數據類型(如int、double等)都是傳值,而對象類型則是傳址。但是,如果在方法內部重新為對象賦值,那么原來的引用會被修改,不再指向原來的對象,例如:

public class ParameterPassing {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
changeString(sb);
System.out.println(sb);    //輸出結果為World
}
public static void changeString(StringBuilder s) {
s = new StringBuilder("World");
}
}

在上述代碼中,changeString方法中重新為StringBuilder對象賦了一個新值,實際上這個新值和原來的sb對象沒有關系,所以在方法外部輸出sb對象的值仍然是Hello。