By value — значение, передаваемое в функцию, копируется в стек вызовов, и забирается функцией оттуда.
* Функция не может изменить значение так, чтобы это увидела вызывающая сторона, так как работает с копией
* Собственно, происходит копирование, кушающее время
By reference, которого нет в JVM — в функцию передаётся указатель на значение.
* Функция по этой ссылке может поменять значение снаружи
* Копирование всего значения не происходит
В джавке же по сути копируется ссылка, которая передаётся в функцию. То бишь поменять саму ссылку не представляется возможным, но возможно поменять объект по этой ссылке.