Java的方法参数传递

 

方法参数传值

按……调用(call by)是一个标准的计算机术语,用来描述各种程序设计语言。

java中总是采用按值调用。也就是说,方法得到的是参数值的一个拷贝,特别是方法不能修改传递给它的任何参数变量的内容。

例如,以下的调用:

public class Test {
    public int num;
    public static void main(String[] args) {
        Test t = new Test(); 
        t.num= 0;
        add(t.num);
        System.out.println(t.num);
    }
    
    public static void add(int x) {
        x+=3;
    }
}
​
​

在方法调用后,x的值还是为0,下面我们就具体看看执行的过程。

 

  1. x被初始化为一个num的拷贝值(也就是0)。

  2. x进行运算,变为3,但是num仍是10。

  3. 这个方法结束后,参数变量

 

 

当然,方法参数共有两种类型:

  • 基本数据类型

  • 对象引用

 

目前来说,一个方法不能修改一个基本数据类型的参数。而对象引用作为参数就不同了,可以很容易下面的方法实现num增加3的操作。

​
public class Test {
    public  int num;
    public static void main(String[] args) {
        Test harry = new Test(); 
        harry.num=10;
        harry.add(harry);
        System.out.println(harry.num);
    }
    
    public void add(Test x) {
        x.raiseNum();
    }
    
    public void raiseNum() {
        int result = num*3; 
        num = result;
    }
​
}
​

具体的步骤为下:

 

 

  1. x被初始化为harry值的拷贝值,这里是一个对象的引用。

  2. raiseNum方法运用于这个对象的引用,x和harry同时引向的Test(图中的Employee)对象的num进行了乘3的操作

  3. 方法结束后,参数变量x不再使用。不过,对象变量的harry将继续引用那个num乘3的Test对象。

总结

  1. 一个方法不能修改一个基本数据类型的参数(四类八种)。

  2. 一个方法可以改变一个对象参数的状态。(状态即是对象的成员变量)。

  3. 一个方法不能让对象参数引用一个新的对象。(容易混淆,初学者只需要牢记java是值传递) 。

    第三点如果需要深究,建议看下《Java核心技术卷1》

参考文档:《Java核心技术卷1》

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值