Java 引用传递,
分享于 点击 36896 次 点评:215
Java 引用传递,
No.1
class Message{
private int num=12;
public Message(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
public class testDemo1 {
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);
}
}
内存图:
No.2
public class TestDemo2 {
public static void main(String[] args) {
String msg="Hello";
fun(msg);
System.out.println(msg);//String类的对象的内容一旦声明部能改变;对象的改变是依赖引用的改变来实现的;
}
public static void fun(String temp) {
temp="world";
}
}
内存图:
NO.3
对比 int x=10; y=x; y=20;和string a="hello";string b=a; string b="world";很相似;
class Message{
private String info="hello";
public Message(String info) {
super();
this.info = info;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
public class TestDemo3 {
public static void main(String[] args) {
Message msg=new Message("hello");
fun(msg);
System.out.println(msg.getInfo());
}
public static void fun(Message msg) {
// TODO Auto-generated method stub
msg.setInfo("world");
}
内存图:
以上的内存图并部严格,因为在程序里面info也是一个String类的对象,如果想要描述得更加清楚可以使用下面的内存关系图
内存tuNo3.2
总结:虽然String属于类,为引用类型,但是由于它的不可变得特点,会把String当作一个基本得类型来使(每个Sting类型的变量只能保存1个数据)
相关文章
- 暂无相关文章
用户点评