---恢复内容开始---
第一个引用传递案例:
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类的匿名对象会独自占用一块堆内存,不需要对象
第二道引用传递案例
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"); }}
---恢复内容结束---
第一个引用传递案例:
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类的匿名对象会独自占用一块堆内存,不需要对象
第二道引用传递案例
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"); }}