Арифметические операторы




К арифметическим операторам относятся сложение (+), вычитание (-), умножение (*), деление (/), вычисление остатка (%), инкремент (++) и декремент (– -).

Допустим, мы задали значения x=18 и y=4. Тогда результаты использования операторов будут выглядеть так:

Сложение: x + y = 22
 Вычитание: x – y = 14
 Умножение: x*y = 72
Пока ничего необычного, но дальше будет немного сложнее. Деление: 18 / 4 = 4

Неожиданно, не так ли? В языке Java результат деления одного целого числа на другое целое число будет целочисленным, остаток отбрасывается без округления. Получить результат деления с дробной частью можно двумя способами: объявить один или оба операнда как число с плавающей точкой или использовать явное приведение.

18 / 4.0 = 4.50 (double) 18/4 = 4.50

Вычисление остатка: 18%4 = 2. При делении 18/4 нацело мы получаем частное 4 (4*4=16) и остаток 2 (18—16=2). Иными словами, остаток – это побочный продукт целочисленного деления.

Инкремент: оператор постфиксного инкремента x++ сперва возвращает исходное значение переменной, затем увеличивает его на единицу. Оператор префиксного инкремента ++x сперва увеличивает значение переменной на 1, затем возвращает новое значение.

Строка с постфиксным инкрементом System.out.print (x++);
равнозначна последовательности команд System.out.print (x);

x = x +1;
Строка с префиксным инкрементом System.out.print (++x);
равнозначна последовательности команд x = x +1;
System.out.print (x);

Декремент: оператор постфиксного декремента сперва возвращает исходное значение переменной, затем уменьшает его на единицу. Оператор префиксного декремента сперва уменьшает значение переменной на 1, затем возвращает новое значение.

Строка с постфиксным декрементом System.out.print (x – -);
равнозначна последовательности команд System.out.print (x);

x = x – 1;
Строка с префиксным декрементом System.out.print (– — x);
равнозначна последовательности команд x = x – 1;

System.out.print (x);

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

Логические операторы предназначены для использования с логическими операндами и создания условий для логических операторов.

Логическое И (&) – результатом выражения A&B является true, если оба операнда имеют значение true. Если хотя бы один из операндов имеет значение false, то результатом является false.

Укороченное логическое И (&&) – выражение A&&B вычисляется точно так же, как A&B, но если при проверке операнда A оказывается, что оно равно false, то значение B уже
не проверяется, а сразу возвращается значение false.

Логическое ИЛИ (|) – результатом выражения A|B является true, если значение хотя бы одного из операндов является true. В ином случае возвращается значение false.

Укороченное логическое ИЛИ (||) – результат выражения A||B совпадает с результатом A|B, но если при проверке операнда A оказывается, что он имеет значение true, то второй операнд не проверяется, и сразу возвращается значение true.

Логическое исключающее ИЛИ (^) – результатом выражения A^B является true, если один операнд имеет значение true, а другой имеет значение false. Если оба операнда одновременно имеют значение true, или оба операнда одновременно имеют значение false, то возвращается значение false.

Унарное логическое отрицание (!) – результатом выражения! A является false, если операнд имеет значение true, и наоборот.

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

A&B&C – это выражение возвращает значение true, только если все три операнда одновременно имеют значение true.

A|B|C – это выражение возвращает true, если хотя бы один из операндов имеет значение true.

A&B|C – это выражение возвращает true, если A и B одновременно имеют значение true, или C имеет значение true. Оператор & имеет более высокий приоритет, поэтому сначала вычисляется значение выражения A&B, и результат вступает в логическую операцию ИЛИ c операндом C.

Битовые операторы

Битовые (или побитовые) операторы предназначены для операций с целыми числами на уровне их побитового представления.

Битовое И (&) – выражение A&B выполняется побитово, т.е. отдельно для каждого разряда. Если оба бита единичные, то в соответствующем разряде результата будет единица. Если хотя бы один из битов нулевой, в разряд результата записывается ноль.

Пример: 1101 & 0110 = 0100

Битовое ИЛИ (|) – выражение A|B выполняется побитово. Если хотя бы один из битов единичный, то в соответствующий разряд результата будет записана единица. Если оба бита нулевые, то в разряд результата будет записан ноль.

Пример: 1101 | 0110 = 1111

Битовое исключающее ИЛИ (^) – выражение A^B выполняется побитово. Если один
из сравниваемых битов нулевой, а другой единичный, то в разряд результата записывается единица. Если оба бита нулевые, или оба бита единичные, то в разряд результата записывается ноль.

Пример: 1101 ^ 0110 = 1011

Битовый сдвиг вправо (>>) – результатом выполнения оператора A>> n является число, которое получилось сдвигом двоичного числа A вправо на n позиций. При сдвиге сохраняется знак числа, то есть младшие разряды теряются, а старшие заполняются содержимым знакового бита (0 для положительных чисел и 1 для отрицательных).

Примеры: (11010010)>> 2=11110100, (01010010)>> 2=00010100

Беззнаковый битовый сдвиг вправо (>>>) – результатом выполнения оператора A>>>
n является число, которое получилось сдвигом двоичного числа A вправо на n позиций. При сдвиге НЕ сохраняется знак числа, то есть младшие разряды теряются, а старшие заполняются нулями.

Битовый сдвиг влево (<<) – результатом выполнения оператора A <<n является число, которое получилось сдвигом двоичного числа A влево на n позиций. При этом старшие разряды теряются, а младшие дополняются нулями.

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

Если условие, заданное оператором сравнения, выполняется, то выражение возвращает значение true. В противном случае возвращается значение false. Все операторы сравнения бинарные – содержат только два операнда.

Равно (==) – выражение A==B возвращает true, если значение операнда A равно значению операнда B. Обратите внимание, оператор сравнения состоит из двух знаков равенства. Если вы используете одиночный знак равенства, то получится не сравнение, а присвоение значения. Среда NetBeans предупредит вас о возможной ошибке, хотя с формальной точки зрения это логическая, а не синтаксическая ошибка.

Не равно (!=) – выражение A!=B возвращает true, если значение операнда A отлично от значения операнда B.

Больше (>) – выражение A> B возвращает true, если значение операнда A больше значения операнда B.

Больше или равно (> =) – выражение A> =B возвращает true, если значение операнда A больше или равно значению операнда B.

Меньше (<) – выражение A <B возвращает true, если значение операнда A меньше значения операнда B.

Меньше или равно (<=) – выражение A <=B возвращает true, если значение операнда A меньше или равно значению операнда B.

3.3.5 Тернарный оператор

В языке Java имеется единственный оператор, у которого три операнда. Этот оператор обозначается символом вопроса (?) и имеет следующий синтаксис:

условие? значение: значение

Условием является выражение с логическим значением. Сначала вычисляется значение выражения, указанного в условии. Если оно истинное, то оператор возвращает значение, расположенное после вопросительного знака. Если значение условия ложное, то оператор возвращает значение, следующее после двоеточия. Например:

int a=10,b;

b = (a> 5)? 50: 60;

В данном случае переменной b будет присвоено значение 50.

int a=3,b;

b = (a> 5)? 50: 60;

Во втором случае переменной b будет присвоено значение 60.

Тернарный оператор представляет собой сокращенную форму условного оператора, о котором будет рассказано в главе 4.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: