中getname_Java中的参数传递

本文详细探讨了Java中方法调用时的值传递和引用传递概念。通过实例展示了基础类型和对象类型在参数传递时的区别。值传递不会改变原始变量的值,而引用传递则会影响到原始对象。对于对象类型的参数,即使在方法内修改,也会直接影响到原始对象,如Person对象的name属性在updateValue方法中被修改后,主程序中的Person对象也相应改变。
摘要由CSDN通过智能技术生成

Java中方法之间的参数专递有两种,分别是值传递和引用传递。两种有不同的含义。

  • 值传递:指的是将当前对象的值copy到接下来的方法的新对象上,并不会更改被拷贝对象的值;
  • 引用传递:实际上是对引用地址的内容的修改,这样会同时影响到引用这块地址的所有对象。

此处举一些日常中常用的错误参数传递的例子。

  1. 基础类型传递。
    public static void main(String[] args) {        Integer a = 10;        updateValue(a);        System.out.println("最终的a的值为:" + a);    }    /**     * 修改a的值     *     * @param b 待修改的值     */    private static void updateValue(Integer b) {        System.out.println("修改之前的a的值:" + b);        ++b;      // 这里加个小插曲  b = (++b) + 1 和 b = (b++) + 1 最终b的值是否一样?还请大家思考一下        System.out.println("修改之后的a的值:" + b);    }

这个是属于典型的值传递,可以看一下各自的内存地址。

8a09601126e66f90ea3ab2ce89b63f47.png

a的内存地址

718025f93e3686c74bbc0fc92db21c52.png

b的内存地址

由这两张图可以看出来一个问题,修改的方法中修改掉的变量和原变量不在一个内存地址中,所以并不能修改掉原来的对象。

  1. 对象类型传递。
    public static void main(String[] args) {        Person person = new Person();        person.setName("张三");        updateValue(person);        System.out.println("最终的的值为:" + person.getName());    }    /**     * 修改a的值     *     * @param person 待修改的值     */    private static void updateValue(Person person) {        System.out.println("修改之前的的值:" + person.getName());        person.setName("李四");        System.out.println("修改之后的的值:" + person.getName());    }

输出的值为:

修改之前的的值:张三修改之后的的值:李四最终的的值为:李四

可以看到这个被更改了。这就属于典型的引用传递。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值