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

Java传引用问题

14 人参与  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://zhangshiyu.com/post/185517.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

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

最新文章

  • 我妈让我把未婚夫让给表妹,我转头嫁给了京圈科研大佬精彩欣赏(宋欢欢柯元道)_我妈让我把未婚夫让给表妹,我转头嫁给了京圈科研大佬精彩欣赏
  • 她比月光先离开沈怀川林翩月完本_她比月光先离开(沈怀川林翩月)
  • [封地1秒涨1兵,女帝跪求别造反]剧情悬念章节分段解锁_[秦泽金风鸾]后续完结版
  • 灯塔长明,爱人无期(林觉夏严昭凛)_灯塔长明,爱人无期林觉夏严昭凛
  • 重生后,我决定另嫁他人全局(江念棠秦州砚)_重生后,我决定另嫁他人全局(江念棠秦州砚)
  • 你曾是我的心之所向最后结局(沈清梨谢景云)_你曾是我的心之所向最后结局(沈清梨谢景云)
  • 她把爱情困成牢陆拙言江姝月完本_她把爱情困成牢(陆拙言江姝月)
  • 「点天灯的神秘人,是我老公的情人」小说免费试读_[沈承舟老公唐三彩]章节彩蛋限时释出‌
  • 改嫁痴情神棍竹马后,童养夫他后悔了限免完整章节合集‌_赵远林若青梅角色专属支线试读入口
  • 「我一个封棺匠,炼个僵尸很正常吧」小说后续在线免费阅读_陈天叶晓琳后续更新+番外
  • 全文怀孕七个月四个孩子都不是我的完结(宋冉江城柳丝丝楚时宴)列表_全文怀孕七个月四个孩子都不是我的完结
  • 又见桃花吹满头结局+番外+后续(榆锦言桑年)_又见桃花吹满头结局+番外+后续

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

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