В вашем конструкторе SandboxClass1 у вас есть две пары переменных, каждая из которых называется x и y. Там есть x и y, объявленные в самом объекте ("private int x = 1"), и отдельные x и y, которые являются параметрами для конструктора ("int x").
Локальная (параметрическая) переменная shadows переменная класса. Так что если в конструкторе вы только что сделали
x = x;
назначение не будет иметь никакого эффекта.
Ключевое слово this
является ссылкой на объект, к которому был вызван метод / конструктор. В заявлении
this.x = x;
вы используете его для присвоения другому x на уровне класса. Уточняя имя, вы можете отличить их.
Нет необходимости использовать this
с назначением z / zz, поскольку они имеют разные имена.
Это также не требуется в методах getX / Y / Z, поскольку в этих методах нет локальных переменных, скрывающих соответствующие переменные класса. Хотя это не вредит.