java函数的参数按值传递

本文详细解释了Java中函数参数的传递方式,通过示例展示了基本数据类型和引用类型的不同行为。对于基本数据类型,参数传递是按值进行的;而对于引用类型,则是传递对象的引用。

java函数的参数是按值传递的,就是通过复制的方式传递。(js也是这样)

三个例子来说明:

基本数据类型的传递。

public class Test1{
    public static int add(int x){
        x += 10;
        return x;
    }
    public static void main(String[] args) {
        int y = 1;
        int result = add(y);
        System.out.println(y);            //1
        System.out.println(result);        //11
    }
}

函数内的改变不引响函数外的改变。所以按值传递。

对于引用类型的变量,这里使用两个例子作为比较说明。

public class Test1{
    public static void add(TestClass x){
        x.sign += 10;
    }
    public static void main(String[] args) {
        TestClass y = new TestClass();
        add(y);
        System.out.println(y.sign);        //11
    }
}

class TestClass{
    int sign = 1;
}

类TestClass的对象在传入add函数后其成员变量值被改变,因为函数中的x的值与y相同,即引用同一个对象。

public class Test1{
    public static void add(TestClass x){
        x.sign += 10;
        x = new TestClass();  //增加的部分
        x.sign = 5;        //增加的部分
    }
    public static void main(String[] args) {
        TestClass y = new TestClass();
        add(y);
        System.out.println(y.sign);        //11
    }
}

class TestClass{
    int sign = 1;
}

在main方法中的输出仍然为11,因为y将其值复制给了x,x拥有了与y相同的引用,但x与y是不同的变量,x只是一个局部变量。x中的值的改变不会影响到y。但是x与y引用相同时,可以操作同一个引用的对象,使得y的值成员变量值发生改变。

转载于:https://www.cnblogs.com/ant-xu/p/11226458.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值