Java: Операторы
Перед тем, как двигаться дальше, разберем базовую терминологию. Знак операции, такой как + , называют оператором. Оператор — просто символ, который выполняет операцию, например, сложение:
System.out.println(8 + 2); // => 10
В этом примере + — это оператор, а числа 8 и 2 — это операнды.
В случае сложения у нас есть два операнда:
- Один слева
- Другой справа от знака +
Операции, которые требуют наличия двух операндов, называются бинарными. Если пропустить хотя бы один операнд, то программа завершится с синтаксической ошибкой. Например:
Операции бывают не только бинарными. Бывают еще:
- Унарные — с одним операндом
- Тернарные — с тремя операндами
Причем операторы могут выглядеть одинаково, но обозначать разные операции:
System.out.println(-3); // => -3
Выше пример применения унарной операции к числу 3. Оператор «минус» перед тройкой говорит интерпретатору — возьми число 3 и найди противоположное, то есть -3.
Это немного может сбить с толку, потому что -3 — это одновременно и число само по себе, и оператор с операндом, но у языков программирования такая структура.
Задание
Напишите программу, которая посчитает разность между числами 6 и -81 и выведет ответ на экран.
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Определения
- Арифметическая операция — сложение, вычитание, умножение и деление.
- Оператор — специальный символ, создающий операцию. Например, + создает операцию сложения.
- Операнд — объект, который участвует в операции. 3 * 6 : здесь 3 и 6 — операнды.
- Унарная операция — операция с одним операндом. Например, -3 — унарная операция для получения числа, противоположного числу три.
- Бинарная операция — операция с двумя операндами. Например, 3 + 9 .
Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе
- Привет, Мир!
- Комментарии
- Инструкции (Statements)
- Как мы проверяем ваши решения
- Ошибки оформления (синтаксиса)
- Арифметические операции
- Операторы
- Коммутативная операция
- Композиция операций
- Приоритет операций
- Числа с плавающей точкой
- Линтер
- Кавычки
- Экранирующие последовательности
- Конкатенация
- Что такое переменная
- Изменение переменной
- Выбор имени переменной
- Ошибки при работе с переменными
- Выражения в определениях
- Переменные и конкатенация
- Именование переменных
- Магические числа
- Константы
- Зачем нужны типы данных
- Явная типизация
- Какие бывают типы
- Значение null
- Явное преобразование типов
- Методы и их вызов
- Параметры методов
- Вызов метода — выражение
- Неизменяемость строк
- Цепочки вызовов методов
- Детерминированность
- Стандартная библиотека
- Какие бывают методы
- Создание (определение) метода
- Метод main
- Возврат значений
- Определение методов
- Необязательные параметры методов
- Логический тип
- Сравнение строк
- Комбинирование операций и методов
- Логические операторы
- Отрицание
- Условная конструкция (if)
- Конструкция if-else
- Конструкция else if
- Тернарный оператор
- Конструкция Switch
- Цикл While
- Агрегация данных (Числа)
- Агрегация данных (Строки)
- Обход строк
- Условия внутри тела цикла
- Формирование строк в циклах
- Синтаксический сахар
- Инкремент и декремент
- Возврат из циклов
- Цикл For
Операторы
Операторы в языке Java — это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с некоторыми операндами. Некоторые операторы требуют одного операнда, их называют унарными. Одни операторы ставятся перед операндами и называются префиксными, другие — после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называются инфиксными бинарными операторами. Существует тернарный оператор, работающий с тремя операндами.
В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.
Арифметические оператор
Арифметические операторы используются для вычислений так же как в алгебре (см. таблицу со сводкой арифметических операторов ниже). Допустимые операнды должны иметь числовые типы. Например, использовать эти операторы для работы с логическими типами нельзя, а для работы с типом char можно, поскольку в Java тип char — это подмножество типа int.
Оператор | Результат | Оператор | Результат |
+ | Сложение | + = | сложение с присваиванием |
— | вычитание (также унарный минус) | -= | вычитание с присваиванием |
* | Умножение | *= | умножение с присваиванием |
/ | Деление | /= | деление с присваиванием |
% | деление по модулю | %= | деление по модулю с присваиванием |
++ | Инкремент | — | декремент |
Четыре арифметических действия
Ниже, в качестве примера, приведена простая программа, демонстрирующая использование операторов. Обратите внимание на то, что операторы работают как с целыми литералами, так и с переменными.
class BasicMath < public static void int a = 1 + 1; int b = a * 3; main(String args[]) < int c = b / 4; int d = b - а; int e = -d; System.out.println("a = " + а); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d = " + d); System.out.println("e x mod 10 = " + x % 10); System.out.println("y mod 10 a = " + a); System.out.println("b = " + b); System.out.println("c a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d 1" cellspacing="0" cellpadding="2">Оператор Результат Оператор Результат ~ побитовое унарное отрицание (NOT) & побитовое И (AND) &= побитовое И (AND) с присваиванием | побитовое ИЛИ (OR) |= побитовое ИЛИ (OR) с присваиванием ^ побитовое исключающее ИЛИ (XOR) ^= побитовое исключающее ИЛИ (XOR) с присваиванием >> сдвиг вправо >> = сдвиг вправо с присваиванием >>> сдвиг вправо с заполнением нулями >>>= сдвиг вправо с заполнением нулями с присваиванием сдвиг влево сдвиг влево с присваиванием Пример программы, манипулирующей с битами
В таблице, приведенной ниже, показано, как каждый из операторов битовой арифметики воздействует на возможные комбинации битов своих операндов. Приведенный после таблицы пример иллюстрирует использование этих операторов в программе на языке Java.
А В OR AND XOR NOT A 0 0 0 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 class Bitlogic < public static void main(String args []) < String binary[] = < "OOOO", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" >; int a = 3; // 0+2+1 или двоичное 0011 int b = 6; // 4+2+0 или двоичное 0110 int c = a | b; int d = a & b; int e = a ^ b; int f = (~a & b) | (a & ~b); int g = ~a & 0x0f; System.out.println(" a = " + binary[a]); System.out.println(" b = " + binary[b]); System.out.println(" ab = " + binary[c]); System.out.println(" a&b = " + binary[d]); System.out.println(" a^b = " + binary[e]); System.out.рrintln("~a&b|а^~Ь = " + binary[f]); System.out.println(" ~a b = 0x" + hex[(b >> 4) & 0x0f] + hex[b & 0x0f]); > >Ниже приведен результат работы этой программы:
С:\> java HexByte b = 0xf1Беззнаковый сдвиг вправо
Часто требуется, чтобы при сдвиге вправо расширение знакового раз-ряда не происходило, а освобождающиеся левые разряды просто запол-нялись бы нулями.
class ByteUShift < static public void main(String args[]) < char hex[] = < '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'а', 'b', 'с', 'd', 'e', 'f' >; byte b = (byte) 0xf1; byte c = (byte) (b >> 4); byte d = (byte) (b >> 4); byte e = (byte) ((b & 0xff) >> 4); System.out.println(" b = 0x" + hex(b >> 4) & 0x0f] + hex[b & 0x0f]); System.out.println(" b >> 4 = 0x" + hex[(c >> 4) & 0x0f] + hex[c & 0x0f]); System.out.println("b >>> 4 = 0x" + hex[(d >> 4) & 0x0f] + hex[d & 0x0f]); System.out.println("(b & 0xff) >> 4 = 0x" + hex[(e >> 4) & 0x0f] + hex[e & 0x0f]); > >Для этого примера переменную b можно было бы инициализировать произвольным отрицательным числом, мы использовали число с шест-надцатиричным представлением 0xf1. Переменной с присваивается ре-зультат знакового сдвига b вправо на 4 разряда. Как и ожидалось, рас-ширение знакового разряда приводит к тому, что 0xf1 превращается в 0xff. Затем в переменную d заносится результат беззнакового сдвига b вправо на 4 разряда. Можно было бы ожидать, что в результате d со-держит 0x0f, однако на деле мы снова получаем 0xff. Это - результат расширения знакового разряда, выполненного при автоматическом по-вышении типа переменной b до int перед операцией сдвига вправо. На-конец, в выражении для переменной е нам удается добиться желаемого результата - значения 0x0f. Для этого нам пришлось перед сдвигом вправо логически умножить значение переменной b на маску 0xff, очис-тив таким образом старшие разряды, заполненные при автоматическом повышении типа. Обратите внимание, что при этом уже нет необходи-мости использовать беззнаковый сдвиг вправо, поскольку мы знаем со-стояние знакового бита после операции AND.
С: \> java ByteUShift b = 0xf1 b >> 4 = 0xff b >>> 4 = 0xff b & 0xff) >> 4 = 0x0fБитовые операторы присваивания
Так же, как и в случае арифметических операторов, у всех бинарных битовых операторов есть родственная форма, позволяющая автоматичес-ки присваивать результат операции левому операнду. В следующем примере создаются несколько целых переменных, с ко-торыми с помощью операторов, указанных выше, выполняются различ-ные операции.
class OpBitEquals < public static void main(String args[]) < int a = 1; int b = 2; int с = 3; a |= 4; b >>= 1; сРезультаты исполнения программы таковы:
С:\> Java OpBitEquals а = 3 b = 1 с = 6Операторы отношения
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
Оператор | Результат |
== | равно |
!= | не равно |
> | больше |
меньше | |
>= | больше или равно |
меньше или равно |
Значения любых типов, включая целые и вещественные числа, символы, логические значения и ссылки, можно сравнивать, используя оператор проверки на равенство == и неравенство !=. Обратите внимание - в языке Java, так же, как в С и C++ проверка на равенство обозначается последовательностью (==). Один знак (=) - это оператор присваивания.
Булевы логические операторы
Булевы логические операторы, сводка которых приведена в таблице ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.
Оператор | Результат | Оператор | Результат |
& | логическое И (AND) | &= | И (AND) с присваиванием |
| | логическое ИЛИ (OR) | = | ИЛИ (OR) с присваиванием |
^ | логическое исключающее ИЛИ (XOR) | ^= | исключающее ИЛИ (XOR) с присваиванием |
|| | оператор OR быстрой оценки выражений (short circuit OR) | == | равно |
&& | оператор AND быстрой оценки выражений (short circuit AND) | != | не равно |
! | логическое унарное отрицание (NOT) | ?: | тернарный оператор if-then-else |
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице.
А | В | OR | AND | XOR | NOT A |
false | false | false | false | false | true |
true | false | true | false | true | false |
false | true | true | false | true | true |
true | true | true | true | false | false |
Программа, приведенная ниже, практически полностью повторяет уже знакомый вам пример BitLogic. Только но на этот раз мы работаем с булевыми логическими значениями.
class BoolLogic < public static void main(String args[]) < boolean a = true; boolean b = false; boolean с = a | b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) | (a & !b); boolean g = !a; System.out.println(" a = " + a); System.out.println(" b = " + b); System.out.println(" a|b = " + c); System.out.println(" a&b = " + d); System.out.println(" a^b = " + e); System.out.println("!a&b|a&!b = " + f); System.out.println(" !a a = " + a); System.out.println("b = " + b); System.out.println("c = " + c); System.out.println("d = " + d); System.out.println("a / b = " + e); System.out.println("c / d 1" cellspacing="0" cellpadding="2" width="60%">Высший ( ) [ ] . ~ ! * / % + - >> >>> > >= == != & ^ | && | | ?: = op= Низший В первой строке таблицы приведены три необычных оператора, о которых мы пока не говорили. Круглые скобки () используются для явной установки приоритета. Как вы узнали из предыдущей главы, квадратные скобки [] используются для индексирования переменной-массива. Оператор . (точка) используется для выделения элементов из ссылки на объект - об этом мы поговорим в главе 7. Все же остальные операторы уже обсуждались в этой главе.
Явные приоритеты
Поскольку высший приоритет имеют круглые скобки, вы всегда можете добавить в выражение несколько пар скобок, если у вас есть сомнения по поводу порядка вычислений или вам просто хочется сделать свои код более читабельным.
а >> b + 3Какому из двух выражений, а >> (b + 3) или (а >> b) + 3, соответствует первая строка? Поскольку у оператора сложения более высокий приоритет, чем у оператора сдвига, правильный ответ - а>> (b + а). Так что если вам требуется выполнить операцию (а>>b)+ 3 без скобок не обойтись.
Что дальше?
Итак, мы рассмотрели все виды операторов языка Java. Теперь вы можете сконструировать любое выражение с различными типами данных. В следующей главе познакомимся с конструкциями ветвления, организацией циклов и научимся управлять выполнением программы.
Что значит оператор .
Произойдет следующее: интерфейс List наследуется от Iterable, у которого есть метод forEach(Consumer action) .
Consumer - функциональный интерфейс, с одним методом accept(T t) , который принимает один параметр. В данном случае, consumer - метод print класса System.out , который принимает строку.
Функциональный интерфейс - интерфейс, который имеет только 1 абстрактный метод.
Отслеживать
80.8k 9 9 золотых знаков 78 78 серебряных знаков 134 134 бронзовых знака
ответ дан 6 сен 2017 в 10:57
DaysLikeThis DaysLikeThis
1,798 13 13 серебряных знаков 27 27 бронзовых знаков
А можно, пожалуйста, пример?
6 сен 2017 в 10:59
@DaysLikeThis, перенеси свой комментарий в ответ
6 сен 2017 в 11:24Оператор двойное двоеточия :: - "ссылка на метод" (Method Reference). По сути - сокращенная запись для доступа(ссылки) на метод из функционального интерфейса при использовании лямбда выражения которые появились с Java 8.
Насколько я понял это можно исползовать вызывая метод через имя класса даже если он не является статическим. Скажем такой пример, думаю суть поймёте.
class MyClass < private static boolean method()< return false; >private boolean method2() < return false; >public static void main(String[] args) < System.out.println(MyClass.method()); //для статического Consumermethod2 = MyClass::method2; //для не статического System.out.println(method2); > >
10. Java – Основные операторы языка
Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:
- арифметические операторы;
- операторы сравнения;
- побитовые операторы;
- логические операторы;
- операторы присваивания;
- прочие операторы.
Арифметические операторы
Арифметические операторы – используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:
Оператор | Описание | Пример |
+ | Складывает значения по обе стороны от оператора | A + B даст 30 |
- | Вычитает правый операнд из левого операнда | A - B даст -10 |
* | Умножает значения по обе стороны от оператора | A * B даст 200 |
/ | Оператор деления делит левый операнд на правый операнд | B / A даст 2 |
% | Делит левый операнд на правый операнд и возвращает остаток | B % A даст 0 |
++ | Инкремент - увеличивает значение операнда на 1 | B++ даст 21 |
-- | Декремент - уменьшает значение операнда на 1 | B-- даст 19 |
Пример
Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
public class Test < public static void main(String args[]) < int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("b / a = " + (b / a)); System.out.println("b % a = " + (b % a)); System.out.println("c % a = " + (c % a)); System.out.println("a++ = " + (a++)); System.out.println("b-- = " + (a--)); // Проверьте разницу в d++ и ++d System.out.println("d++ = " + (d++)); System.out.println("++d dos">a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 b-- = 11 d++ = 25 ++d = 27
Операторы сравнения
Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:
Оператор | Описание | Пример |
== | Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным | (A == B) – не верны |
!= | Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным | (A != B) – значение истинна |
> | Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным | (A > B) – не верны |
= | Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным | (A >= B) – значение не верны |
> (сдвиг вправо) | Бинарный оператор сдвига вправо. Значение правых операндов перемещается вправо на количество бит, заданных левых операндом. | A >> 2 даст 15, который является 1111 |
>>> (нулевой сдвиг вправо) | Нулевой оператор сдвига вправо. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом, а сдвинутые значения заполняются нулями. | A >>> 2 даст 15, который является 0000 1111 |
Пример
Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
public class Test < public static void main(String args[]) < int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a a > 2 a >>> 2 html">a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a > 15 a >>> 15
Логические операторы
Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:
Оператор | Описание | Пример |
&& | Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным | (A && B) – значение false |
|| | Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным | (A || B) – значение true |
! | Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false | !(A && B) – значение true |
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
public class Test < public static void main(String args[]) < boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b) ); System.out.println("!(a && b) dos">a && b = false a || b = true !(a && b) = true
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые языком Java:
Оператор | Описание | Пример |
= | Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операнду | C = A + B, присвоит значение A + B в C |
+= | Оператор присваивания «Добавления», он присваивает левому операнду значения правого | C += A, эквивалентно C = C + A |
-= | Оператор присваивания «Вычитания», он вычитает из правого операнда левый операнд | C -= A, эквивалентно C = C - A |
*= | Оператор присваивания «Умножение», он умножает правый операнд на левый операнд | C * = A эквивалентно C = C * A |
/= | Оператор присваивания «Деление», он делит левый операнд на правый операнд | C /= A эквивалентно C = C / A |
%= | Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операнду | C %= A, эквивалентно C = C % A |
>= | Оператор присваивания «Сдвиг вправо» | C >>= 2, это как C = C >> 2 |
&= | Оператор присваивания побитового «И» («AND») | C &= 2, это как C = C & 2 |
^= | Оператор присваивания побитового исключающего «ИЛИ» («XOR») | C ^= 2, это как C = C ^ 2 |
|= | Оператор присваивания побитового «ИЛИ» («OR») | C |= 2, это как C = C | 2 |
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
public class Test < public static void main(String args[]) < int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c ); c += a ; System.out.println("c += a = " + c ); c -= a ; System.out.println("c -= a = " + c ); c *= a ; System.out.println("c *= a = " + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a c >= 2 c >>= a = " + c ); c &= a ; System.out.println("c &= 2 = " + c ); c ^= a ; System.out.println("c ^= a = " + c ); c |= a ; System.out.println("c |= a dos">c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c >= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10
Прочие операторы
Есть несколько других операторов, поддерживаемых языком Java.
Тернарный оператор или условный оператор (?:)
Тернарный оператор – оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:
переменная x = (выражение) ? значение if true : значение if false
Пример
Ниже приведен пример:
public class Test < public static void main(String args[])< int a , b; a = 10; b = (a == 1) ? 20 : 30; System.out.println( "Значение b: " + b ); b = (a == 10) ? 20 : 30; System.out.println( "Значение b: " + b ); >>
Будет получен следующий результат:
Значение b: 30 Значение b: 20
Оператор instanceof
Оператор instanceof – проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:
(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)
Примеры
Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:
public class Test < public static void main(String args[])< String name = "Олег"; // Следующее вернётся верно, поскольку тип String boolean result = name instanceof String; System.out.println( result ); >>
Будет получен следующий результат:
true
Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:
class Vehicle <> public class Car extends Vehicle < public static void main(String args[])< Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result ); >>
Будет получен следующий результат:
true
Приоритет операторов в Java
Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:
Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».
В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.