1、学习内容
通过三个程序来分析引用传递,理解String的不可改变性。
2、具体内容
引用的意义:同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改。
范例:引用传递第一例
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){
=info;
}
public void setInfo(String info){
=info;
}
public String getInfo(){
return ;
}
}
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.同一块堆内存可以被不同的栈内存所指向,不同栈内存可以对同一堆内存进行内容修改;