Одним из фундаментальных элементов многих языков программирования являются условные конструкции. Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий.
В языке Java для этой цели имеется условная конструкция if..else и тернарный оператор ?:
Выражение if..else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код. Ее простейшая форма состоит из блока if:
if(условие){
выполняемые инструкции
}
После ключевого слова if идет условие. Условие должно представлять значение типа boolean. Это может быть непосредственно значение типа boolean или результат условного выражения
или другого выражения, которое возвращает значение типа boolean. И если это условие истинно (равно true), то срабатывает код, который помещен далее после условия внутри фигурных скобок.
Например
:
class Program {
public static void main(String[] args) {
int num1 = 6;
int num2 = 4;
if(num1 > num2){
System.out.printf("число %d больше числа %d\n", num1, num2);
}
}
}
Так как, в данном случае первое число больше второго, то выражение num1 > num2 истинно и возвращает значение
true. Следовательно, управление переходит в блок кода после фигурных скобок и начинает выполнять содержащиеся там инструкции, а
конкретно метод System.out.printf, который выводит строку на консоль. Если бы первое число оказалось бы меньше второго или равно ему, то инструкции в блоке if не выполнялись бы.
Если блок if содержит одну инструкцию, то мы можем его сократить, убрав фигурные скобки:
class Program {
public static void main(String[] args) {
int num1 = 6;
int num2 = 4;
if(num1 > num2)
System.out.printf("число %d больше числа %d\n", num1, num2);
}
}
Но что, если мы захотим, чтобы при несоблюдении условия также выполнялись какие-либо действия? В этом случае мы можем добавить блок else:
class Program {
public static void main(String[] args) {
int num1 = 6;
int num2 = 40;
if(num1 > num2){
System.out.println("число num1 больше числа num2");
}
else{
System.out.println("число num1 меньше или равно числу num2");
}
}
}
Поскольку здесь число num1 НЕ больше числа num2, то условие num1 > num2 не выполняется и возвращает false, поэтому будет выполняться блок инструкций после else.
Опять же если блок else содержит толко одну инструкцию, то оять же мы можем его сократить, убрав фигурные скобки:
int num1 = 6;
int num2 = 40;
if(num1 > num2)
System.out.println("число num1 больше числа num2");
else
System.out.println("число num1 меньше или равно числу num2");
Но при сравнении чисел мы можем насчитать три состояния: первое число больше второго, первое число меньше второго и числа равны.
С помощью блоков else if мы можем обрабатывать дополнительные условия:
class Program {
public static void main(String[] args) {
int num1 = 6;
int num2 = 40;
if(num1 > num2){
System.out.println("число num1 больше числа num2");
}
else if(num1 < num2){
System.out.println("число num1 меньше числа num2");
}
else{
System.out.println("числа num1 и num2 равны");
}
}
}
При необходимости можно добавить несколько выражений else if::
class Program {
public static void main(String[] args) {
String name = "Eugene";
if (name == "Tom")
System.out.println("Вас зовут Tomas");
else if (name == "Bob")
System.out.println("Вас зовут Robert");
else if (name == "Mike")
System.out.println("Вас зовут Michael");
else
System.out.println("Неизвестное имя");
}
}
Тернарную операция имеет следующий синтаксис:
[первый операнд - условие] ? [второй операнд] : [третий операнд]
Таким образом, в этой операции участвуют сразу три операнда.
В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true, то
возвращается второй операнд; если условие равно false, то третий. Например:
int x = 3; int y = 2; int z = x < y ? (x+y) : (x-y);
Здесь результатом тернарной операции является переменная z. Сначала проверяется условие x<y.
И если оно соблюдается, то z будет равно второму операнду - (x+y), иначе z будет равно третьему операнду.