Разное

Логические операторы java: Логические операторы Java ( исключающее ИЛИ / логическое ИЛИ)

Глава 16. Регулярные выражения

1. Инструменты для работы с регулярными выражениями и примеры использования

При поиске и создании правил сегментации используются регулярные выражения, поддерживаемые платформой Java. Более подробную информацию можно найти в документации Java. Ниже приведены несколько примеров и ссылок.

Примечание

Этот раздел предназначен для опытных пользователей, которым требуется создавать собственные правила сегментации или использовать сложные и мощные функции поиска.

Таблица 16.1. Регулярные выражения — Модификаторы

Выражение… соответствует
(?i)Включает поиск совпадений независимо от регистра символов (по умолчанию все шаблоны чувствительны к регистру)


Таблица 16. 2. Регулярные выражения — Символы

Выражение… соответствует
xСимвол «x», за исключением следующих случаев…
\uhhhhСимвол с шестнадцатеричным значением 0xhhhh
\tСимвол табуляции («\u0009»)
\nСимвол новой строки («\u000A»)
\rСимвол возврата каретки («\u000D»)
\fСимвол конца страницы (команда подачи страницы для принтера) («\u000C»)
\aСимвол звонка (оповещения) («\u0007»)
\eСимвол Escape («\u001B»)
\cxУправляющий символ, соответствующий «x»
\0nСимвол с восьмеричным значением 0n (0 ≤ n ≤ 7)
\0nnСимвол с восьмеричным значением 0nn (0 ≤ n ≤ 7)
\0mnnСимвол с восьмеричным значением 0mnn (0 ≤ m ≤ 3, 0 ≤ n ≤ 7)
\xhhСимвол с шестнадцатеричным значением 0xhh


Таблица 16. {|} в качестве их буквальных значений.\\Например, это будет обратная косая черта.\Qне соответствует ничему, только экранирует все символы вплоть до \E\E

не соответствует ничему, только прекращает экранирование, начатое \Q


Таблица 16.4. Регулярные выражения — Классы блоков и категорий Юникода

Выражение… соответствует
\p{InGreek}Символ из греческого блока (простой блок)
\p{Lu}Прописная буква (см. abc]Любой символ кроме a, b, или c (исключение)
[a-zA-Z]Любые символы латинского алфавита, от a до z и от A до Z включительно


Таблица 16.6. Регулярные выражения — Предустановленные наборы символов

Выражение… соответствует
.Любой символ (кроме символов конца строки)
\dЦифра: [0-9]
\DНе цифра: [^0-9]
\sЛюбой пробельный символ: [ \t\n\x0B\f\r]
\SЛюбой не пробельный символ: [^\s]
\wЛюбой буквенный или цифровой символ, а также знак подчёркивания: [a-zA-Z_0-9]
\WЛюбой символ кроме буквенного и цифрового, а также знака подчёркивания: [^\w]


Таблица 16.Начало строки$Конец строки\bГраница слова\BНе граница слова


Таблица 16.8. Регулярные выражения — Жадные кванторы

Выражение… соответствует
X?X, один раз или ни разу
X*X, ноль или более раз
X+X, один или более раз


Примечание

жадные кванторы будут искать как можно больше совпадений. Например, a+ для последовательности aaabbb выдаст «ааа».

Таблица 16.9. Регулярные выражения — Ленивые кванторы

Выражение… соответствует
X??X, один раз или ни разу
X*?X, ноль или более раз
X+?X, один или более раз


Примечание

ленивые кванторы будут искать как можно меньше совпадений. Например, a+? для последовательности aaabbb выдаст только a.

Таблица 16. 10. Регулярные выражения — Логические операторы

Выражение… соответствует
XYX, за которым идёт Y
X|YЛибо X, либо Y
(XY)XY как отдельная группа


Существует несколько программ для разработки и тестирования регулярных выражений. В общем и целом они работают по одному и тому же принципу (пример работы программы Regular Expression Tester смотри ниже): регулярное выражение (в верхнем поле) применяется к некоему тексту (в поле посередине), результаты работы показываются в нижнем поле.

