2017-01-19 15 views
1

в «Oracle Certifi ed Associate Java SE 8 Programmer I Study Guide», говорящий о передаче по значению, говоря: Методы вызова при ссылке на объект влияют на вызывающийJava Методы вызова при ссылке на объект влияют на вызывающего абонента

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"); 
    } 

В этом случае выход Webby, так как метод просто вызывает метод параметра . Он не переназначает имя другому объекту.

enter image description here

Так что же это означает? Я не понял. Разве не должно быть 2 разных объекта?

ответ

0

Java передает параметры объекта в виде копии ссылки на исходный объект. Это означает, что StringBuilder передан в speak(), так как s - это тот же экземпляр StringBuilder, что и в основной функции, а вызывающие его методы будут влиять на него в обоих ваших методах. Однако, если вы должны были указать s внутри speak() в другой экземпляр StringBuilder, это не повлияет на StringBuilder name в функции main().

 Смежные вопросы

  • Нет связанных вопросов^_^