Логические выражения позволяют отвечать на вопросы, которые возникают во время работы программы.
public class Example {
public static void main(String[] args) {
// Операции сравнения
System.out.println("5 > 6 -> " + (5 > 6)); //=> "5 > 6 -> false"
System.out.println("5 < 6 -> " + (5 < 6)); //=> "5 < 6 -> true"
System.out.println("5 <= 6 -> " + (5 <= 6)); //=> "5 <= 6 -> true"
System.out.println("5 >= 6 -> " + (5 >= 6)); //=> "5 >= 6 -> false"
// Операция сравнения '==' не тоже самое, что присваивание '='
System.out.println("5 == 6 -> " + (5 == 6)); //=> "5 == 6 -> false"
System.out.println("5 != 6 -> " + (5 != 6)); //> "5 != 6 -> true"
// Логический тип данных в Java — boolean
boolean a = 5 > 6;
boolean b = false;
System.out.println("a = " + a); //=> "a = false"
System.out.println("b = " + b); //=> "b = false"
// Предикат
// Предикат — это метод, который отвечает на утвердительный вопрос «да» или «нет»,
// возвращая значение типа boolean.
// isEmpty() — предикат, который отвечает на вопрос,
// является ли строка пустой
String exampleABCStr = "abc";
String exampleEmptyStr = "";
System.out.println(
"Is 'abc' empty? " + LiveCoding.isEmpty(exampleABCStr)
); // => "Is 'abc' empty? false"
System.out.println(
"Is '' empty? " + LiveCoding.isEmpty(exampleEmptyStr)
); // => "Is '' empty? true"
}
/*
* Метод определяет, является ли строка input пустой
* (то есть не содержит ни одного символа,
* а соответсвенно её длина будет равна нулю).
* Если строка не пустая - метод возвращает false.
* Если строка пустая - метод возвращает true.
*/
static boolean isEmpty(String input) {
return input.length() == 0;
}
}
Дальнейшие вызовы будем показывать без определения класса и метода
// Логическое отрицание
System.out.println("NOT true -> " + !true); // => "NOT true -> false"
System.out.println("NOT false -> " + !false); // => "NOT false -> true"
// Логическое "И"
System.out.println("true AND true -> " + (true && true)); // => "true AND true -> true"
System.out.println("true AND false -> " + (true && false)); // => "true AND false -> false"
System.out.println("false AND true -> " + (false && true)); // => "false AND true -> false"
System.out.println("false AND false -> " + (false && false)); // => "false AND false -> false"
// Логическое "ИЛИ"
System.out.println("true OR true -> " + (true || true)); // => "true OR true -> true"
System.out.println("true OR false -> " + (true || false)); // => "true OR false -> true"
System.out.println("false OR true -> " + (false || true)); // => "false OR true -> true"
System.out.println("false OR false -> " + (false || false)); // => "false OR false -> false"
// Результаты различных логических операций даны в булевой алгебре в таблицах истинности
boolean a = true;
boolean b = false;
boolean c = true;
System.out.println(!a); // => false
System.out.println(a || b || c); // => true
System.out.println(a && !b && c); // => true
System.out.println((a && b) || c); // => true
// Если условие истинно, выполняются инструкции в теле if
if (true) {
System.out.println("Мы зашли в тело if...");
}
// Если условие ложно, инструкции в теле if не выполняются
if (false) {
System.out.println("Надпись невидимка...");
}
int number = 22;
// number % 2 == 0
// 0 == 0
// true
if (number % 2 == 0) {
System.out.println("Число четное."); // "Число четное"
}
String str = "";
if (!LiveCoding.isEmpty(str)) {
System.out.println("String str is not empty.");
}
// Расширенный оператор if с использованием else.
// Инструкции в else выполняются в том случае, если условие ложно
int number = 2;
if (number % 2 == 1) { // false
// Эта инструкция не выполняется
System.out.println("Число нечётное.");
} else {
// Выполняется эта инструкция
System.out.println("Число чётное.");
// => "Число четное"
}
int number = 7;
if (number > 0) { // true
// Выполняется эта инструкция
System.out.println("Число положительное.");
// => "Число положительное."
} else {
// Эта инструкция не выполняется
System.out.println("Число отрицательное.");
}
int number = -9;
if (number > 0) {
System.out.println("Положительное число.");
} else if (number == 0) {
System.out.println("Ноль.");
} else {
System.out.println("Отрицательно число.");
// => "Отрицательно число."
}
int number = 22;
int nextEvenNumber;
// Запись при помощи условного оператора if
if (number % 2 == 0) {
nextEvenNumber = number + 2;
} else {
nextEvenNumber = number + 1;
}
System.out.println("Next even number: " + nextEvenNumber);
// => "Next even number: 24"
// Запись при помощи тернарного оператора
// condition ? exprIfTrue : exprIfFalse
// Если условие condition истинно, тернарный оператор
// принимает значение операнда exprIfTrue
// Если ложно, принимает значение exprIfFalse
int number = 89;
int nextEvenNumber = number % 2 == 0 ? number + 2 : number + 1;
System.out.println("Next even number: " + nextEvenNumber);
// "Next even number: 90"
// Для удобства написания и чтения условных выражений можно
// использовать скобки
int nextEvenNumber = number % 2 == 0 ? (number + 2) : (number + 1);
int mark = 3;
switch (mark) {
case 1:
System.out.println("Вы получили кол!");
break;
case 2:
System.out.println("Вы получили двойку!");
break;
case 3:
System.out.println("Вы получили тройку!");
// => "Вы получили тройку!"
break;
case 4:
System.out.println("Вы получили хорошую отметку!");
break;
case 5:
System.out.println("Вы проявили себя на отлично!");
break;
default:
System.out.println("Таких оценок не бывает!");
break;
int anotherMark = 100;
switch (anotherMark) {
case 1:
System.out.println("Вы получили кол!");
break;
case 2:
System.out.println("Вы получили двойку!");
break;
case 3:
System.out.println("Вы получили тройку!");
break;
case 4:
System.out.println("Вы получили хорошую отметку!");
break;
case 5:
System.out.println("Вы проявили себя на отлично!");
break;
default:
// В случае, если совпадений не найдено,
// выполняются инструкции в default
System.out.println("Таких оценок не бывает!");
// => "Таких оценок не бывает!"
break;
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт
Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу