第一道:
样例代码:
class Message{
private int num;
public int getNum() { return num; }
public void setNum(int num) { this.num = num; }
}
public class Main {
public staticvoid main(String[] args) {
Message msg = new Message();
msg.setNum(100);
fun(msg);
System.out.println(msg.getNum()); // 结果为 30
}
publicstatic void fun(Message temp){
temp.setNum(30);
}
}
内存分析图:
第二道:
本道分析的关键在于:
字符串常量一旦声明则不可改变,字符串对象内容的改变的依靠的是地址的引用关系变更。
样例代码:
public class Main {
public staticvoid main(String[] args) {
String str = "hello";
fun(str);
System.out.println(str); // 最终结果是 hello
}
publicstatic void fun(String temp){
temp = "world";
}
}
内存分析:
第三道:
样例代码:
class Message{
private String note;
public String getNote() { return note; }
public void setNote(String note) { this.note = note; }
}
public class Main {
public staticvoid main(String[] args) {
Message msg = new Message();
msg.setNote("hello");
fun(msg);
System.out.println(msg.getNote()); // 最终结果是 world
}
publicstatic void fun(Message temp){
temp.setNote("world");
}
}
内存分析:
方式一:
将String 按照普通基本数据类型分析 (最简单,略不合适)
方式二:
因为String 引用类型,所以按照引用类型数据分析