美文网首页
一道题目来分析Java中的值传递和引用的传递

一道题目来分析Java中的值传递和引用的传递

作者: lhsjohn | 来源:发表于2018-12-12 15:41 被阅读0次

这是我看到的一道题

private static void change(StringBuffer str11, StringBuffer str12) {

    str12 = str11;
    str11 = new StringBuffer("new world");
    str12.append("new world");
}

public static void main(String[] args) {
    StringBuffer str1 = new StringBuffer("good ");
    StringBuffer str2 = new StringBuffer("bad ");
    change(str1, str2);
    System.out.println(str1.toString());
    System.out.println(str2.toString());
}

结果是什么呢?

先给出这道题目的答案

**good new world

bad**

下面画图来分析这个过程

private static void change(StringBuffer str11, StringBuffer str12) {

    str12 = str11;//2
    str11 = new StringBuffer("new world");//3
    str12.append("new world");//4
}//5

public static void main(String[] args) {
    StringBuffer str1 = new StringBuffer("good ");
    StringBuffer str2 = new StringBuffer("bad ");
    change(str1, str2);//1
    System.out.println(str1.toString());
    System.out.println(str2.toString());
}

执行到第一步的图:

2018-10-24-1.png

执行到第二步的图,这里chage方法中的形参str11,str22是实参str1,str2的地址拷贝。

2018-10-24-2.png

这里str11和str22是实参str1,str2的地址拷贝,接着执行第三步的图:

2018-10-24-3.png

上图中str12地址指向了“good”,接着看第四步图:

2018-10-24-4.png

上图中str11的地址指向了堆中新的对象"new world",接着看第五步的图:

2018-10-24-5.png

收藏自 一枝花算不算浪漫的博客

相关文章

  • 一道题目来分析Java中的值传递和引用的传递

    这是我看到的一道题 结果是什么呢? 先给出这道题目的答案 **good new world bad** 下面画图来...

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

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

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

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

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

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

  • Java 参数的传递

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

  • Java的引用

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

  • Java面试题疑难点

    1. java值传递和引用传递 String为什么是值传递而不是引用传递 答:String是final的

  • 聊聊Java内部类

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

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

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

  • java的参数传递机制

    Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承...

网友评论

      本文标题:一道题目来分析Java中的值传递和引用的传递

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