引用传递是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是指向了一个已经存在的对象并进行了修改,所以造成了输出结果的不同。
总结:对于字符串最简单的做法是按照基本数据类型进行分析。
感悟:弄清楚引用传递关系,才能够对代码进行深入的分析。