当前位置:首页 » 《我的小黑屋》 » 正文

Java传引用问题

9 人参与  2024年11月13日 12:41  分类 : 《我的小黑屋》  评论

点击全文阅读


本文将介绍 Java 中的引用传递,包括其定义、实现方式、通过引用修改原来指向的内容和通过引用修改当前引用的指向的区别

目录

1、引用传递的概念

2、引用传递的实现方式

3、传引用会发生的两种情况:

通过引用修改当前引用的指向

通过引用修改原来指向的内容。


1、引用传递的概念

在 Java 中,变量可以存储基本类型的值或对象的引用当一个对象的引用被传递给一个方法或函数时,实际上传递的是该对象的引用而不是对象本身。这种传递方式被称为引用传递。

在引用传递中,方法或函数可以修改传递进来的对象,这个修改可以在函数外部得到反映。这与值传递不同,值传递只是将对象的值进行拷贝,不会对原对象进行修改。

在引用传递中,函数接收到的是参数的引用(地址)而不是参数的值的副本。这意味着在函数内部对参数的修改会影响到函数外部的原始值。引用传递常见于复杂数据类型(如数组、对象、类实例等)的传递。多数情况下,引用传递可以节省内存空间,并且可以避免复制大量数据

引用传递的实现方式:

在 Java 中,引用传递的实现方式是通过将对象的引用作为参数传递给方法或函数来实现的在方法或函数内部,可以通过该引用来访问和修改对象的状态。

2、传引用会发生的两种情况

通过引用,修改原来指向的内容。通过引用,修改当前引用的指向。

对于初学者来说,两种情况容易混淆,那么如何区分呢

先做一道题小小测试吧

通过引用修改当前引用的指向

public class Example{    String str = new String("good");    char[ ] ch = { 'a' , 'b' , 'c' };    public static void main(String args[]){        Example ex = new Example();        ex.change(ex.str,ex.ch);        System.out.print(ex.str + " and ");        System.out.print(ex.ch);    }    public void change(String str,char ch[ ]){        str = "test ok";        ch[0] = 'g';    }}

会输出什么呢?

答案当然是 good and gbc 

看张图理解一下吧

在Java当中我们new出来的对象是保存在堆区的,每一个对象有自己的地址,当我们在main方法中定义出ex时候,ex会指向堆区当中new出来的对象,之后我们在调用change方法,str副本同样的指向到了堆区当中ex对象,而在change方法这里改变str的值,其实是改变了副本str的指向,并没有改变main方法中的str的指向。

那么同样用本题,如何通过传引用来修改原来指向的内容

通过引用修改原来指向的内容。

public class  Example  {        String str = new String("good");        char[ ] ch = { 'a' , 'b' , 'c' };        public static void main(String args[]){            Example ex = new Example();            change(ex);            System.out.print(ex.str + " and ");            System.out.print(ex.ch);        }    private static void change(Example ex) {            ex.str="test ok";            ex.ch[0]='g';    }}

答案是 test ok and gbc 是不是和你猜想的一样呢?(期待期待~)

加图理解:

朋友们现在是否已经非常清楚如何通过引用修改原来指向的内容和通过引用修改当前引用的指向了呢


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/185517.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 完结文真相与背叛来的让人猝不及防赵宇程列表_完结文真相与背叛来的让人猝不及防赵宇程(时云悦)
  • [星月]完结版免费在线阅读_靳时川靳总星星节选免费试读
  • 被休后我盖房屯粮肉满仓免费(叶盼汣)_被休后我盖房屯粮肉满仓免费叶盼汣
  • (流年落尽空白首免费)全文资源(向婉宁顾辞)_流年落尽空白首免费列表_笔趣阁向婉宁顾辞
  • 他曾满眼温柔季乐汐在线列表_他曾满眼温柔季乐汐在线(方慕琛)
  • 霍司年梁岁花(似月光吻野风:结局+番外)结局_(霍司年梁岁花似月光吻野风:结局+番外全书结局)结局列表_笔趣阁(霍司年梁岁花)
  • [为了竹马,妻子催眠我四次]小说免费在线阅读_林婉清韩慕辰慕辰章节世界观揭秘篇‌
  • 「爱是沉默的孤单」精彩节选试读_[陈行简林姐过敏]完结版全文
  • 宋逸琛安熙柠:+后续+结局必读爽文完本_完本宋逸琛安熙柠:+后续+结局必读爽文
  • (番外)+(全书)瑶华澹台冥苍(神祭台上仙缘尽:结局+番外)_(瑶华澹台冥苍)列表_笔趣阁(神祭台上仙缘尽:结局+番外)
  • (番外)+(全书)我结婚后,前世为了白月光殉情的丈夫却哭疯了:结局+番外(许念苏瑾安)_(我结婚后,前世为了白月光殉情的丈夫却哭疯了:结局+番外)列表_笔趣阁(许念苏瑾安)
  • 触摸不到的月光:结局+番外(许信川周羽瑶)_(触摸不到的月光:结局+番外)列表_笔趣阁(许信川周羽瑶)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1