Java 的引用传递
下面一道题,是关于 Java 的引用传递的问题。
package org.leeing.mem;
class StringBean{
String str = "hello";
}
class IntBean{
int intVal = 100;
}
public class RefDemo02 {
public static void main(String[]args){
StringBean strbean = new StringBean();
strbean.str = "world";
IntBean intbean = new IntBean();
intbean.intVal = 33;
String strname = "strname not Changed";
change(strbean);
change(intbean);
change(strname);
System.out.println(strbean.str); // 输出 "strbean changed"
System.out.println(intbean.intVal);// 输出 999
System.out.println(strname); // 输出 "strname not Changed"
}
public static void change(StringBean temp){
temp.str = "strbean changed";
}
public static void change(String str){
str = "leeing";
}
public static void change(IntBean temp){
temp.intVal = 999;
}
}
输出是:
strbean changed 999 strname not Changed
可以看到 String 是不可变对象,而IntBean和StringBean则通过引用改变了内部变量的值,此处对int和String的改变原理是相同的。
Related posts:
评论