Kotlin сравнить два файла

Обновлено: 03.07.2024

В этом руководстве мы обсудим различные способы сравнения String в Kotlin.

2. Операторы сравнения

Начнем с оператора «==».

Мы можем использовать его, чтобы проверить, равны ли две строки структурно. Это эквивалент использования метода equals в Java :

Теперь рассмотрим оператор ссылочного равенства «===». Он возвращает истину, если две переменные указывают на один и тот же объект. Это эквивалент использования == в Java .

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

Однако, если мы используем конструктор для создания новой строки , мы явно сообщаем Kotlin, что нам нужен новый объект. Следовательно, будет создана и помещена в кучу новая строка :

3. Сравнение с равными

Равно Метод возвращает тот же результат, что и «==» оператор:

Когда мы хотим провести сравнение без учета регистра, мы можем использовать метод equals и передать true для второго необязательного параметра ignoreCase :

4. Сравнение с compareTo

В Kotlin также есть метод compareTo, который мы можем использовать для сравнения порядка двух строк. Подобно методу equals, метод compareTo также имеет необязательный аргумент ignoreCase :

Метод compareTo возвращает ноль для равных строк, положительное значение, если значение ASCII аргумента меньше, и отрицательное значение, если значение ASCII аргумента больше. В каком-то смысле мы можем читать это, как вычитание.

В последнем примере, из - за IgnoreCase аргумента , две строки считаются равными .

5. Заключение

В этой быстрой статье мы увидели различные способы сравнения строк в Kotlin, используя несколько основных примеров.

Для будущих учащихся на курсе "Kotlin Backend Developer" подготовили перевод полезного материала.

В языке Kotlin существует три способа проверки на равенство:

Первый способ — сравнение структур (==)

Оператор == в Kotlin позволяет сравнивать данные, содержащиеся в переменных. Однако в Java этот оператор используется для сравнения ссылок двух переменных.

В случае пользовательских классов == можно использовать для сравнения содержимого data-классов. В остальных случаях этот оператор сравнивает ссылки.

Второй способ — сравнение ссылок (===)

Оператор === в Kotlin используется для сравнения ссылок двух переменных. Однако в случае примитивов === является эквивалентом == , то есть выполняет проверку значений.

Третий способ — метод equals

Метод equals выполняет в Kotlin ту же функцию, что и == .

Однако между методом equals и оператором == возникает разница в случае сравнения переменных типа Float и Double . Если при сравнении переменных типа Float и Double с помощью == применяется стандарт IEEE 754, то в случае с equals это не так, поэтому при использовании equals считается, что:

NaN равен самому себе;

NaN больше, чем любой другой элемент, включая POSITIVE_INFINITY ;

0,0 меньше, чем 0,0.

Рассмотрим примеры ниже, чтобы лучше понять, как происходит сравнение в разных случаях.

1. Сравнение примитивов

В случае примитивных типов данных сравниваются содержащиеся в них значения.

2. Сравнение примитивов в обертке

Здесь firstInt и secondInt имеют разные ссылки. Поэтому сравнение ссылок ( === ) возвращает результат false . При проверке равенства структуры и использовании метода equals проверяется только содержимое. Следовательно, результатом проверки будет true , поскольку значение обеих переменных равно 5 .

3. Сравнение объектов пользовательских классов

В данном случае student не является ни примитивом, ни оберткой, поэтому во всех случаях сравниваются ссылки, а не содержимое. Однако при сравнении строковых литералов содержимое сравнивается так же, как и в Java.

Чтобы сравнение содержимого работало, нужно иметь дело с data-классом.

4. Сравнение отрицательного и положительного нуля

Как уже упоминалось, при сравнении отрицательного нуля и положительного нуля с использованием оператора == применяется стандарт IEEE 754. В результате возвращается значение true . При использовании же метода equals этот стандарт не применяется, поэтому возвращается значение false .

Мы уже познакомились с несколькими типами данных, такими как Int , Double и String. В данном уроке будет рассмотрен тип данных, который используется с операторами сравнения.

Содержание статьи

В Kotlin булев тип используется следующим образом:

В Kotlin есть вывод типа, поэтому сам тип можно не указывать, Kotlin сам поймет какой это тип:

Булево значение может быть только истинным или ложным, для чего используются ключевые слова true и false . В коде выше, ключевые слова используются для указания состояния каждой константы.

Boolean, или логические операторы в Kotlin

Булев тип используется для сравнения значений. К примеру, когда нужно узнать, равны ли два значения, результат будет либо true , либо false .

В Kotlin для этого используется оператор равенства, который обозначается как == :

Kotlin знает, что типом константы doesOneEqualTwo является тип Boolean . Очевидно, что 1 не равен 2. Следовательно, константа doesOneEqualTwo будет false .

Аналогичным образом можно выяснить, не равны ли два значения через использование оператора != :

На этот раз сравнение истинно (true), потому что 1 не равна 2, и константа doesOneNotEqualTwo будет true .

Оператор префикс ! переключает true на false и наоборот. Выше указанный код можно написать следующим образом:

Так как 1 не равна 2, (1 == 2) принимает значение false , и затем ! переключает это на true .

Еще два оператора помогают узнать если одно значение больше ( > ) или меньше ( < ) другого значения. Вам они должны быть знакомы с уроков математики:

Несложно понять, что константа isOneGreaterThanTwo будет false , а константа isOneLessThanTwo будет true .

Также существует оператор, который проверяет, меньше значение другого значения или равно ему: <= . Это комбинация < и == , поэтому будет возвращено значение true , если первое значение меньше второго или равно ему.

Точно так же есть оператор, который позволяет проверить, больше ли значение или равно другому: >= .

Булева логика в Kotlin

В каждом из приведенных выше примеров проверяется только одно условие. Когда Джордж Буль ввел булевы значения, у него были более грандиозные планы. Он изобрел булеву логику, которая позволяет комбинировать несколько условий для формирования результата.

Для сравнения двух значений, в языке Kotlin используются операторы сравнения. Эти операторы есть бинарными. Это означает, что они требуют двух операндов соответственно в левой и правой частях. Результатом любого оператора сравнения есть значение true или false логического типа Boolean.

Операторы сравнения имеют такой же синтаксис и назначение как во многих других языках. К этим операторам относятся следующие:

Из вышеприведенного перечня последние два оператора === , !== сравнивают значения ссылок на объекты, а не значения этих объектов (см. рисунки 1, 2).

Kotlin. Операторы ===, !==. Две ссылки указывают на один объект

Рисунок 1. Случай, когда ссылки указывают на один объект. Оператор === возвращает true , оператор !== возвращает false

Kotlin. Операторы ===, !==. Две ссылки указывают на разные объекты

Рисунок 2. Случай, когда ссылки указывают на разные объекты. Оператор === возвращает false , оператор !== возвращает true

2. Пример операторов сравнения значений переменных различных типов

Результат выполнения программы

3. Пример, демонстрирующий применение операторов сравнения ссылок ( === , !== )

Результат выполнения программы

4. Логические операторы ( && , || , ! ). Перечень. Назначение

Логические операторы позволяют строить сложные логические выражения минуя большое (лишнее) количество операторов условного перехода в алгоритме решения задачи.

Результатом логического оператора является значение true или false логического типа Boolean . Последовательность логических операторов, объединенных операндами, образует логическое выражение.

С помощью логического выражения можно сократить программный код, улучшив его визуализацию.

Например, если в программе нужно выполнить одно единое действие (последовательность операторов) при выполнении различных условий

то более целесообразно применить логический оператор || по образцу ниже

В языке Kotlin определены следующие логические операторы

5. Примеры использования логических операторов && , || , ! в условных выражениях
5.1. Определение пары одинаковых чисел

Задача. Даны три вещественных числа a, b, c. Определить, есть ли среди них хотя бы одна пара равных между собой чисел.

Решение.

Результат выполнения программы

5.2. Определение наличия указанной цифры в числе

Задача. Дано двухзначное число. Определить, входит ли в него цифра 7.

Решение.

5.3. Определение наличия двух цифр в числе

Задача. Задано трехзначное число. Определить, содержатся ли в нем одновременно цифры 4 и 6.

Решение.

5.4. Определение принадлежности числа заданному диапазону

Задача. Определить, принадлежит ли заданное число диапазону [a; b]. Задачу решить с использованием оператора отрицания! (NOT).

Читайте также: