<转>Java参数传递方式

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没有改变。 
2、对于对象类型,也就是Object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。 
代码如下:

java 代码
  1. public class Tester {    
  2.     public static void main(String[] args) {    
  3.         int primitive = 2;    
  4.         changePrimitive(primitive);    
  5.         //primitive的值依然是2    
  6.         MyClass myClass = new MyClass();    
  7.         changeObject(myClass);    
  8.         //myClass仍然指向的是执行changeObject之前的那个对象    
  9.         //但是myClass.i等于3了    
  10.     }    
  11.   
  12.     public static void changePrimitive(int primitive) {    
  13.         primitive = 3;    
  14.     }    
  15.   
  16.     public static void changeObject(MyClass myClass) {    
  17.         myClass.i = 3;    
  18.         myClass = new MyClass();    
  19.     }    
  20. }    
  21.   
  22. class MyClass {    
  23.     int i;    
  24. }   

 


另一个解释
1、基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的
2、在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

 

转自http://yousking.iteye.com/blog/65164

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值