面向对象基础入门5(方法的传参机制)

本文深入探讨了Java中方法参数传递的基本原理,通过实例解释了基本类型和引用类型在方法调用时的区别。对于基本类型,参数副本的修改不会影响原始变量;而对于引用类型,由于传递的是对象引用,方法内部的修改会直接影响到原始对象。了解这一机制对于理解Java程序的运行至关重要。
摘要由CSDN通过智能技术生成

面向对象基础入门5(方法的传参机制)

如果定义方法时候声明了形参,调用方法是必须传入对应的参数。

引例:

public class Transfer {
    public static void swap(int a,int b)
    {
        int tmp=a;
        a=b;
        b=tmp;
    }
    public static void main(String[] args) {
        int a=6,b=9;
        Transfer.swap(a,b);
        System.out.println(a+" "+b);
    }
}
/*
6 9
*/

swap方法的本意是交换ab的值,但调用后并未实现功能

因为传入方法swap的仅仅是ab的副本,并不是参数本身

所以,如果传递到参数是基本类型,方法中对参数所做的修改,完全不会影响参数本身

public class Transfer {
    public static void swap(DataWrap dw) {
        int tmp = dw.a;
        dw.a = dw.b;
        dw.b = tmp;
    }

    public static void main(String[] args) {
        DataWrap dw = new DataWrap();
        dw.a = 6;
        dw.b = 9;
        //传入参数是引用类型
        Transfer.swap(dw);
        System.out.println(dw.a + " " + dw.b);
    }
}

class DataWrap {
    int a;
    int b;
}

此时传递的是引用类型的变量dwmain栈中

main方法中创建了一个新对象在堆内存中,dw指向了对象中的变量ab

swap栈也指向了堆内存中的ab,包含的并不是对象本身,而是变量的首地址

所以,如果传递的对象是引用类型,参数副本与参数本身指向的是同一个对象,

所以,如果传递的对象是引用类型,参数副本与参数本身指向的是同一个对象,

因此方法通过参数副本修改对象时,会影响参数本身所指向的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值