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

java 中值傳遞和引用傳遞

劉姿婷1年前8瀏覽0評論

在Java中,方法參數的傳遞方式有兩種,分別是值傳遞和引用傳遞。

值傳遞是指將變量的值復制一份傳遞給方法參數,在方法內部對參數的修改不會影響原變量的值。

public class Test{
public static void main(String[] args){
int a = 10;
System.out.println("原值:" + a);
change(a);
System.out.println("修改后:" + a);
}
public static void change(int b){
b = 20;
System.out.println("方法內修改后:" + b);
}
}

運行結果:

原值:10
方法內修改后:20
修改后:10

可以看到,雖然在方法內部修改了參數的值,但是原變量的值并沒有改變。

引用傳遞是指將變量的地址傳遞給方法參數,對參數的修改會直接影響原變量的值。

public class Test{
public static void main(String[] args){
int[] arr = new int[]{1, 2, 3};
System.out.println("原數組:" + Arrays.toString(arr));
change(arr);
System.out.println("修改后數組:" + Arrays.toString(arr));
}
public static void change(int[] arr){
arr[0] = 4;
System.out.println("方法內修改后數組:" + Arrays.toString(arr));
}
}

運行結果:

原數組:[1, 2, 3]
方法內修改后數組:[4, 2, 3]
修改后數組:[4, 2, 3]

可以看到,在方法內部修改了參數的值后,原數組的值也隨之改變了。

在Java中,基本類型(如int、float、char等)都是值傳遞,而對象類型(如數組、集合、自定義類等)都是引用傳遞。

需要注意的是,雖然對象類型是引用傳遞,但是如果在方法內部將參數重新指向了一個新的對象,原對象并不會受到影響。

public class Test{
public static void main(String[] args){
MyClass obj = new MyClass("hello");
System.out.println("原對象:" + obj);
change(obj);
System.out.println("修改后對象:" + obj);
}
public static void change(MyClass obj){
obj = new MyClass("world");
System.out.println("方法內修改后對象:" + obj);
}
}
class MyClass{
private String name;
public MyClass(String name){
this.name = name;
}
public String toString(){
return "MyClass{" + "name='" + name + '\'' + '}';
}
}

運行結果:

原對象:MyClass{name='hello'}
方法內修改后對象:MyClass{name='world'}
修改后對象:MyClass{name='hello'}

可以看到,雖然在方法內部將參數指向了一個新的對象,但是原對象的值并沒有改變。