Java は結局™値渡しなのか参照渡しなのか、今日コードを書いているときに面白いことに気づきました。つまり、私は 2 つの参照オブジェクトを変換関数に渡しました。
Java は結局™値渡しなのか参照渡しなのか#
今日コードを書いているときに面白いことに気づきました。つまり、私は 2 つの参照オブジェクトを変換関数に渡しました。結果、私の関数は効果がありませんでした!!最初はコンパイルの問題だと思っていましたが、
クリーン後もダメでした。何度も試して、ほぼ 1 時間が経ちました。本当にイライラしました。まさか、基本的なパラメータ型は値渡し、参照型は参照渡しだと思っていたのに?いろいろ学んだ結果、やはり私が思っていたこととは違い、Java の規約が正しいのです!
余計な話は置いておいて、まず結論を述べます:確実に値渡しです!
基本型については多くを語る必要はありませんが、渡されるのは基本型のコピーです。
しかし、参照型については、参照アドレスのコピーが渡されることに注意してください。
コードを見てみましょう:
package com.dareway.demo;
public class Person{
public String name;
public int age;
Person(){
}
Person(String n ,int a){
this.name=n;
this.age=a;
}
}
public class Test{
public static void main(String[] args) {
Person one = new Person("wang",22);
Person two = new Person("yang",23);
switchEach(one,two);
System.out.println("one's name :"+one.name);
System.out.println("two's name :"+two.name);
}
出力結果:
p1's name :yang
one's name :Jisoo
two's name :yang
つまり、渡された参照パラメータは内部の状態を変更できますが、新しいアドレスを指すことはできません。なぜなら、コピーされるのはアドレスのコピーだけだからです。