Код решения публиковать не буду, просто представим, что задача уже решена (решить её всё равно не сложно).
Если в main вызвать System.out.println(A);, то значение А равно 15.
Это произошло потому, что сначала А было присвоено значение 5, а позже уже значение 15 ?
И почему вообще в данном случае мы не получаем ошибку "variable A is already defined in the scope" ?
Ярослав
35 уровень
Немножко просветите пожалуйста
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
11 мая 2018, 20:31решение
В объявлении класса объявляется и инициализируется переменная А, переменная статическая - т.е. ее инициализация происходит при загрузке класса.
В строке А=15 этой переменной просто присваивается новое значение, происходит это только при вызове метода main (если он будет вызван), класс к этому времени уже загружен. Никакой ошибки здесь быть не может, потому что объявляется переменная только один раз и только в одном месте.
+9
Ярослав QA Automation Test Engine в Ukraine Expert
11 мая 2018, 21:09
То есть значение переменной равно 5, и только при вызове main присваивается новое значение 15.
Понял.
0
john sinio
5 марта 2019, 18:04
подскажите как решить эту задачу;
package com.javarush.task.task06.task0615;
/*
Феншуй и статики
*/
public class Solution {
public int A = 5;
public int B = 2;
public static int C = A * B;
public static void main(String[] args) {
A = 15;
}
}
0
Sergey MorozExpert
5 марта 2019, 20:19
сделать статическим всё, что используется в статик контексте (подсказка: это одна переменная), и нестатическим - всё, что может быть нестатическим (подсказка: из нестатического контекста можно оперировать статическим, а наоборот - нет)
+2