---恢复内容开始---this
第一个引用传递案例:spa
class Message{ private int num; public Message(int num){ this.num=num; } public void setNum(int num){ this.num=num; } public int getNum(){ return this.num; } } public class Test{ public static void main(String args[]){ Message msg = new Message(10); change(msg);//引用传递 System.out.println(msg.getNum());//输出100 } public static void change(Message temp){ msg.setNum(100); } }
对该代码进行内存分析,值类型不会独自占有一块堆内存,必需要有实例化对象,而String类的匿名对象会独自占用一块堆内存,不须要对象3d
第二道引用传递案例code
public class Test{ public static void main(String args[]){ String msg = "hello"; change(msg); System.out.println(msg);//输出hello } public static void change(String temp){ temp="word"; } }
String的匿名对象有独立的堆内存空间,此外字符串一旦声明则不能够被改变,若想改变只有改变其对象地址,内存分析:对象
第三个引用传递案例blog
class Message{ private String str; public Message(String str){ this.str=str; } public void setStr(String str){ this.str=str; } public String getStr(){ return this.str; } } public class Test{ public static void main(String args[]){ Message msg = new Message("hello"); change(msg); System.out.println(msg.getStr()); //输出word } public static void change(Message temp){ temp.setStr("word"); } }
---恢复内容结束---内存
第一个引用传递案例:字符串
class Message{ private int num; public Message(int num){ this.num=num; } public void setNum(int num){ this.num=num; } public int getNum(){ return this.num; } } public class Test{ public static void main(String args[]){ Message msg = new Message(10); change(msg);//引用传递 System.out.println(msg.getNum());//输出100 } public static void change(Message temp){ msg.setNum(100); } }
对该代码进行内存分析,值类型不会独自占有一块堆内存,必需要有实例化对象,而String类的匿名对象会独自占用一块堆内存,不须要对象get
第二道引用传递案例class
public class Test{ public static void main(String args[]){ String msg = "hello"; change(msg); System.out.println(msg);//输出hello } public static void change(String temp){ temp="word"; } }
String的匿名对象有独立的堆内存空间,此外字符串一旦声明则不能够被改变,若想改变只有改变其对象地址,内存分析:
第三个引用传递案例
class Message{ private String str; public Message(String str){ this.str=str; } public void setStr(String str){ this.str=str; } public String getStr(){ return this.str; } } public class Test{ public static void main(String args[]){ Message msg = new Message("hello"); change(msg); System.out.println(msg.getStr()); //输出word } public static void change(Message temp){ temp.setStr("word"); } }