Что значит оператор java
9. Java — Основные операторы языка
Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:
Содержание
Арифметические операторы
Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:
Пример
Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Это произведет следующий результат:
Операторы сравнения
Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:
Пример
Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Будет получен следующий результат:
Логические операторы
Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:
Оператор | Описание | Пример |
&& | Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным | (A && B) — значение false |
|| | Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным | (A || B) — значение true |
! | Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false | !(A && B) — значение true |
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Это произведет следующий результат:
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые языком Java:
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Будет получен следующий результат:
Прочие операторы
Есть несколько других операторов, поддерживаемых языком Java.
Тернарный оператор или условный оператор (?:)
Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:
Пример
Ниже приведен пример:
Будет получен следующий результат:
Оператор instanceof
Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:
Примеры
Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:
Будет получен следующий результат:
Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:
Будет получен следующий результат:
Приоритет операторов в Java
Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:
Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».
В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.
Операторы
Содержание
Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:
Арифметические операторы
Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:
Пример
Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Это произведет следующий результат:
Операторы сравнения
Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:
Пример
Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Будет получен следующий результат:
Логические операторы
Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:
Оператор | Описание | Пример |
&& | Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным | (A && B) — значение false |
|| | Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным | (A || B) — значение true |
! | Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false | !(A && B) — значение true |
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Это произведет следующий результат:
Операторы присваивания
Существуют следующие операторы присваивания, поддерживаемые языком Java:
Пример
Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:
Будет получен следующий результат:
Прочие операторы
Есть несколько других операторов, поддерживаемых языком Java.
Тернарный оператор или условный оператор (?:)
Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:
Пример
Ниже приведен пример:
Будет получен следующий результат:
Оператор instanceof
Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:
Примеры
Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:
Будет получен следующий результат:
Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:
Будет получен следующий результат:
Приоритет операторов в Java
Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:
Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».
В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.
В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.
Что значит оператор java
public static void main(String args []) <
int a = 3; // 0+2+1 или двоичное 0011
int b = 6; // 4+2+0 или двоичное 0110
System.out.println(» a = » + binary[a]);
System.out.println(» b = » + binary[b]);
System.out.println(» ab = » + binary[c]);
System.out.println(» a^b = » + binary[e]);
Ниже приведен результат, полученный при выполнении этой программы:
Сдвиг и влево и вправо
Оператор >> означает в языке Java сдвиг вправо. Он перемещает все биты своего левого операнда вправо на число позиций, заданное правым операндом. Когда биты левого операнда выдвигаются за самую правую позицию слова, они теряются. При сдвиге вправо освобождающиеся старшие (левые) разряды сдвигаемого числа заполняются предыдущим содержимым знакового разряда. Такое поведение называют расширением знакового разряда.
static public void main(String args[]) <
Ниже приведен результат работы этой программы:
Беззнаковый сдвиг вправо
Часто требуется, чтобы при сдвиге вправо расширение знакового разряда не происходило, а освобождающиеся левые разряды просто заполнялись бы нулями.
static public void main(String args[]) <
Для этого примера переменную b можно было бы инициализировать произвольным отрицательным числом, мы использовали число с шестнадцатиричным представлением 0xf1. Переменной с присваивается результат знакового сдвига b вправо на 4 разряда. Как и ожидалось, расширение знакового разряда приводит к тому, что 0xf1 превращается в 0xff. Затем в переменную d заносится результат беззнакового сдвига b вправо на 4 разряда. Можно было бы ожидать, что в результате d содержит 0x0f, однако на деле мы снова получаем 0xff. Это — результат расширения знакового разряда, выполненного при автоматическом повышении типа переменной b до int перед операцией сдвига вправо. Наконец, в выражении для переменной е нам удается добиться желаемого результата — значения 0x0f. Для этого нам пришлось перед сдвигом вправо логически умножить значение переменной b на маску 0xff, очистив таким образом старшие разряды, заполненные при автоматическом повышении типа. Обратите внимание, что при этом уже нет необходимости использовать беззнаковый сдвиг вправо, поскольку мы знаем состояние знакового бита после операции AND.
С: \> java ByteUShift
Битовые операторы присваивания
Так же, как и в случае арифметических операторов, у всех бинарных битовых операторов есть родственная форма, позволяющая автоматически присваивать результат операции левому операнду. В следующем примере создаются несколько целых переменных, с которыми с помощью операторов, указанных выше, выполняются различные операции.
public static void main(String args[]) <
Результаты исполнения программы таковы:
С:\> Java OpBitEquals
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
Булевы логические операторы
Булевы логические операторы, сводка которых приведена в таблице ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.
И (AND) с присваиванием
ИЛИ (OR) с присваиванием
логическое исключающее ИЛИ (XOR)
исключающее ИЛИ (XOR) с присваиванием
оператор OR быстрой оценки выражений (short circuit OR)
оператор AND быстрой оценки выражений (short circuit AND)
логическое унарное отрицание (NOT)
тернарный оператор if-then-else
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице.
Программа, приведенная ниже, практически полностью повторяет уже знакомый вам пример BitLogic. Только но на этот раз мы работаем с булевыми логическими значениями.
public static void main(String args[]) <
Операторы быстрой оценки логических выражений (short circuit logical operators)
Существуют два интересных дополнения к набору логических операторов. Это — альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Вы знаете, что если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд — false, то значение второго операнда на результат не влияет — он всегда будет равен false. Если вы в используете операторы && и || вместо обычных форм & и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда. Общепринятой практикой является использование операторов && и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов & и | применяются только в битовой арифметике.
Тернарный оператор if-then-else
Общая форма оператора if-then-use такова:
выражение1? выражение2: выражениеЗ
В качестве первого операнда — «выражение1» — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть, «выражение2». Если же первый операнд paвен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип void.
В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.
public static void main(String args[]) <
Что значит оператор java
public static void main(String args []) <
int a = 3; // 0+2+1 или двоичное 0011
int b = 6; // 4+2+0 или двоичное 0110
System.out.println(» a = » + binary[a]);
System.out.println(» b = » + binary[b]);
System.out.println(» ab = » + binary[c]);
System.out.println(» a^b = » + binary[e]);
Ниже приведен результат, полученный при выполнении этой программы:
Сдвиг и влево и вправо
Оператор >> означает в языке Java сдвиг вправо. Он перемещает все биты своего левого операнда вправо на число позиций, заданное правым операндом. Когда биты левого операнда выдвигаются за самую правую позицию слова, они теряются. При сдвиге вправо освобождающиеся старшие (левые) разряды сдвигаемого числа заполняются предыдущим содержимым знакового разряда. Такое поведение называют расширением знакового разряда.
static public void main(String args[]) <
Ниже приведен результат работы этой программы:
Беззнаковый сдвиг вправо
Часто требуется, чтобы при сдвиге вправо расширение знакового разряда не происходило, а освобождающиеся левые разряды просто заполнялись бы нулями.
static public void main(String args[]) <
Для этого примера переменную b можно было бы инициализировать произвольным отрицательным числом, мы использовали число с шестнадцатиричным представлением 0xf1. Переменной с присваивается результат знакового сдвига b вправо на 4 разряда. Как и ожидалось, расширение знакового разряда приводит к тому, что 0xf1 превращается в 0xff. Затем в переменную d заносится результат беззнакового сдвига b вправо на 4 разряда. Можно было бы ожидать, что в результате d содержит 0x0f, однако на деле мы снова получаем 0xff. Это — результат расширения знакового разряда, выполненного при автоматическом повышении типа переменной b до int перед операцией сдвига вправо. Наконец, в выражении для переменной е нам удается добиться желаемого результата — значения 0x0f. Для этого нам пришлось перед сдвигом вправо логически умножить значение переменной b на маску 0xff, очистив таким образом старшие разряды, заполненные при автоматическом повышении типа. Обратите внимание, что при этом уже нет необходимости использовать беззнаковый сдвиг вправо, поскольку мы знаем состояние знакового бита после операции AND.
С: \> java ByteUShift
Битовые операторы присваивания
Так же, как и в случае арифметических операторов, у всех бинарных битовых операторов есть родственная форма, позволяющая автоматически присваивать результат операции левому операнду. В следующем примере создаются несколько целых переменных, с которыми с помощью операторов, указанных выше, выполняются различные операции.
public static void main(String args[]) <
Результаты исполнения программы таковы:
С:\> Java OpBitEquals
Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. Список таких операторов приведен в таблице.
Булевы логические операторы
Булевы логические операторы, сводка которых приведена в таблице ниже, оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа.
И (AND) с присваиванием
ИЛИ (OR) с присваиванием
логическое исключающее ИЛИ (XOR)
исключающее ИЛИ (XOR) с присваиванием
оператор OR быстрой оценки выражений (short circuit OR)
оператор AND быстрой оценки выражений (short circuit AND)
логическое унарное отрицание (NOT)
тернарный оператор if-then-else
Результаты воздействия логических операторов на различные комбинации значений операндов показаны в таблице.
Программа, приведенная ниже, практически полностью повторяет уже знакомый вам пример BitLogic. Только но на этот раз мы работаем с булевыми логическими значениями.
public static void main(String args[]) <
Операторы быстрой оценки логических выражений (short circuit logical operators)
Существуют два интересных дополнения к набору логических операторов. Это — альтернативные версии операторов AND и OR, служащие для быстрой оценки логических выражений. Вы знаете, что если первый операнд оператора OR имеет значение true, то независимо от значения второго операнда результатом операции будет величина true. Аналогично в случае оператора AND, если первый операнд — false, то значение второго операнда на результат не влияет — он всегда будет равен false. Если вы в используете операторы && и || вместо обычных форм & и |, то Java не производит оценку правого операнда логического выражения, если ответ ясен из значения левого операнда. Общепринятой практикой является использование операторов && и || практически во всех случаях оценки булевых логических выражений. Версии этих операторов & и | применяются только в битовой арифметике.
Тернарный оператор if-then-else
Общая форма оператора if-then-use такова:
выражение1? выражение2: выражениеЗ
В качестве первого операнда — «выражение1» — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть, «выражение2». Если же первый операнд paвен false, то выполняется третий операнд — «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ», должны возвращать значения одного типа и не должны иметь тип void.
В приведенной ниже программе этот оператор используется для проверки делителя перед выполнением операции деления. В случае нулевого делителя возвращается значение 0.
public static void main(String args[]) <
Операторы в Java
Java предоставляет много типов операторов, которые могут использоваться в зависимости от необходимости. Они классифицируются на основе функциональности, которую они предоставляют. Некоторые из типов
Давайте посмотрим на них подробно.
// Java-программа для иллюстрации
// арифметические операторы
public class operators <
public static void main(String[] args)
System.out.println( «a + b = » + (a + b));
// + оператор, если используется со строками
// объединяет данные строки.
System.out.println( «x + y = » + x + y);
System.out.println( «a * b = » + (a * b));
System.out.println( «a / b = » + (a / b));
// оператор по модулю дает остаток
// при делении первого операнда на второй
System.out.println( «a % b = » + (a % b));
// если знаменатель равен 0 в делении
// тогда генерируется арифметическое исключение.
// раскомментирование ниже строки будет
// System.out.println (a / c);
// Java-программа для иллюстрации
// унарные операторы
public class operators <
public static void main(String[] args)
boolean condition = true ;
// оператор предварительного увеличения
// a = a + 1 и затем c = a;
System.out.println( «Value of c (++a) = » + c);
System.out.println( «Value of c (b++) = » + c);
// оператор перед декрементом
System.out.println( «Value of c (—d) = » + c);
// оператор после декремента
System.out.println( «Value of c (e—) = » + c);
// Логический не оператор
Во многих случаях оператор присваивания может быть объединен с другими операторами для создания более короткой версии оператора, называемого составным оператором. Например, вместо a = a + 5 мы можем написать a + = 5.
// Java-программа для иллюстрации
// операторы присваивания
public class operators <
public static void main(String[] args)
// простой оператор присваивания
System.out.println( «Value of c = » + c);
// Следующее утверждение выдает исключение
// как значение правого операнда должно быть инициализировано
// до назначения, и программа не будет
// вместо нижеприведенных выражений
// операторы присваивания могут быть использованы для
// обеспечить ту же функциональность.
System.out.println( «a, b, e, f = » + a + «, «
// оператор стенографического присваивания
System.out.println( «a, b, e, f («
+ «using shorthand operators)= «
Некоторые из реляционных операторов
// Java-программа для иллюстрации
// реляционные операторы
public class operators <
public static void main(String[] args)
boolean condition = true ;
// различные условные операторы
System.out.println( «a == b :» + (a == b));
System.out.println( «a + (a
System.out.println( «a + (a
System.out.println( «a > b :» + (a > b));
System.out.println( «a >= b :» + (a >= b));
// Массивы нельзя сравнивать с
// реляционные операторы, потому что объекты
// хранить ссылки не значение
System.out.println( «x == y : » + (ar == br));
// Java-программа для иллюстрации
// логические операторы
public class operators <
public static void main(String[] args)
Scanner s = new Scanner(System.in);
System.out.print( «Enter username:» );
String uuid = s.next();
System.out.print( «Enter password:» );
String upwd = s.next();
// Проверить, совпадают ли имя пользователя и пароль.
if ((uuid.equals(x) && upwd.equals(y))
System.out.println( «Welcome user.» );
System.out.println( «Wrong uid or password» );
Выход:
Вышеприведенный оператор означает, что если условие оценивается как true, тогда выполнять операторы после ‘?’ иначе выполнить операторы после ‘:’.
// Java-программа для иллюстрации
// максимум три числа используя
// троичный оператор.
public class operators <
public static void main(String[] args)
// результат содержит максимум три
System.out.println( «Max of three numbers = «
, Побитовый оператор дополнения: это унарный оператор, который возвращает однозначное представление входного значения, т.е. со всеми инвертированными битами.
// Java-программа для иллюстрации
// побитовые операторы
public class operators <
public static void main(String[] args)
// Java считает это восьмеричным значением
// из 8, поскольку число начинается с 0.
System.out.println( «a|b = » + (a | b));
System.out.println( «a^b = » + (a ^ b));
// также можно комбинировать с
// оператор присваивания для краткого обозначения
System.out.println( «a= » + a);
// Java-программа для иллюстрации
// операторы сдвига
public class operators <
public static void main(String[] args)
// оператор левого смещения
// аналогично 5 * (2 ^ 2)
System.out.println( «a + (a 2 ));
// 0000 0101 >> 2 = 0000 0001 (1)
// аналогично 5 / (2 ^ 2)
System.out.println( «a>>2 = » + (a >> 2 ));
// беззнаковый оператор смещения вправо
System.out.println( «b>>>2 = » + (b >>> 2 ));
// Java-программа для иллюстрации
// экземпляр оператора
public static void main(String[] args)
Person obj1 = new Person();
Person obj2 = new Boy();
// Поскольку объект obj имеет тип person, он не является
// экземпляр Boy или интерфейс
System.out.println( «obj1 instanceof Person: «
+ (obj1 instanceof Person));
System.out.println( «obj1 instanceof Boy: «
+ (obj1 instanceof Boy));
System.out.println( «obj1 instanceof MyInterface: «
+ (obj1 instanceof MyInterface));
// Поскольку obj2 имеет тип boy,
// и реализует интерфейс Myinterface
// это экземпляр всех этих классов
System.out.println( «obj2 instanceof Person: «
+ (obj2 instanceof Person));
System.out.println( «obj2 instanceof Boy: «
+ (obj2 instanceof Boy));
System.out.println( «obj2 instanceof MyInterface: «
+ (obj2 instanceof MyInterface));
class Boy extends Person implements MyInterface <
Приоритет и ассоциативность операторов
Приоритетные и ассоциативные правила используются при работе с гибридными уравнениями, включающими более одного типа операторов. В таких случаях эти правила определяют, какую часть уравнения следует рассмотреть в первую очередь, поскольку для одного и того же уравнения может быть много разных оценок. В приведенной ниже таблице представлен приоритет операторов в порядке убывания в виде величины, причем верхняя часть представляет наивысший приоритет, а нижняя показывает наименьший приоритет.
Интересные вопросы по операторам
public class operators <
public static void main(String[] args)
// правила приоритета для арифметических операторов.
System.out.println( «a+b/d = » + (a + b / d));
// если такой же приоритет, то ассоциативный
public class operators <
public static void main(String[] args)
// a = b +++ c компилируется как
// a = b + c, то b = b + 1
System.out.println( «Value of a(b+c), «
// a = b +++++ c компилируется как
// который выдает ошибку.
// System.out.println (b +++++ c);
public class operators <
public static void main(String[] args)
// объединяет x и y как
// первый x добавляется в «concatenation (x + y) =»
// создаем «сцепление (x + y) = 5»
// а затем 8 дополнительно объединяется.
System.out.println( «Concatenation (x+y)= «
System.out.println( «Addition (x+y) = «
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.