Java всегда проходит по значению, без каких-либо исключений, когда-либо.
Итак, как же все могут быть смущены этим и считают, что Java проходит по ссылке или думает, что они пример Java, действующий как пропуск по ссылке? Ключевым моментом является то, что Java никогда не обеспечивает прямой доступ к значениям самих объектов , в любых обстоятельствах. Единственный доступ к объектам через ссылку к этому объекту. Поскольку объекты Java всегда всегда доступны через ссылку, а не напрямую, обычно говорят о полях и переменных и аргументах метода как объекты , когда педантично они являются только ссылками на объекты . Путаница проистекает из этого (строго говоря, неправильного) изменения в номенклатуре.
Итак, при вызове метода
int
, long
, и т. д.), пропуск по значению - фактическое значение примитива (например, 3). Итак, если у вас есть doSomething(foo)
и public void doSomething(Foo foo) { .. }
, два Foos скопировали ссылки , которые указывают на тот же объектов.
Естественно, что передача по значению ссылки на объект очень похожа на (и на практике неотличима от), передавая объект по ссылке.