Помогите понять как работает программа
Всем привет, заранее прошу не кидаться камнями, так как пример один из самых начальных и простых, но въехать в до конца не получается. Вот кодЭЖ
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 шт):
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" и так далее вызывают огромную путаницу не только для тех, кто читает ваш код, но и у вас в голове.