public class Equals { public static void main(String[] args) { Integer i = new Integer(0); add(i); System.out.println(i.intValue()); } private static void add(Integer i) { int val = i.intValue(); val += 3; i = new Integer(val); } } //输出
0
PS: 图片显示较小,可右键在新标签页中查看图片
引用数据类型是引用传递(call by reference),基本数据类型是值传递(call by value) 值传递不可以改变原变量的内容和地址---》原因是java方法的形参传递都是传递原变量的副本,在方法中改变的是副本的值,而不适合原变量的 引用传递不可以改变原变量的地址,但可以改变原变量的内容---》原因是当副本的引用改变时,原变量 的引用并没有发生变化,当副本改变内容时,由于副本引用指向的是原变量的地址空间,所以,原变量的内容发生变化。 结论:1.值传递不可以改变原变量的内容和地址; 2.引用传递不可以改变原变量的地址,但可以改变原变量的内容;