参数传递的过程

在JAVA里面,对于方法的参数传递,不管是原生数据类型还是引用类型,一律是传值:pass by value

只是在传递原生数据时,值是具体的值,而传递引用类型时,值是这个引用对象的地址。

 

java 代码
  1. package com.test;   
  2.   
  3. public class ParamTest {   
  4.   
  5.     public void changeInt(int a)   
  6.     {   
  7.         a = 3;   
  8.     }   
  9.     public void changePoint(Point point)   
  10.     {   
  11.         //此处将改变引用对象内存地址参数对应的对象的地址中的值   
  12.         point.x = 5;   
  13.         point.y = 6;   
  14.     }   
  15.     public void changeString(String str)   
  16.     {   
  17.         //String类型是个不可改变的final类型,此时,参数str将指向新的String pool中值为"abc"的对象,因此,原来的实参str的所指向的内存地址中的值并未被改变   
  18.         str = "abc";   
  19.     }   
  20.        
  21.     public static void main(String[] args)   
  22.     {   
  23.         int a = 1;   
  24.         ParamTest pt = new ParamTest();   
  25.         //传递的是原生数据(其值是原生数据的数据“1”,而不是原生数据的地址)   
  26.         pt.changeInt(a);   
  27.         System.out.println(a);//1   
  28.            
  29.         Point point = new Point(1,2);          
  30.         ParamTest pt2 = new ParamTest();   
  31.         //传递的是引用类型(其值是对象的内存地址)   
  32.         pt2.changePoint(point);   
  33.         System.out.println(point.x);//5   
  34.         System.out.println(point.y);//6   
  35.            
  36.         String str = "xyz";   
  37.         ParamTest pt3 = new ParamTest();   
  38.         //传递的是引用类型(其值是String pool中值为"xyz"的对象的内存地址)   
  39.         pt3.changeString(str);   
  40.         System.out.println(str);//xyz   
  41.            
  42.     }   
  43.        
  44. }   
  45.   
  46. class Point   
  47. {   
  48.     int x;   
  49.     int y;   
  50.     public Point(int x,int y)   
  51.     {   
  52.         this.x = x;   
  53.         this.y = y;   
  54.     }   
  55. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值