Java中的值传递和引用传递实例介绍

 更新时间:2013年09月29日 16:29:12   作者:  
java 中没有引用传递,都是值传递的,可以通过传递副本修改对象的,副本交换,并不影响原引用
复制代码 代码如下:

package Object.reference;
public class People {
    private String name;
    private int age;
    public People(){
    }
    public People(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String toString(){
        return "name:" + name + " age:" + age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

复制代码 代码如下:

package Object.reference;
/*  java 中的值传递和引用传递
    https://www.jb51.net/clara/archive/2011/09/17/2179493.html
    java 中没有引用传递,都是值传递的
*/
public class Test {
    public static void swap(People a, People b, boolean flag) {
        if (flag) {
            // 可以通过传递副本修改对象的值
            a.setName("changeName");
            a.setAge(100);
        } else {
            //副本交换,并不影响主程序的指针
            People c = a;
            a = b;
            b = c;
        }
    }
    public static void main(String[] args) {
        People p1 = new People("yingjie", 23);
        People p2 = new People("yuexin", 20);
        swap(p1, p2,false);//传递的是p1,p2的副本,函数调用前后p1,p2没任何改变
        swap(p1, p2,true);//传递的是p1,p2的副本,可以通过传递副本修改对象的值,函数调用前后p1对象内容改变
    }
}

相关文章

  • Spring创建Bean的6种方式详解

    Spring创建Bean的6种方式详解

    这篇文章主要介绍了Spring创建Bean的6种方式详解,本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案。,需要的朋友可以参考下
    2019-06-06
  • Hystrix Dashboard断路监控仪表盘的实现详细介绍

    Hystrix Dashboard断路监控仪表盘的实现详细介绍

    这篇文章主要介绍了Hystrix Dashboard断路监控仪表盘的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • java实现模拟RPG格斗

    java实现模拟RPG格斗

    这篇文章主要介绍了java实现模拟RPG格斗,每个英雄具有以下几个属性:生命值(为0时英雄倒下)、攻击力(每次攻击时扣除对方的生命值点数)、攻击间隔(每次攻击过后都要等待间隔时间才能进行下次攻击首次攻击之前也要先等待间隔时间)简单设置了下吧,小伙伴可以参考下
    2015-03-03
  • SpringBoot集成Druid实现多数据源的两种方式

    SpringBoot集成Druid实现多数据源的两种方式

    这篇文章主要介绍了SpringBoot集成Druid实现多数据源的两种方式,集成com.baomidou的方式和基于AOP手动实现多数据源原生的方式,文中通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • java程序员必会的远程debug教程

    java程序员必会的远程debug教程

    这篇文章主要为大家介绍了java程序员必会的远程debug教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • mybatis-plus处理blob字段的完整示例代码

    mybatis-plus处理blob字段的完整示例代码

    在Spring Boot项目中使用MyBatis-Plus处理longblob字段时,我们可以按照本文的步骤进行操作,假设 longblob 存储的是字符串数据,本文给大家提供完整示例代码,感兴趣的朋友参考下
    2023-12-12
  • 详解Spring中bean生命周期回调方法

    详解Spring中bean生命周期回调方法

    本篇文章主要介绍了详解Spring中bean生命周期回调方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • springboot实现学生管理系统

    springboot实现学生管理系统

    这篇文章主要为大家详细介绍了springboot实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 学习Java之IO流中有哪些复杂的API

    学习Java之IO流中有哪些复杂的API

    这篇文章我们要先对IO流的API有个基本的认知,因为IO流的类和方法太多了,我们不得不专门学习一下,所以本文就给大家详细的讲讲Java IO流中复杂的API,需要的朋友可以参考下
    2023-09-09
  • 使用log4j MDC实现日志追踪

    使用log4j MDC实现日志追踪

    这篇文章主要介绍了使用log4j MDC实现日志追踪方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论