Javaは実際にすべてのプリミティブ型をカスタムオブジェクトとは異なる方法で処理しますか?この単純な実験プログラムの結果を調べて「解釈」しようとしたときに、この質問を投げかけます。
public class RandomObject {
String name;
int value;
public RandomObject(String s, int i){
setName(s);
setValue(i);
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public static void main(String[] args) {
int x = 2;
int y = x;
System.out.println(y);
x = 4;
System.out.println(y);
RandomObject obj1 = new RandomObject("object1", 4);
RandomObject obj2;
obj2 = obj1;
System.out.println(obj2.getValue());
obj1.setValue(17);
System.out.println(obj2.getValue());
}
結果は次のとおりです。22417
xは変更されましたが、yの値は不変のままですが、オブジェクトでは、変更は両方に影響します。同じことがすべてのプリミティブ型(整数以外)で発生しますか?その理由は何ですか?