我已经阅读了论坛并浏览了一些链接,发现 Java 都是按值传递的,我想我确实了解引用的工作方式,但不了解原语的工作方式。据说对于原语和对象,按值传递的工作方式相同。
我创建了一个示例程序
public class BirthDate {
int lear;
int year; // Instance variable
public static void main(String [] args) {
BirthDate bd = new BirthDate();
bd.lear=200;
bd.year=300;
int a=56;
bd.showYear(a,bd);
System.out.println(a);
System.out.println(bd.lear);
}
public void showYear(int a, BirthDate bd) {
a=59;
System.out.println(bd.lear);
bd.lear=400;
System.out.println(bd.lear);
System.out.println(a);
}
}
上述程序的输出为 200 400 59 56 400
现在,如果在原语和引用的情况下都传递了位,那么为什么 showYear 方法中引用值的变化反映了原始 bd 对象的变化(值更改为 400)而不是原始数据类型 iea
有人可以建议吗?