これはよくある質問だと思いますが、ここにあります..
Javaがパラメーターの受け渡しなどをどのように処理するかを理解するためにこれを書き込もうとしました..
public class CallByValue {
int key;
public void changeValue(CallByValue c){
System.out.println(c);
c.key=7;
}
public void changeValue(int x){
x=0;
}
public static void main(String[] args){
CallByValue c=new CallByValue();
c.key=5;
System.out.println(c);
c.changeValue(c);
System.out.println(c.key);
int x=8;
c.changeValue(x);
System.out.println(x);
}
}
ここでは、メソッドに渡されたオブジェクト内のプリミティブの値を変更できますが、メソッドに渡されたプリミティブの値を変更することはできません。理由はありますか?