Если ты используешь локальные переменные, у них нет значений по умолчанию, их всегда нужно инициализировать перед использованием. Если ты используешь свойства класса, то у них есть значения по умолчанию. Для boolean будет false, для String - null
Если ты декларируешь переменные внутри метода, то это локальные переменные метода, если в классе, то в классе. К значениям по умолчанию это отношения не имеет.
То есть переменные в методе не имеют значении по умолчанию. И выше сказанное - является ложью?
Это происходит потому, что переменные без слова static не будут проинициализированы к моменту вызова println. Статические данные всегда загружаются первыми.
Если ты используешь локальные переменные, у них нет значений по умолчанию, их всегда нужно инициализировать перед использованием. Если ты используешь свойства класса, то у них есть значения по умолчанию. Для boolean будет false, для String - null
Подумай что такое переменная. Это некая именованная область памяти, в которой может находиться значение определенного типа. Так как ты её только что объявил, но не инициализировал, то в этой области памяти будет находиться какой-то мусор. Поэтому компилятор тебе не дает её использовать.
Когда ты используешь переменные класса, то при вызове new Java сама любезно заполнит необходимые свойства значениями по умолчанию
Дело не в том локальные они или нет, дело в очередности действий. Сначала инициализируется класс и все его переменные, а потом методы. Например, если сделать локальные переменные метода статическими, то компилятор скажет: нельзя ссылаться на статическую область памяти из нестатического окружения, поэтому или уберите слово статик или зделайте метод статическим.
Дело не в том локальные они или нет, дело в очередности действий. Сначала инициализируется класс и все его переменные, а потом методы. Например, если сделать локальные переменные метода статическими, то компилятор скажет: нельзя ссылаться на статическую область памяти из нестатического окружения, поэтому или уберите слово статик или зделайте метод статическим.
А что подразумевается под "инициализацией методов"?
Дело не в том локальные они или нет, дело в очередности действий. Сначала инициализируется класс и все его переменные, а потом методы. Например, если сделать локальные переменные метода статическими, то компилятор скажет: нельзя ссылаться на статическую область памяти из нестатического окружения, поэтому или уберите слово статик или зделайте метод статическим.
Так у меня метод и есть статик. а переменные без статика