美文网首页
引用传递进阶分析

引用传递进阶分析

作者: 诗与酒 | 来源:发表于2018-06-06 23:14 被阅读0次

引用传递是java的整体核心
如果不懂引用传递。基本上所有的代码都无法进行正常的分析。下面使用3个简单程序来对引用传递做一个完整的分析。


范例 1:第一道引用传递 (对象的引用)

class Message{
    private int num;
    public void setNum(int num){
        this.num = num;
    }
    public int getNum(){
        return this.num;
    }
}
public class Test{
    public static void main(String[] args){
        Message msg = new Message();
        msg.setNum(100);
        fun(msg);
        System.out.println(msg.getNum());
    }
    public static void fun(Message temp){ //引用传递
        temp.setNum(30);
    }
}

结果: 30

下面通过内存关系图来进行分析:


09.png

范例 2:第二道引用传递 (字符串的引用)

public class Test{
    public static void main(String[] args){
        String str = "hello";
        fun(str);
        System.out.println(str);
    }
    public static void fun(String temp){ //引用传递
        temp = "word";
    }
}

结果:hello

本题目分析的关键在于:字符串常量一旦声明则不可改变,字符串对象的内容的改变依靠的是地址的引用关系变更。

下面通过内存关系图来进行分析:


10.png

范例 3:第三道引用传递 (对象and字符串的引用)

class Message{
    private String note;
    public void setNote(String note){
        this.note = note;
    }
    public String getNote(){
        return this.note;
    }
}
public class Test{
    public static void main(String[] args){
        Message msg = new Message();
        msg.setNote("Hello");
        fun(msg);
        System.out.println(msg.getNote());
    }
    public static void fun(Message temp){ //引用传递
        temp.setNote("world");
    }
}

结果:world

如果要想对以上的方法进行分析,一定要有一个前提:把String类的使用当作一个基本数据类型那样来操作。

下面通过内存关系图来进行分析:(按照基本数据类型分析)


11.png

String是引用类型,不应该按照基本数据类型那样来进行分析,应该按照引用类型来进行分析。

下面通过内存关系图来进行分析:(按照引用数据类型分析)


12.png

总结:

对于字符串最简单的做法是按照基本数据类型那样来进行分析。

相关文章

  • 第五天___①

    引用传递进阶分析 引用传递是Java的核心,如果我们不懂引用传递,基本上所有的代码都无法进行正常的分析。范例一: ...

  • Java引用传递进阶分析

    Java引用传递进阶分析 我们通过几个例子与内存关系图进一步的分析Java的引用传递 例一 代码如下: 内存关系图...

  • 引用传递进阶分析

    引用传递是java的整体核心如果不懂引用传递。基本上所有的代码都无法进行正常的分析。下面使用3个简单程序来对引用传...

  • 引用传递进阶分析

    引用传递是Java的整体核心,如果你不懂引用传递,基本上所有的代码都无法进行正常的分析。 一.通过题目来进行分析 ...

  • 6-对象引用分析

    引用传递分析     类本身属于引用数据类型,既然是引用数据类型,那么久牵扯到内存的引用传递,所谓的引用传递的本质...

  • 引用传递内存分析

  • 引用传递分析实例

    前言:引用传递是整个java的精髓所在,如果引用传递不清楚,那么几乎就等同于不会java,下面将通过三个程序进行引...

  • C++基础

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

  • 7-引用与垃圾产生分析

        经过一系列的分析之后已经确认,所有 引用传递的本质就是一场堆内存的调戏游戏。但是对于引用传递如果处理不当,...

  • Day12-Java

    值传递和引用传递 值传递是值的拷贝, 引用传递是引用的拷贝 String 类型是引用类型, new String ...

网友评论

      本文标题:引用传递进阶分析

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