日期:2014-05-20  浏览次数:20743 次

java面试题,求大神指点

public class TestStr {
public String str="1234";
public Integer number=10;

public void changeStr(String s){
s="hello";
}
public void changeInt(Integer i){
i=20;
}

public static void main(String[] arg0) {
TestStr test = new TestStr();
test.changeStr(test.str);
test.changeInt(test.number);
System.out.println(test.str);
System.out.println(test.number);
}

}


输出结果是:
1234
10
这是为什么呢?为什么changeStr不能改变str的值,很疑惑。。
面试题 java string

------解决方案--------------------
引用:
Quote: 引用:

值传递问题
能说具体一点么


java中方法调用时,实参把它的值传递给对应的形参,方法执行时形参值的改变不影响实参的值。
------解决方案--------------------
Java的值传递,方法的形参和实参占据不同的内存空间,方法调用时,将方法的实参值拷贝给形参,在方法中对形参进行操作时不会影响到实参。。。。总之在JAVA中不能通过修改方法中的形参值实现改变方法实参值得目的