2021-08-16 值传递和引用传递

本文探讨了Java中的值传递和引用传递概念。值传递中,函数内部的修改不会影响原始变量;而在引用传递中,由于形参和实参指向同一内存地址,函数内的操作会直接影响到原始对象。通过示例代码展示了两种传递方式的区别,帮助理解其工作原理。
摘要由CSDN通过智能技术生成

值传递和引用传递

值传递:

就是实参把它的实际值传递给形参,而传入的参数存放在栈中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

举例:

public class test {
    static String Gypsy;
    public String change(String Gypsy){
        Gypsy = "浪漫";
        return Gypsy;
    }
    public static void main(String[] args) {
        test test = new test();
        Gypsy = "流浪";
        test.change(Gypsy);
        System.out.println(Gypsy);
    }
}
运行结果:
流浪

结论:传递的只是一个值,所以它实际的值并没有变化。

引用传递:

在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参和实参指向通愉快内存地址,对形参的操作会影响的真实内容。

public class test {
    static String Gypsy;
    public test(){
    }
    public test(String gypsy) {
        this.Gypsy = gypsy;
    }
    public String getGypsy() {
        return Gypsy;
    }
    public void setGypsy(String gypsy) {
        this.Gypsy = gypsy;
    }
    public test change(test Gypsy){
        Gypsy.setGypsy("浪漫");
        return Gypsy;
    }
    public static void main(String[] args) {
        Gypsy = "流浪";
        test test = new test(Gypsy);
        test.change(test);
        System.out.println(Gypsy);
    }
}
运行结果:
浪漫

结论:传递的是一个对象,所以指向的是同一个地址,所以形参的操作会改变实参对象的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值