자바가 값으로 매개 변수를 전달한다는 사실을 잘 알고 있으며 개체가 참조로 유익하게 보관되므로 값을 변경할 수있을 때 개체 값을 변경할 수있는 방법을 잘 알고 있습니다. 또한 클래스 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
감사합니다 여기에 문제의 코드입니다.