Рисунок 16.1. Regex Tester


Программа The Regex Coach для Windows, GNU/Linux и FreeBSD. Работает по описанному выше принципу.

Большое количество полезных примеров регулярных выражений можно найти и в самой ОмегаТ (смотри «Параметры» > «Сегментация»). В списке ниже приведены регулярные выражения, которые могут оказаться полезными при поиске по памяти перевода:

Таблица 16.11. Регулярные выражения — Примеры использования регулярных выражений при поиске по переводам

Регулярное выражениеРезультат поиска:
(\b\w+\b)\s\1\bслова, написанные дважды
[\. aeiou]для английского языка: проверка подобная предыдущей, но на слова, начинающиеся с согласных («a», а не «an»)
\s{2,}больше, чем один пробел подряд
\.[A-Z]Точка, за которой следует прописная буква, возможно, перед началом нового предложения пропущен пробел?
\bis\bпоиск «is», но не «this» или «isn’t» и т. д.


Ключевые слова и операторы — Kotlin


Жесткие ключевые слова (Hard Keywords)

Следующие слова всегда интерпретируются как ключевые и не могут использоваться в качестве идентификаторов:

  • as
    • используется для приведения типов
    • задает альтернативное имя для импорта
  • as? используется для безопасного приведения типов
  • break завершает выполнение цикла
  • class объявляет класс
  • continue переходит к следующему шагу ближайшего вложенного цикла
  • do начинает цикл do/while loop (цикл с постусловием)
  • else определяет ветвь выражения if, которое выполняется, когда условие ложно
  • false указывает значение ‘false’ типа Boolean
  • for начинает цикл for
  • fun объявляет функцию
  • if начинает условное выражение if
  • in
    • указывает объект, который перебирается в цикле for
    • используется как инфиксный оператор для проверки того, что значение принадлежит диапазону, коллекции или другого объекта, который определяет метод ‘contains’
    • используется в выражениях when с той же целью
    • отмечает параметр типа как контравариантный
  • !in
    • используется в качестве оператора для проверки того, что значение не принадлежит диапазону, коллекции или другой объекта, который определяет метод ‘contains’
    • используется в выражениях when с той же целью
  • interface объявляет интерфейс
  • is
    • проверяет, что значение имеет определенный тип
    • используется в выражениях when с той же целью
  • !is
    • проверяет, что значение не имеет определенный тип
    • используется в выражениях when с той же целью
  • null константа, представляющая ссылку на объект, которая не указывает ни на один объект
  • object объявляет класс и его экземпляр одновременно
  • package указывает пакет для текущего файла
  • return по умолчанию производит возврат из ближайшей окружающей его функции или анонимной функции
  • super
    • ссылается на реализацию суперкласса метода или свойства
    • вызывает конструктор суперкласса из вторичного конструктора
  • this
    • относится к текущему приемнику
    • вызывает другой конструктор того же класса из вторичного конструктор
  • throw вызывает исключение
  • true задает значение ‘true’ типа Boolean
  • try начинает блок обработки исключений
  • typealias объявляет псевдоним типа
  • val объявляет свойствотолько для чтения или локальную переменную
  • var объявляет изменяемое свойство или локальную переменную
  • when начинает выражение when (выполняет одну из заданных ветвей)
  • while начинает цикл while (цикл с предусловием)

Мягкие Ключевые Слова (Soft Keywords)

