Ответ 1
Вы не можете объявить переменную внутри оператора if, если вы не окружите декларацию фигурными фигурными скобками, так как объявление должно иметь область видимости.
Это будет работать, поскольку переменная объявляется вне оператора if:
String message;
if(true)
message = "Assignment possible";
System.out.println(message)
Это не передает компиляцию, так как переменная будет объявлена в той же области, что и окружающий код, но она будет объявлена только в том случае, если условие истинно, поэтому System.out.println(message)
не будет иметь переменной message
печать во всех случаях:
if(some condition)
String message = "Time to leave earth";
System.out.println(message);
Тот факт, что ваше условие всегда истинно, не имеет никакого значения, поскольку компилятор должен поддерживать все результаты любого условия if.
Теперь, когда вы окружаете объявление фигурными фигурными скобками, вы ограничиваете свою объявленную переменную новой областью:
if(some condition) {
String message = "Time to leave earth";
System.out.println(message); // this will pass compilation since message
// is guaranteed to be found in this scope
}
System.out.println(message); // this won't pass compilation, since message is not
// found in this scope