public class TestString { int a=0;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestString t=new TestString();
t.a=2;
change_Obj(t);
System.out.println(t.a); String str=new String("abc");
change_String(str);
System.out.println(str);
}
public static void change_String(String str)
{
str+="aaa";
}
public static void change_Obj(TestString obj)
{
obj.a+=1;
}
}
输出结果:
3
abc
String 类型的变量str不也是对象吗?为什么传递的时候传的是值而不是引用。
obj传递的则是引用。
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestString t=new TestString();
t.a=2;
change_Obj(t);
System.out.println(t.a); String str=new String("abc");
change_String(str);
System.out.println(str);
}
public static void change_String(String str)
{
str+="aaa";
}
public static void change_Obj(TestString obj)
{
obj.a+=1;
}
}
输出结果:
3
abc
String 类型的变量str不也是对象吗?为什么传递的时候传的是值而不是引用。
obj传递的则是引用。
change_Obj(TestString obj)
传的是 obj
obj.a +=1
没有改变 obj,仅仅是改变了 obj.a str+="aaa";
这个改变的是 str,不会影响调用函数的 str