В java существует два вида типов:
примитивы и
ссылочные типы
int - примитив. Таких в java несколько - это числовые типы (int, double etc.) и boolean.
При передаче примитивов в методы, ты на самом деле даёшь копии этих примитивов.
Со
ссылочными типами (String, Scanner, MyClass, массивы), ты передаешь настоящую ссылку на них. По-этому ты можешь ими манипулировать, и по возвращению из метода они действительно меняются.
https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html