引用传递是java的整体核心,如果不懂基本的传递,所有代码都无法进行正常分析。
下面使用三个简单的程序对引用传递做一个完整
第一道引用程序
class Message{
private int num;
public void setNum(int num) {
this.num=num;
}
public int getNum() {
return this.num;
}
}
public class StringDemo {
public static void main(String args[]) {
Message msg=new Message();
msg.setNum(100);//设置值 msg=100
System.out.println(msg.getNum());
fun(msg);//引用传递 等价于Messgae temp=msg=30;
System.out.println(msg.getNum());
}
public static void fun(Message temp) {
temp.setNum(30);
}
}//结果30
范例:第二道
public class StringDemo {
public static void main(String args[]) {
String str="hello";
fun(str);
System.out.println(str);
}
public static void fun(String temp) {
temp="world";
}
} //结果 hello
本题目分析的关键在于:字符串常量一旦声明则不可改变,
字符串内容改变依靠的是地址的引用关系变更。
★新字符串一定要开辟新的程序空间
temp="world";
范例:第三道
class Message{
private String note;//null
public void setNote(String note) {
this.note=note;
}
public String getNote() {
return this.note;
}}
public class StringDemo {
public static void main(String args[]) {
Message msg=new Message();
msg.setNote("hello");//note="hello"
fun(msg);//temp="hello"
//temp.setNote("world")
//设置temp所指向的字符串的值
System.out.println(msg.getNote());
}
public static void fun(Message temp) {
temp.setNote("world");
}
}
如果要想对以上代码进行分析,一定要有一个前期:
先把String类的使用当作一个基本数据类型那样操作
String类是引用类型,你不应该按照基本数据类型分析
第三道引用范例完整分析
因为note是一个字符串 所以会
这个操作如果很懵:对于字符串最简单的做法就是按照基本数据类型进行分析