Следующие слова действуют как ключевые в контексте, когда они применимы и могут использоваться как идентификаторы в других контекстах:

  • by
    • делегирует реализацию интерфейса другому объекту
    • делегирует реализацию методов доступа для свойства другому объекту
  • catch начинает блок, который обрабатывает определенный тип исключения
  • constructor объявляет первичный или вторичный конструктор
  • delegate используется в качестве целевого объекта аннотации
  • dynamic ссылается на динамический тип в Kotlin/JS коде
  • field используется в качестве целевого объекта аннотации
  • file используется в качестве целевого объекта аннотации
  • finally начинает блок, который всегда выполняется при выходе из блока try
  • get
    • объявляет геттер свойства
    • используется в качестве целевого объекта аннотации
  • import
    импортирует объявление из другого пакета в текущий файл
  • init начинает блок инициализации
  • param используется в качестве целевого объекта аннотации
  • property используется в качестве целевого объекта аннотации
  • receiverиспользуется в качестве целевого объекта аннотации
  • set
    • объявляет сеттер свойства
    • используется в качестве целевого объекта аннотации
  • setparam используется в качестве целевого объекта аннотации
  • where задает ограничения для параметра универсального типа

Модификаторы (Modifier Keywords)

Следующие слова действуют как ключевые в списках модификаторов объявлений и могут использоваться как идентификаторы в других контекстах:

  • actual означает реализацию Платформы в мультиплатформенных проектах
  • abstract обозначает класс или элемент как абстрактный
  • annotation
    объявляет класс аннотации
  • companion объявляет объект-компаньон
  • const помечает свойство как константу времени компиляции
  • crossinline запрещает нелокальные возвраты в лямбде, передаваемом встроенной функции
  • data указывает компилятору генерировать канонические элементы для класса
  • enum объявляет перечисление
  • expect отмечает объявление как платформенное, ожидая реализации в модулях платформы.
  • external отмечает объявление как реализованное не в Kotlin (доступное через JNI или JavaScript)
  • final запрещает переопределение элемента
  • infix позволяет вызывать функцию в инфиксной записи
  • inline указывает компилятору встроить функцию и лямбда-выражение на стороне вызова
  • inner позволяет ссылаться на экземпляр внешнего класса из вложенного класса
  • internal помечает объявление как видимое в текущем модуле
  • lateinit позволяет инициализировать не-null свойство вне конструктора
  • noinline отключает подстановку лямбды, переданной во встроенную функцию
  • open позволяет создавать подклассы класса или переопределять элемент
  • operator обозначает функцию как перегрузку оператора или реализацию соглашения
  • out обозначает тип параметра как ковариантный
  • override помечает элемент как переопределение элемента суперкласса
  • private помечает объявление как видимое в текущем классе или файле
  • protected помечает объявление как видимое в текущем классе и его подклассах
  • public помечает декларацию как видимую в любом месте
  • reified обозначает параметр типа встроенной функции, как доступная во время выполнения
  • sealed объявляет изолированный класс (класс с ограниченным подклассом)
  • suspend обозначает функцию или лямбда как приостанавливаемую (используется как сопрограмма)
  • tailrec отмечает функцию как с хвостовой рекурсией (позволяя компилятору заменить рекурсию итерацией)
  • vararg позволяет передавать нефиксированное число аргументов для параметра

Специальные идентификаторы (Special Identifiers)

Следующие идентификаторы определяются компилятором в определенных контекстах и могут использоваться как обычные идентификаторы в других контекстах:

  • field используется внутри метода доступа свойства для ссылки на backing field свойства
  • it используется внутри лямбды, чтобы косвенно ссылаться на ее параметр

Операторы и специальные символы (Operators and Special Symbols)

