public class ceshi{
String str=new String("good");
public static void main(String[] args){
ceshi cs=new ceshi();
cs.change(cs.str);
System.out.print(cs.str);
}
public void change(String str){
str="test ok";
}
}
正确答案是输出good,请问为什么不是test ok
因为Java是传值而不是传引用。你str="test ok";将str指向另一个字符串常量,不会影响实参。
这样就是输出你要的值了,.输出test ok .
public class Main {
String str=new String("good");
public static void main(String[] args){
Main cs=new Main();
cs.str=cs.change(cs.str);
System.out.print(cs.str);
}
public String change(String str){
str="test ok";
return str;
}
}
很多初学者被误导,值类型传值,引用类型传引用,其实这是不对的,看如下代码
void foo1(A a)
{
a = new A();
a.x = 123;//不会改变原来的对象的x
}
void foo2(A a)
{
a.x=123; //会改变原来的对象x
}
class A
{
public int x;
}
change()方法改变的只是局部变量。