专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java 传参不简单!看“值族”与“引用族”的神仙“内卷”现场!

temp10 2024-11-11 13:51:04 java教程 14 ℃ 0 评论

在遥远的神界,有两个神族——值族引用族。他们因为一个古老的问题,几千年来争论不休:在凡间传递数据时,究竟是用值的方式还是用引用的方式呢? 为了弄清楚,天帝玉皇大帝特意请来了智慧无双的传参之神——“Java老神仙”来给大家讲明白这个天大的谜题。

第一幕:值族的“镜像术”

值族的族长名叫“基本类型之神”。他豪爽无比,行事简单直接。老神仙刚一出场,值族的族长便上前一步,用威风的嗓音说道:“传递就是镜像术!我只给你们我的影子,不可能影响到我的本体!”

Java 传参不简单!看“值族”与“引用族”的神仙“内卷”现场!

说罢,他挥手召唤出自己的影子,把影子递给众神围观的仙子们观看。果然,这影子看起来和本尊几乎一模一样,和他同样身姿挺拔,气宇轩昂。但是当一位好奇的仙子往影子上加了个小记号,族长本人却依旧完好无损,丝毫没有被改变。

值族族长解释道:“这就是我们值传递的原理。我们给凡间的,只是一个镜像!凡人可以随意修改镜像,但对我的本体毫无影响。”

第二幕:引用族的“灵犀术”

轮到引用族的神来展示他们的传递方式了。这位是灵活机敏的“引用类型之神”,她施展出了另一门法术——灵犀术。只见她召唤出一根银色的丝线,丝线的另一端连着一个小人偶。

她轻轻拉动丝线,灵活的小人偶就跟着她动了起来。“这就是我们的传递方式——‘引用传递’!”引用族的神得意地说,“凡人们得到的不是我的镜像,而是这根牵连的‘灵犀丝’。只要他们沿着这根丝线去控制,就能直接影响我这个人偶。”

仙子们纷纷点头称赞,见证了这神奇的灵犀术。但一位聪慧的小仙女突然问:“可是,如果我想换个人偶,或换根丝线呢?”

引用类型之神微微一笑,悠悠地说道:“凡人拿到的只是我提供的丝线的方向,无法改变本体和丝线的连接。我可以把内容修改得面目全非,但丝线头的位置不会变。这就是灵犀术的妙用——他们拿到的是指向的地址值,不是本体。”

大结局:Java老神仙的终极解释

看到大家依然有些疑惑,传参之神 Java 老神仙站了出来,拿起法杖,化出一块镜子,镜中浮现出凡间程序员们写的代码:

public class PassExample {
    public static void main(String[] args) {
        Dog aDog = new Dog("Rover");
        System.out.println("初始名字:" + aDog.getName());  // Rover
        changeDogName(aDog);
        System.out.println("最终名字:" + aDog.getName());  // Max
    }

    public static void changeDogName(Dog dog) {
        dog.setName("Max"); // 修改对象内容
    }
}

老神仙微笑道:“在凡间编程语言中,Java所有的数据传递其实都是值传递。这句话怎么讲呢?简单来说,无论是值族的镜像,还是引用族的灵犀丝,最终都是把‘值’传给对方。”

他看向引用族:“你们传递的值,是指向对象的地址值,凡人可以通过地址值操控内容,但不能换掉这个‘灵犀丝’指向的对象。”

老神仙拍了拍法杖,说:“所以说,Java 的所有传参都是值传递。如果是基础类型,传递的是数值本身;而引用类型,传递的是对象的地址值。你们明白了吗?”

众仙恍然大悟,纷纷叩谢 Java 老神仙。至此,凡间程序员们对于 Java 的传参之谜,终于有了真正的答案。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表