引用传递进阶分析

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

一.通过题目来进行分析

1. 第二道题目

范例:

public class TestDemo {

    public static void main(String args[]) {

        String str = "hello" ;

        fun(str) ;

        System.out.println(str) ;

    }

    public static void fun(String temp) {   // 引用传递

        temp = "world" ;

    }

}

输出:hello

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

2. 第三道题目

class Message {

private String note ;

public void setNote(String note) {

this.note = note ;

}

public String getNote() {

return this.note ;

}

}

public class TestDemo {

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.setMessage("world") ;

}

}

输出:world

分析方法1:

分析方法2:


个人理解: 根据第二题和第三题分析得出:因为第二题中的temp是指向了一个新的匿名对象,而第三题中的temp是指向了一个已经存在的对象并进行了修改,所以造成了输出结果的不同。

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

感悟:弄清楚引用传递关系,才能够对代码进行深入的分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容