美文网首页
Java中的值传递与引用传递

Java中的值传递与引用传递

作者: TongJing | 来源:发表于2020-03-20 18:24 被阅读0次

今天在看题的时候,碰到一道题,挺好,分享一下。

给定以下代码,程序的运行结果是()

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 str1,char ch1[]){
        str1="test ok";
        ch1[0]='g';
    }
}
A. goodandabc
B. goodandgbc
C. test okandabc
D. test okandgbc

先说答案。选B。
分析一下,开始对象实例化了一个Example对象,叫ex。并有两个属性str和ch。具体分配如下 所示。

图1
进入到change()方法后,改变如下:
图2
图3
所以结果为B。
字符串是不可变的,所以当str1被赋值为"test ok",就是将引用指向了新的地方,并不是改变原有的"good"。而数组呢,可以改变,将ch[0]修改为了g。

关于Java是值传递还是引用传递的问题,Java是值传递的。解释如下:

从上面的例子也可以看出,在传递参数的时候,将str(本身是一个对象的引用),复制了一份,叫str1,他也是一个对象的引用。他们指向同一个对象。如图2。

引用传递的话,那么,在传递参数的时候,是直接将str传递给了形参,只是换了一个名字叫做str1,本质上str和str1是同一个。如图4所示。 图4
所以Java为值传递。

如有理解不正确的地方,还请留言指正,谢谢。

相关文章

  • Java 与值传递

    问: 什么是值传递?什么是引用传递?为什么说 Java 中只有值传递? 一、值传递与引用传递 实参与形参: 实际参...

  • 聊聊Java内部类

    一.磨叽磨叽Java值传递与引用传递 “在Java里面参数传递都是按值传递”即:按值传递是传递的值的拷贝,按引用传...

  • Java 参数的传递

    Java 的参数是值传递,不是引用传递 Java 中只有值传递,方法按值调用(call by value)。也就是...

  • [译] Java 值传递 VS 引用传递

    Java是值传递还是引用传递一直都有争论,我们最终下个结论,Java是值传递而不是引用传递。如果Java是引用传递...

  • 自整理3 值传递和引用传递

    java的值传递和引用传递 首先,由于java没有指针机制,所有java归根究底只有值传递,没有引用传递。java...

  • Java Lambda表达式引用局部变量的原理

    规则1 Java中变量分为:基本类型变量和引用类型变量 规则2 Java方法传参只有值传递,没有引用传递,传递的值...

  • JAVA是按值传递还是按引用传递

    java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? String和int参数传递是按值传递还是引用...

  • Java值传递、数据加密

    值传递 Java 基本类型值传递,引用类型值传递 内存图解:

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • Java的引用

    参考链接: Java到底是值传递还是引用传递 Java的四种引用方式 Java中的强引用、软引用、弱引用和虚引用 ...

网友评论

      本文标题:Java中的值传递与引用传递

      本文链接:https://www.haomeiwen.com/subject/ffajyhtx.html