Помогите понять как работает программа

Всем привет, заранее прошу не кидаться камнями, так как пример один из самых начальных и простых, но въехать в до конца не получается. Вот кодЭЖ

    class Letter {
char c;
}

 public class Main {
  static void f(Letter y) {
    y.c = 'z';
}
    public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        System.out.println("1: x.c: " + x.c);
        f(x);
        System.out.println("2: x.c: " + x.c);
    }
}

Проблема заключается в том, что я не могу понять логику работы f(x), поэтому решил обратиться за помощью к более опытным людям. Объясните пожалуйста как работает f(x), к чему и после чего оно обращается. Заранее спасибо за ответ.


Ответы (1 шт):

Автор решения: instahipsta282
class Letter {
    char c;
}

public class Main {
    static void f(Letter y) {
        y.c = 'z';
    }
    public static void main(String[] args) {
        Letter x = new Letter();
        x.c = 'a';
        System.out.println("1: x.c: " + x.c);
        f(x);
        System.out.println("2: x.c: " + x.c);
    }
}

Разберем с самого начала:

1) В методе main ты создаешь объект класса Letter под названием x;

2) Переменной c объекта x присваивается значение 'а';

3) Печатается строка с значением переменной c

4) Вызывается статический метод f(Letter y); с аргументом x(объектом класса Letter, который мы создали в пункте 1);

5) В методе f переменной c объекта x присваевается новое значение 'z'(вместо старого 'a');

6) Опять печатается уже новое значение переменной c объекта x.

Думаю, смысл всего этого кода показать, что объекты в Java передаются по ссылке - вы это видите, когда вставляете свою переменную в метод, ее значение меняется внутри метода и вы печатаете уже новое значение

На будущее совет: пытайтесь называть все - объекты, классы, переменные осмысленно. Ибо "x", "c" и так далее вызывают огромную путаницу не только для тех, кто читает ваш код, но и у вас в голове.

→ Ссылка