值传递还是引用传递
通过代码分析:public class ParamTest { // 初始值为0 protected int num = 0; // 为方法参数重新赋值 public void change( int i) { i = 5; } // 为方法参数重新赋值 public void change(ParamTest t) { ParamTest tmp = new ParamTest(); tmp. num = 9; t = tmp; } // 改变方法参数的值 public void add(int i) { i += 10; } // 改变方法参数属性的值 public void add(ParamTest pt) { pt. num += 20; } public static void main(String[] args) { ParamTest t = new ParamTest(); System. out.println( "参数--基本类型" ); System. out.println( "原有的值:" + t.num ); // 为基本类型参数重新赋值 t.change(t. num); System. out.println( "赋值之后:" + t.num ); // 为引用型参数重新赋值 t.change(t); System. out.println( "运算之后:" + t.num ); System. out.println(); t = new ParamTest(); System. out.println( "参数--引用类型" ); System. out.println( "原有的值:" + t.num ); // 改变基本类型参数的值 t.add(t. num); System. out.println( "赋引用后:" + t.num ); // 改变引用类型参数所指向对象的属性值 t.add(t); System. out.println( "改属性后:" + t.num ); } }
输出结果如下:
参数--基本类型
原有的值:0
赋值之后:0
运算之后:0
参数--引用类型
原有的值:0
赋引用后:0
改属性后:20
得出结论:
1. 基本类型和基本类型变量被当作参数传递给方法时,是值传递。在方法实体中,无法给原变量重新赋
值,也无法改变它的值。
2. 对象和引用型变量被当作参数传递给方法时,在方法实体中,无法给原变量重新赋值,但是可以改变它
所指向对象的属性。至于到底它是值传递还是引用传递,这并不重要,重要的是我们要清楚当一个引用
被作为参数传递给一个方法时,在这个方法体内会发生什么。
补充:软件开发 , Java ,