引用传递是Java的精髓所在,可以说如果引用传递你不清楚,那么几乎可以说你不会Java
引用传递的核心意义:同一块堆内存空间可以被不同的栈内存所指向,不同的栈内存可以指向同一个堆内存。
范例:
class Message{
private int num=10;
public Message(int num){
this.num=num;
}
public void setNum(int num){
this.num=num;
}
public int getNum(){
return this.num;
}
}
public class TestDemo{
public static void main(String args[]){
Message msg=new Message(30);
fun(msg);
System.out.println(msg.getNum());
}
public static void fun(Message temp){
temp.setNum(100);
}
}
结果是:100
范例二:
public class TestDemo{
public static void main(String args[]){
String msg="Hello";
fun(msg);
System.out.println(msg);
}
public static void fun(String temp){
temp="World";
}
}
输出的是Hello。相信很多的同学搞不懂了。这个题难就难在Java中String类对象内容一旦声明就不可以改变。改变靠的是引用地址的改变。
范例三
class Message{
private String info="nihao";
public Message(String info){
this.info=info;
}
public void setInfo(String info){
this.info=info;
}
public String getInfo(){
return this.info;
}
}
public class TestDemo{
public static void main(String args[]){
Message msg=new Message("Hello");
fun(msg);
System.out.println(msg.getInfo());
}
public static void fun(Message temp){
temp.setInfo("World");
}
}```