通过三个程序来分析引用传递,理解String的不可改变性。
引用的意义:同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改。 范例:引用传递第一例
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); } }范例:引用传递第二例
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"; } }内存分析: 以上的题目有一个解决思路: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"); } }1.String类不可改变; 2.同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改;