Стоит обращаться к переменным внутри класса просто по имени или this.имя?

167
12 апреля 2022, 04:30

Допустим у нас есть код:

 public Clock(String cityName, int hours, int minutes, int seconds) {
            this.cityName = cityName;
            this.hours = hours;
            this.minutes = minutes;
            this.seconds = seconds;            
        }
        private void printTime() {
        System.out.println(String.format("В г. %s сейчас %d:%d:%d!", cityName, hours, minutes, seconds))
        }  

Есть ли разница, обращаться к переменным класса внутри класса (в методе printTime, как вариант) просто по имени или this.имя, пожалуйста, подскажите?

Answer 1

Это имеет техническое значение только тогда, когда у нас есть локальная переменная с точно таким же именем. Тогда нужно использовать this для обращения к переменной класса. Если же его не будет, компилятор поймет это как обращение к локальной переменной.
А в общем - пишите, как вам удобнее. Но лучше делать это в едином стиле - использовать везде this или не использовать вовсе(за исключением случая, описанного выше).

Answer 2

Если например в классе объявлено поле name и в методе также объявлено поле name, то при обращении к name без указания this, будет использоваться переменная объявленная в методе. Поэтому, чтобы не сделать случайно ошибку и не использовать поле метода в место поля класса, лучше при обращении к полям класса писать this.

public class Clock {
private String name = "Name 1";
private void printTime() {
     String name = "Name 2";
     System.out.println(this.name);
     System.out.println(name);
     }
Out:
Name 1
Name 2
READ ALSO
Как осуществить поиск по словам

Как осуществить поиск по словам

Задача: осуществить поиск по словамНапример, есть слово strong (это первый массив), а есть armstrong (это второй массив)

117
Scanner в каждом классе - рационально ли?

Scanner в каждом классе - рационально ли?

Возник такой вопросИмеется 5 классов + Main

230
Как сделать условие корректным

Как сделать условие корректным

Вопрос: как изменить код, чтобы он корректно работалОсновная проблема в инициализации массива

196