当前位置:编程学习 > JAVA >>

值传递还是引用传递

通过代码分析:
 
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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,