【发布时间】:2014-07-29 08:03:16
【问题描述】:
我很清楚 Java 按值传递参数,以及由于对象作为引用保存在变量中,因此当这些值是可变的时,如何更改对象值。我还理解的是,String 类包含不可变的对象。因此,为了测试我的理解,我决定编写一些代码,将对象作为参数传递给方法,更改其字符串和 int 变量,然后打印它。我预计,由于参数只是一个副本,因此这些更改不会影响传入的变量。作为参数传入一个对象是否不会将整个对象复制到一个新变量中,而只是传递该对象引用?这与几个消息来源告诉我的相反。这是有问题的代码:
public class Test {
public int testVar = 20;
public String testString = "Hello";
public static void testCheck(Test test){
test.testString = new String("GoodBye");
test.testVar = 10;
}
public void printTest(){
System.out.println("testVar: " + testVar + " testString: " + testString);
}
public static void main(String[] args) {
Test test1 = new Test();
test1.printTest();
testCheck(test1);
test1.printTest();
}
}
输出:
testVar: 20 testString: Hello
testVar: 10 testString: GoodBye
预期:
testVar: 20 testString: Hello
testVar: 20 testString: Hello
提前致谢。
【问题讨论】:
标签: java parameters pass-by-reference pass-by-value