值传递与引用传递案例对比

文章通过示例讲解了Java中值传递和引用传递的区别。在值传递中,方法内部对参数的修改不会影响到外部变量;而在引用传递中,方法可以修改对象的属性,从而影响到原始对象的状态。示例展示了对于基本类型和对象类型的处理差异。
摘要由CSDN通过智能技术生成

java本身是值传递类型,值传递则是传递相应的值,比如一个方法,只是将值传递给了形式参数,若返回值为空,则最终输出值是不变;而引用传递则是传递的一个对象,其本质还是值传递,但是中间会有一个对象。我们可以通过案例来加深了解

值传递

由案例运行可以知道,输出的数值都是1,来分析其中的逻辑:第一个肯定是没有问题的 输出就是1重点是第二个,走过change方法后,只是把实际定义的int a = 1传递给了方法中的形式参数a,并没有返回一个参数,返回值为空。只是把a = 1传递给了a,然后方法走完一边后最后还是要回到主方法。

public class Demo04 {
    public static void main(String[] args) {
        int a = 1;
        System.out.println(a);
        Demo04.change(a);
        System.out.println(a);
        //可知两者都是1
    }
    public static void change(int a){
        a = 10;
    }

引用传递

由案例运行可以知道,输出的数值为null和李,分析其中的逻辑:前者没有问题,后者则是我们将person这样当前这个人传递给了change方法,而change方法改变的则是person.name这个值,最后修改的则是Person类里面的属性name,所以person.name一定可以修改成功的。

public class Demo05 {
    public static void main(String[] args) {
        //要使用这个类,需要定义类,实例化
        Person person = new Person();
        System.out.println(person.name); //null
        Demo05.change(person);
        System.out.println(person.name); //李庆博

    }
    public static void change(Person person){ //这里并不是一个形式参数了,而是实例化的Person,是具体类
        //person是一个对象,他指向的是        Person person = new Person();一个具体的人,可以改变属性
        person.name = "李";
    }
}
//定义了一个Person类,有一个属性:name
class Person{
    String name;
}

该帮助案例取自狂神说Java。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值