2017-01-19 4 views
1

호출자에게 영향을 미칩니다. 객체 참조에 대한 호출 메소드는 상기 방법은 단순히 파라미터의 메소드를 호출하기 때문에,이 경우 호출자객체에 대한 참조의 Java 호출 메소드는 값에 의한 패싱에 대해 말하는 "Oracle Certifi ed Associate Java SE 8 프로그래머 I 스터디 가이드"의

public static void main(String[] args) { 
    StringBuilder name = new StringBuilder(); 
    speak(name); 
    System.out.println(name); // Webby 
    } 
    public static void speak(StringBuilder s) { 
    s.append("Webby"); 
    } 

는 출력 물갈퀴이다. 이름을 다른 객체에 재 할당하지 않습니다.

enter image description here

그래서 이것은 무엇을 의미합니까? 나는 그것을 얻지 않았다. 2 개의 다른 객체가 없어야합니까?

답변

0

Java는 객체 매개 변수를 원본 객체에 대한 참조 사본으로 전달합니다. 즉 으로 speak()에 전달 된 StringBuilder는 main 함수에서와 매우 동일한 StringBuilder 인스턴스이며 메서드 호출은 두 메서드 모두에서 영향을 미칩니다. 그러나 sspeak() 안에 다른 StringBuilder 인스턴스로 지정하면 main() 함수에서 StringBuilder name에 영향을 미치지 않습니다.