Условные


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

int a = 4;
boolean b = a == 4;

if (b) {
    System.out.println("It's true!");
}

Конечно, мы обычно не присваиваем логическому выражению условное выражение. Обычно мы просто используем короткую версию:

int a = 4;

if (a == 4) {
    System.out.println("Ohhh! So a is 4!");
}

Логические операторы

В условных операторах не так много операторов, и большинство из них довольно просты:

int a = 4;
int b = 5;
boolean result;
result = a < b; // true
result = a > b; // false
result = a <= 4; // a smaller or equal to 4 - true
result = b >= 6; // b bigger or equal to 6 - false
result = a == b; // a equal to b - false
result = a != b; // a is not equal to b - true
result = a > b || a < b; // Logical or - true
result = 3 < a && a < 6; // Logical and - true
result = !result; // Logical not - false

если - еще и между

Оператор if, else в Java довольно прост.

if (a == b) {
    // a and b are equal, let's do something cool
}

И мы также можем добавить оператор else после if, чтобы что-то сделать, если условие не истинно.

if (a == b) {
    // We already know this part
} else {
    // a and b are not equal... :/
}

Операторы if - else не обязательно должны находиться в нескольких строках с {}, if могут использоваться в одной строке, или без {} для однострочного состояния.

if (a == b)
    System.out.println("Another line Wow!");
else
    System.out.println("Double rainbow!");

Хотя этот метод может быть полезен для сокращения кода за счет использования меньшего количества строк, мы настоятельно рекомендуем новичкам не использовать эту короткую версию операторов и всегда использовать полную версию с {}. Это касается каждого оператора, который может быть сокращен до одной строки (for, while и т. Д.).

Уродливая сторона если

Есть другой способ написать однострочное выражение if - else с помощью оператора? :

int a = 4;
int result = a == 4 ? 1 : 8;

// result will be 1
// This is equivalent to
int result;

if (a == 4) {
    result = 1;
} else {
    result = 8;
}

Опять же, мы настоятельно рекомендуем новичкам не использовать эту версию if.

== и равно

Оператор ==работает с объектами немного иначе, чем с примитивами. Когда мы используем объекты и хотим проверить, равны ли они, оператор ==скажет, одинаковы ли они, если вы хотите проверить, равны ли они логически, вы должны использовать equalsметод для объекта. Например:

String a = new String("Wow");
String b = new String("Wow");
String sameA = a;

boolean r1 = a == b;      // This is false, since a and b are not the same object
boolean r2 = a.equals(b); // This is true, since a and b are logically equals
boolean r3 = a == sameA;  // This is true, since a and sameA are really the same object

Упражнение

Измените переменные в первом разделе, чтобы каждый оператор if считался истинным.