Мы уже познакомились с несколькими типами данных, такими как Int
, Double
и String. В данном уроке будет рассмотрен тип данных, который используется с операторами сравнения.
Содержание статьи
- Булевы, или логические операторы в Kotlin
- Булева логика в Kotlin
- Равенство строк в Kotlin
- Задания для проверки
При сравнении двух чисел для поиска наибольшего 1 > 2
ответом будет либо истина, либо ложь. В Kotlin для этого предусмотрен отдельный тип данных — Boolean
. Тип был назван так в честь довольно умного человека по имени Джордж Буль, который ввел целую математическую область, рассматривающую понятия истинного и ложного.
В Kotlin булев тип используется следующим образом:
1 2 | val yes: Boolean = true val no: Boolean = false |
В Kotlin есть вывод типа, поэтому сам тип можно не указывать, Kotlin сам поймет какой это тип:
1 2 | val yes = true val no = false |
Булево значение может быть только истинным или ложным, для чего используются ключевые слова true
и false
. В коде выше, ключевые слова используются для указания состояния каждой константы.
Boolean, или логические операторы в Kotlin
Булев тип используется для сравнения значений. К примеру, когда нужно узнать, равны ли два значения, результат будет либо true
, либо false
.
В Kotlin для этого используется оператор равенства, который обозначается как ==
:
1 | val doesOneEqualTwo = (1 == 2) |
Kotlin знает, что типом константы doesOneEqualTwo
является тип Boolean
. Очевидно, что 1 не равен 2. Следовательно, константа doesOneEqualTwo
будет false
.
Аналогичным образом можно выяснить, не равны ли два значения через использование оператора !=
:
1 | val doesOneNotEqualTwo = (1 != 2) |
На этот раз сравнение истинно (true), потому что 1 не равна 2, и константа doesOneNotEqualTwo
будет true
.
Оператор префикс !
переключает true
на false
и наоборот. Выше указанный код можно написать следующим образом:
1 | val alsoTrue = !(1 == 2) |
Так как 1 не равна 2, (1 == 2)
принимает значение false
, и затем !
переключает это на true
.
Еще два оператора помогают узнать если одно значение больше (>
) или меньше (<
) другого значения. Вам они должны быть знакомы с уроков математики:
1 2 | val isOneGreaterThanTwo = (1 > 2) val isOneLessThanTwo = (1 < 2) |
Несложно понять, что константа isOneGreaterThanTwo
будет false
, а константа isOneLessThanTwo
будет true
.
Также существует оператор, который проверяет, меньше значение другого значения или равно ему: <=
. Это комбинация <
и ==
, поэтому будет возвращено значение true
, если первое значение меньше второго или равно ему.
Точно так же есть оператор, который позволяет проверить, больше ли значение или равно другому: >=
.
Булева логика в Kotlin
В каждом из приведенных выше примеров проверяется только одно условие. Когда Джордж Буль ввел булевы значения, у него были более грандиозные планы. Он изобрел булеву логику, которая позволяет комбинировать несколько условий для формирования результата.
Один из способов комбинировать условия — использовать AND (И). Когда вы соединяете с AND (И) два булевых значения, результатом является другое булево значение. Если оба входных значения истинны, результат будет истинным. В противном случае результат будет ложным.
В Kotlin оператором для AND (И) является &&
:
1 | val and = true && true |
В данном случае константа and
будет равна true
. Если бы какое-то из значений справа было false
, тогда and
тоже равнялась бы false
.
Другим способом соединения условий является использование OR (ИЛИ). При использовании OR с двумя булевыми значениями результат будет true
, если хотя бы одно из булевых значений истинно. Только если оба значения ложны, результат будет равен false
.
В Kotlin для булева оператора OR используется ||
:
1 | val or = true || false |
В данном случае константа or
будет равна true
. Если бы оба значения справа были false
, тогда константа or
тоже была бы равна false
. Если бы они оба были true, тогда значением константы or
по-прежнему было бы true
.
В Kotlin булева логика обычно используется, когда есть несколько условий. Возможно, требуется определить, если два условия истинны. В данном случае можно использовать AND. Если нужно выяснить, является ли истинными хотя бы одно из двух условий, тогда можно использовать OR.
К примеру, рассмотрим следующий код:
1 2 3 4 5 | val andTrue = 1 < 2 && 4 > 3 val andFalse = 1 < 2 && 3 > 4 val orTrue = 1 < 2 || 3 > 4 val orFalse = 1 == 2 || 3 == 4 |
В каждом случае проверяются два разных условия, которые соединяются с помощью AND
или OR
.
Также можно использовать булеву логику для объединения более двух сравнений. К примеру, можно создать сложное сравнение вроде следующего:
1 | val andOr = (1 < 2 && 3 > 4) || 1 < 4 |
Скобки устраняют неоднозначность выражения. Сначала Kotlin оценивает выражение внутри круглых скобок, а затем оценивает все выражение, выполнив следующие этапы:
1 2 3 4 | 1. (1 < 2 && 3 > 4) || 1 < 4 2. (true && false) || true 3. false || true 4. true |
Равенство строк в Kotlin
Зачастую требуется определить, равны ли две строки. К примеру, для детской игры по угадыванию названий животных по фото потребуется определить, ответил ли игрок правильно.
В Kotlin можно сравнить две строки через использование оператора равенства ==
. Все делается точно так же, как и в случае сравнения чисел. К примеру:
1 2 | val guess = "dog" val dogEqualsCat = guess == "cat" |
Здесь у константы dogEqualsCat
булев тип, ее значения равно false
, потому что "dog"
не равна "cat"
. Все просто!
Как и в случае с числами, здесь можно не только узнать, являются ли строки равными, но и сравнить их. К примеру:
1 | val order = "cat" < "dog" |
Синтаксис проверяет, если одна строка идет раньше по алфавиту. В данном случае константа order
равно true
, потому что "cat"
идет раньше по алфавиту, чем "dog"
.
Задачи для проверки
- Создайте константу
myAge
, значением которой будет ваш возраст. Затем создайте константуisTeenager
, которая использует булеву логику для определения, находится ли возраст в промежутке от 13 до 19; - Создайте другую константу под названием
theirAge
, значением которой будет 30. Затем создайте константуbothTeenagers
, которая использует булеву логику, чтобы определить, являются ли оба человека подростками; - Создайте константу
reader
, значением которой будет ваше имя. Создайте константуauthor
, значением которой будет имя «Richard Lucas». Создайте константуauthorIsReader
, которая использует равенство строк, чтобы определить, равны лиreader
иauthor
; - Создайте константу
readerBeforeAuthor
, которая использует сравнение строк, чтобы определить, следует лиreader
передauthor
по алфавиту.
Спасибо огромное за объяснение. Самому разобраться очень сложно в этом.
how to buy androxal usa suppliers
buy cheap androxal generic australia
purchase rifaximin purchase no prescription
acheter rifaximin en ligne
obtenez gratuitement des échantillons kamagra en ligne
comment obtenir gratuitement kamagra
cheapest buy enclomiphene price from cvs
get enclomiphene no prescription usa
non prescription cheap dutasteride
get dutasteride purchase discount
cheapest buy flexeril cyclobenzaprine generic uk next day delivery
how to buy flexeril cyclobenzaprine australia where to buy
buy cheap gabapentin new york city
cheap non prescription gabapentin
ordering fildena canada low cost
ordering fildena canada mail order
itraconazole no prescription canadian
how to buy itraconazole generic name
discount staxyn purchase from uk
buy staxyn hawaii online
order avodart cost of tablet
order avodart generic no prescription
online order xifaxan uk meds
discount xifaxan generic online pharmacy
sleva kamagra webů
kamagra online bez usa na předpis