Проблема необязательности фигурных скобок в Java
Несмотря на то, что Java допускает показанные выше сокращения с фигурными скобками, так лучше не делать: это рассадник трудноуловимых ошибок.
Пусть, к примеру, есть следующий код:
int num = 3;
if (num > 0)
System.out.println(num);
Пусть теперь мы решили в том случае, если условие выполняется, сделать еще и второй вывод:
int num = 3;
if (num > 0)
System.out.println(num);
System.out.println("Y");
Однако без фигурных скобок внутри условия
находится только первая команда. Она
выполнится при верном условии, а вторая -
всегда. Вторая команда уже вне if.
Фактически наш код эквивалентен такому:
int num = 3;
if (num > 0) {
System.out.println(num);
}
System.out.println("Y"); // эта строка оказалась снаружи условия
А мы бы хотели такой код:
int num = 3;
if (num > 0) {
System.out.println(num);
System.out.println("Y"); // эта строка внутри условия
}
Именно поэтому рекомендуется всегда выполнять расстановку фигурных скобок, чтобы не попадать в такого рода ошибки.
Не запуская код, определите, что выведется на экран:
int num = 5;
if (num == 5)
System.out.println(num);
System.out.println("Y");
Не запуская код, определите, что выведется на экран:
int num = 0;
if (num == 5)
System.out.println(num);
System.out.println("Y");
Не запуская код, определите, что выведется на экран:
int num = 0;
if (num == 5)
System.out.println(num);
System.out.println("N");
System.out.println("Y");