Условные выражения

Последнее обновление: 16.04.2018

Условные выражения представляют собой некоторое условие и возвращают значение типа boolean, то есть значение true (если условие истинно), или значение false (если условие ложно). К условным выражениям относятся операции сравнения и логические операции.

Операции сравнения

В операциях сравнения сравниваются два операнда, и возвращается значение типа boolean - true, если выражение верно, и false, если выражение неверно.

  • ==

    сравнивает два операнда на равенство и возвращает true (если операнды равны) и false (если операнды не равны)

    int a = 10;
    int b = 4;
    boolean c = a == b;    		// false
    boolean d = a == 10;       // true
    
  • !=

    сравнивает два операнда и возвращает true, если операнды НЕ равны, и false, если операнды равны

    int a = 10;
    int b = 4;
    boolean c = a != b;    		// true
    boolean d = a != 10;       // false
    
  • < (меньше чем)

    Возвращает true, если первый операнд меньше второго, иначе возвращает false

    int a = 10;
    int b = 4;
    boolean c = a < b; 	// false
    
  • > (больше чем)

    Возвращает true, если первый операнд больше второго, иначе возвращает false

    int a = 10;
    int b = 4;
    boolean c = a > b; 	// true
    
  • >= (больше или равно)

    Возвращает true, если первый операнд больше второго или равен второму, иначе возвращает false

    boolean c = 10 >= 10; 	// true
    boolean b = 10 >= 4; 	// true
    boolean d = 10 >= 20; 	// false
    
  • <= (меньше или равно)

    Возвращает true, если первый операнд меньше второго или равен второму, иначе возвращает false

    boolean c = 10 <= 10; 	// true
    boolean b = 10 <= 4; 	// false
    boolean d = 10 <= 20; 	// true
    

Логические операции

Также в Java есть логические операции, которые также представляют условие и возвращают true или false и обычно объединяют несколько операций сравнения. К логическим операциям относят следующие:

  • |

    c=a|b; (c равно true, если либо a, либо b (либо и a, и b) равны true, иначе c будет равно false)

  • &

    c=a&b; (c равно true, если и a, и b равны true, иначе c будет равно false)

  • !

    c=!b; (c равно true, если b равно false, иначе c будет равно false)

  • ^

    c=a^b; (c равно true, если либо a, либо b (но не одновременно) равны true, иначе c будет равно false)

  • ||

    c=a||b; (c равно true, если либо a, либо b (либо и a, и b) равны true, иначе c будет равно false)

  • &&

    c=a&&b; (c равно true, если и a, и b равны true, иначе c будет равно false)

Здесь у нас две пары операций | и || (а также & и &&) выполняют похожие действия, однако же они не равнозначны.

Выражение c=a|b; будет вычислять сначала оба значения - a и b и на их основе выводить результат.

В выражении же c=a||b; вначале будет вычисляться значение a, и если оно равно true, то вычисление значения b уже смысла не имеет, так как у нас в любом случае уже c будет равно true. Значение b будет вычисляться только в том случае, если a равно false

То же самое касается пары операций &/&&. В выражении c=a&b; будут вычисляться оба значения - a и b.

В выражении же c=a&&b; сначала будет вычисляться значение a, и если оно равно false, то вычисление значения b уже не имеет смысла, так как значение c в любом случае равно false. Значение b будет вычисляться только в том случае, если a равно true

Таким образом, операции || и && более удобны в вычислениях, позволяя сократить время на вычисление значения выражения и тем самым повышая производительность. А операции | и & больше подходят для выполнения поразрядных операций над числами.

Примеры:

boolean a1 = (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
boolean a2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
boolean a3 = (5 > 6) && (4 < 6); // 5 > 6 - false, поэтому возвращается false (4 < 6 - true, но не вычисляется)
boolean a4 = (50 > 6) && (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается true
boolean a5 = (5 < 6) ^ (4 > 6); // 5 < 6 - true, поэтому возвращается true (4 > 6 - false)
boolean a6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается false
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850