У меня есть следующий код:ссылки Пасс по значению Java
public class PassReferenceByValue {
static void modify(String m)
{
m = "Else";
}
public static void main(String [] arg)
{
String actual = "Something";
modify(actual);
System.out.println(actual);
}
}
Он будет печатать Something
.
Я получаю, что Java не передает объекты вообще. Вместо этого он создает копию переданной ссылки. Если я правильно понял, когда я вызываю modify(actual)
Java создает другую ссылку на тот же объект. Итак, теперь у нас есть две ссылки, ссылающиеся на объект actual
. Теперь, через вторую ссылку, мы модифицируем объект, и объект должен измениться. Объект actual
должен измениться, потому что через скопированную ссылку мы имеем тот же доступ к объекту.
Может ли кто-нибудь объяснить мне, где я не понимаю концепцию передачи ссылок по значению?
http://stackoverflow.com/questions/40480/is-java-pass-by-reference – rajesh
(И посмотрите на другие другие вопросы справа). –
m = "Else"; не изменяйте какой-либо объект. Он создает новый строковый объект, который содержит строку «Else», а затем меняет m для ссылки на этот новый объект. – MTilsted