Котлин поддерживает следующие операторы и специальные символы:

  • +, -, *, /, % — математические операторы
    • * также используется для передачи массива в параметр vararg
  • =
    • оператор присваивания
    • используется для указания значений по умолчанию для параметров
  • +=, -=, *=, /=, %= — расширенные операторы присваивания
  • ++, -- — операторы инкремента и декремента
  • &&, ||, ! — логические операторы ‘и’, ‘или’, ‘не’ (для побитовых операций используют соответствующие инфиксные функции)
  • ==, != — операторы равенства (переведенные на вызовы equals() для не-примитивных типов)
  • ===, !== — операторы ссылочного равенства
  • <, >, <=, >= — операторы сравнения (переведенные на вызовы compareTo() для не-примитивных типов)
  • [, ] — оператор индексированного доступа (переведенный на вызовы get и set)
  • !! утверждает, что выражение не равно null
  • ?. выполняет безопасный вызов (вызывает метод или обращается к свойству, если получатель не имеет значения null)
  • ?: принимает правое значение, если левое значение равно нулю (Элвис оператор)
  • :: создает ссылку на элемент или ссылку на класс
  • .. создает диапазон
  • : отделяет имя от типа в объявлениях
  • ? отмечает тип с нулевым значением
  • ->
    • разделяет параметры и тело лямбда-выражения
    • разделяет параметры и тип возвращаемого значения при объявлении лямбды
    • разделяет условие и тело ветви выражения when
  • @
    • вводит аннотацию
    • вводит или ссылается на метку цикла
    • вводит или ссылается на лямбда-метку
    • ссылается на выражение ‘this’ из внешней области
    • ссылается на внешний суперкласс
  • ; разделяет несколько операторов на одной строке
  • $ ссылается на переменную или выражение в строковом шаблоне
  • _
    • заменяет неиспользуемый параметр в лямбда выражении
    • заменяет неиспользуемый параметр в деструктуризирующем присваивании

Операторы (Учебники по Java™ > Изучение языка Java > Основы языка)

«Предыдущая • След. • Следующая»

Теперь, когда вы узнали, как объявлять и инициализировать переменные, вы, вероятно, захотите узнать, как что-то делать с ними. Изучение операторов языка программирования Java — хорошее начало. Операторы — это специальные символы, которые выполняют определенные операции с одним, двумя или тремя операндами , а затем возвращают результат.

Пока мы изучаем операторы языка программирования Java, вам может быть полезно заранее знать, какие операторы имеют наивысший приоритет. Операторы в следующей таблице перечислены в порядке приоритета. Чем ближе к началу таблицы появляется оператор, тем выше его приоритет. Операторы с более высоким приоритетом оцениваются перед операторами с относительно более низким приоритетом. Операторы в одной строке имеют одинаковый приоритет. Когда в одном и том же выражении появляются операторы с одинаковым приоритетом, должно определяться правило, которое вычисляется первым. Все бинарные операторы, кроме операторов присваивания, вычисляются слева направо; операторы присваивания вычисляются справа налево.

Приоритет оператора
Операторы Приоритет
постфикс выражение ++ выражение --
одинарный ++ выражение -- выражение + выражение - выражение ~ !
мультипликатив * / %
добавка + - 9= |= <<= >= >>>=

В программировании общего назначения одни операторы встречаются чаще, чем другие; например, оператор присваивания « = » встречается гораздо чаще, чем беззнаковый оператор сдвига вправо « >>> «. Имея это в виду, последующее обсуждение сначала сосредоточится на операторах, которые вы, скорее всего, будете использовать на регулярной основе, а затем сосредоточитесь на тех, которые менее распространены. Каждое обсуждение сопровождается примером кода, который вы можете скомпилировать и запустить. Изучение его результатов поможет закрепить то, что вы только что узнали.

« Предыдущий • Тащить • Далее »

Руководство для начинающих по логическим и реляционным операторам в Java

Операторы — это символы, используемые для выполнения операций над значениями, переменными или инструкциями. Выражения, над которыми они выполняют эти действия, называются операндами. Операции возвращают логический результат (истина или ложь) для операторов отношения, равенства и логических операций.

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

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

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

Они используются для построения логических операторов при программировании. В Java есть шесть логических операторов. Таблица ниже суммирует их.

9
Оператор Имя Тип
Логическое исключающее ИЛИ Двоичный
|| Условное ИЛИ Двоичное
&& Условное И Двоичное
! Логическое НЕ Унарное

Если вы хотите проверить, выполняется ли одно или оба условия, используйте этот оператор. Условие — это выражение, которое может быть либо истинным, либо ложным.

Булево логическое включающее ИЛИ (|)

Логическое ИЛИ проверяет истинность обоих операндов перед вычислением выражения.

 если (доб < 2005 | высота <= 5){ 
деньги++;
}

Приведенный выше пример даст больше денег кому-то, если его дата рождения (дата рождения) меньше 2005 года или если его рост меньше или равен 5 футам.

Логическое логическое И (&)

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

Логическое условное И (&&)

Этот оператор аналогичен логическому И. Разница в том, что сначала проверяется истинность условия слева, прежде чем перейти к проверке условия справа.

Если левая часть оказывается ложной, выполнение немедленно останавливается. В противном случае оценка правой части будет продолжена. Эта функция известна как оценка короткого замыкания.

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

ложь
выражение1 выражение2 выражение1 && выражение2
ложь ложь
false true false
true false false
true true true

Conditional OR (||)

Если какое-либо из условий ложно, выполнение перейдет к следующей части программы. Другими словами, оба условия должны быть истинными.

Этот оператор аналогичен логическому ИЛИ. Он также проверяет, выполняются ли одно или оба условия перед выполнением определенного кода.

Подобно условному И, логическое ИЛИ также использует оценку короткого замыкания. Сначала он проверяет, является ли операнд слева истинным, прежде чем оценивать операнд справа.

Связано: что такое конструктор в Java и как его использовать?

Если условие слева верно, то нет необходимости проверять условие справа. В противном случае оценка справа продолжится.

Логическое НЕ (!)

Этот оператор используется для отрицания условия. Он просто меняет смысл того, над чем он работает.

 if(!(x>5)){ 
// операторы
}

Приведенное выше утверждение означает, что если «x больше 5» НЕ истинно, то выполнить операторы внутри if .

Обратите внимание на использование круглых скобок в выражении (x>5). Если вы не включите эти скобки при написании своей программы, вы получите ошибку времени компиляции. Причина в том, что !  – это унарный оператор, который действует на условие. Без скобок компилятор интерпретировал бы это как оператор, действующий на x, а не x>5.

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

 возраст >= 7 && рост < 5 лет 

Некоторым людям может быть трудно понять логику. Поэтому некоторые программисты предпочитают добавлять лишние скобки для удобочитаемости:

 (возраст >= 7) && (рост < 5) 

Реляционные операторы

Эти операторы используются для сравнения простых отношений между операндами.

Operator Name
> Greater than
< Less than
>= Greater than or equal to
<= Меньше или равно

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

 если( х <= 7 ){ 
х++;
}

Приведенный выше оператор if проверяет, меньше ли x 7 или равно ему. Если он истинен, то выполняются операторы в квадратных скобках, в противном случае — нет.

Самое время упомянуть операторы равенства. Их всего два (равно, == и !=, не равно). Как следует из их названия, они используются для проверки равенства между двумя операндами.

Связано: Как создавать и выполнять операции с массивами в Java

Оператор равенства (==) не следует путать с оператором присваивания (=). Начинающие программисты любят их смешивать. Это разумно, поскольку в алгебре символ (=) используется для выражения равенства. Однако в программировании это неправильно.

Оператор присваивания (=) присваивает значение переменной, а оператор равенства (==) проверяет равенство. См. пример ниже, чтобы понять разницу:

 if(x=5){ 
// операторы
}

Приведенный выше код будет выполняться всегда, независимо от того, действительно ли x равен 5. При этом приведенный ниже код будет выполняться только в том случае, если x равен 5. Поэтому важно не перепутать их.

 if(x==5){ 
// операторы
}

Два упомянутых оператора равенства имеют одинаковый уровень приоритета, хотя и ниже, чем у операторов отношения.

Реляционные операторы также имеют такой же уровень приоритета. Выполнение этих операторов начинается слева направо.

Дополнительные сведения об операторах Java

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

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

 Y>=7 // без пробела 
Y >= 7 // с пробелом

Реляционные операторы обычно используются для выражения простых условий. Чтобы объединить простые условия в более сложные, вам придется использовать логические операторы. Логические операторы могут проверять несколько условий, в отличие от реляционных операторов, которые проверяют только одно условие.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *