[Oracle, Программирование, Java, Промышленное программирование] Унарные операторы в Java
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Уже завтра в OTUS скоро стартует новая профессиональная программа по подготовке к сертификации Oracle Java Programmer (OCAJP). Предлагаем вам посмотреть запись бесплатного Demo-урока «Типы данных Java: Идентификаторы и примитивы» и продолжаем публиковать серию статей Владислава Родина — руководителя группы разработки, преподавателя в МФТИ и foxminded.
Введение
Сертификация OCA (Oracle Certified Associate Java SE8 Programmer) предлагает ряд необычных заданий, проверяющих глубокое понимание принципов работы языка программирования Java. Целый блок посвящен выражениям, циклам и операторам. Про последние мы сегодня и поговорим.
Приоритет операторов
Оператор принимает на вход аргументы и возвращает некоторые значения. Выделяют унарные, бинарные и тернарные операторы. Например, !false — унарный, a + b — бинарный, а? : — является единственным оператором, принимающим на вход три аргумента.
Первое, что необходимо помнить, это приоритет выполнения операторов:
- Пост-унарные операторы: exception++ и exception--
- Пре-унарные операторы: ++exception и --exception
- Остальные унарные операторы: +, -, !
- Умножение, деление, взятие остатка: *, /, %
- Сложение и вычитание: +, -
- Операторы битового сдвига: <<, >>, >>>
- Операторы сравнения: <, >, <=, >=, instanceof
- Операторы равенства-неравенства: ==, !=
- Логические операторы: &, |, ^
- Short-circuit логические операторы: &&, ||
- Тернарный оператор: boolean expression? expression1: expres-
sion2
- Операторы присваивания: =, +=, -=, *=, /=, %=, &=, ^=, !=, <<=, >>=, >>>=
Работа с унарными операторами
Про бинарные операторы мы говорили в прошлый раз. Сегодня обсудим унарные операторы, что следует из названия статьи. На экзамене могут предлагать достаточно сложные выражения для вычисления которых необходимо помнить порядок их выполнения.
Операторы смены знака и логической инверсии
Оператор логической инверсии ! применяется только к переменным типа boolean и превращает значение из true в false и наоборот. Например:
boolean x = false;
System.out.println(x); // false
x = !x;
System.out.println(x); // true
Оператор смены знака - применяется только к числам и меняет знак на противоположный:
double x = 1.21;
System.out.println(x); // 1.21
x = -x;
System.out.println(x); // -1.21
x = -x;
System.out.println(x); // 1.21
Java в отличии от того же C четко разделяет целочисленные типы данных и boolean, в связи с чем применение оператора смены знака к boolean либо же применение оператора логической инверсии приводят к ошибкам компиляции:
int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE
boolean z = !0; // DOES NOT COMPILE
Операторы инкремента и декремента
Операторы инкремента ++ и декремента -- применяются к целочисленным переменным и обладают двумя вариациям: post-инкремент (декремент) и pre-инкремент (декремент), в коде i++ (i--) и ++i (--i) соответственно. Разница между вариациями в том, что ++i увеличивает переменную и возвращает новое значение, а i++ возвращает старое значение, а только затем увеличивает переменную. Разницу более наглядно можно увидеть в таком куске кода:
int counter = 0;
System.out.println(counter); // Outputs 0
System.out.println(++counter); // Outputs 1
System.out.println(counter); // Outputs 1
System.out.println(counter--); // Outputs 1
System.out.println(counter); // Outputs 0
На экзамене могут предлагаться различные хитрые задания, где таких операторов вагон и маленькая тележка. Например, может быть предложено такое задание:
Что будет выведено в результате выполнения данной программы?
int x = 3;
int y = ++x * 5 / x-- + --x;
System.out.println("x is " + x);
System.out.println("y is " + y);
Проблема заключается в том, что x меняется несколько раз в одной строке.
Для решения таких задач можно разбирать выражение слева направо, подставляя в выражение то, что возвращают операторы, и фиксируя отдельно значение изменяемой переменной. Например, вот так:
int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3
int y = 4 * 5 / 4 + 2; // x assigned value of 2
Как видите, применяются все обозначенные выше правила применения операторов. В результате выведено будет следующее:
x is 2
y is 7
Читать ещё:
оригинал
===========
Источник:
habr.com
===========
Похожие новости:
- [PHP] Composer 2: Что нового? (перевод)
- [Atlassian] Агрессивный переход в Atlassian облако или это vendor lock-in?
- [Python, Программирование, Математика, Научно-популярное, Физика] Изучаем распространение радиосигналов в ионосфере с помощью SDR
- [Amazon Web Services, Облачные сервисы] AWS Cloud Core Concepts
- [Программирование, Совершенный код, C++, Проектирование и рефакторинг] Наследование реализации в С++. Реальная история (перевод)
- [Разработка под Windows, Софт] Microsoft выпустила инструкцию для исправления работы функции Windows 10 «Сбросить этот ПК»
- [Системное администрирование, Серверное администрирование, DevOps, Kubernetes] Наш путь к нулевым простоям при непрерывном обновлении с помощью Ambassador (перевод)
- [Гаджеты, Носимая электроника, Медгаджеты, Здоровье] Справочная // Apple Watch Series 6 с пульсоксиметром: что это и для чего нужно
- [Разработка веб-сайтов, Программирование, Dart, Flutter] Обновление роадмапа AngularDart (перевод)
- [Контент-маркетинг, Управление продуктом, Управление медиа, Брендинг, Социальные сети и сообщества] Как работает управление репутацией в интернете
Теги для поиска: #_oracle, #_programmirovanie (Программирование), #_java, #_promyshlennoe_programmirovanie (Промышленное программирование), #_java, #_oracle, #_certified, #_associate, #_se, #_programmer, #_operatory (операторы), #_blog_kompanii_otus._onlajnobrazovanie (
Блог компании OTUS. Онлайн-образование
), #_oracle, #_programmirovanie (
Программирование
), #_java, #_promyshlennoe_programmirovanie (
Промышленное программирование
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:33
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Уже завтра в OTUS скоро стартует новая профессиональная программа по подготовке к сертификации Oracle Java Programmer (OCAJP). Предлагаем вам посмотреть запись бесплатного Demo-урока «Типы данных Java: Идентификаторы и примитивы» и продолжаем публиковать серию статей Владислава Родина — руководителя группы разработки, преподавателя в МФТИ и foxminded.
Введение Сертификация OCA (Oracle Certified Associate Java SE8 Programmer) предлагает ряд необычных заданий, проверяющих глубокое понимание принципов работы языка программирования Java. Целый блок посвящен выражениям, циклам и операторам. Про последние мы сегодня и поговорим. Приоритет операторов Оператор принимает на вход аргументы и возвращает некоторые значения. Выделяют унарные, бинарные и тернарные операторы. Например, !false — унарный, a + b — бинарный, а? : — является единственным оператором, принимающим на вход три аргумента. Первое, что необходимо помнить, это приоритет выполнения операторов:
Работа с унарными операторами Про бинарные операторы мы говорили в прошлый раз. Сегодня обсудим унарные операторы, что следует из названия статьи. На экзамене могут предлагать достаточно сложные выражения для вычисления которых необходимо помнить порядок их выполнения. Операторы смены знака и логической инверсии Оператор логической инверсии ! применяется только к переменным типа boolean и превращает значение из true в false и наоборот. Например: boolean x = false;
System.out.println(x); // false x = !x; System.out.println(x); // true Оператор смены знака - применяется только к числам и меняет знак на противоположный: double x = 1.21;
System.out.println(x); // 1.21 x = -x; System.out.println(x); // -1.21 x = -x; System.out.println(x); // 1.21 Java в отличии от того же C четко разделяет целочисленные типы данных и boolean, в связи с чем применение оператора смены знака к boolean либо же применение оператора логической инверсии приводят к ошибкам компиляции: int x = !5; // DOES NOT COMPILE
boolean y = -true; // DOES NOT COMPILE boolean z = !0; // DOES NOT COMPILE Операторы инкремента и декремента Операторы инкремента ++ и декремента -- применяются к целочисленным переменным и обладают двумя вариациям: post-инкремент (декремент) и pre-инкремент (декремент), в коде i++ (i--) и ++i (--i) соответственно. Разница между вариациями в том, что ++i увеличивает переменную и возвращает новое значение, а i++ возвращает старое значение, а только затем увеличивает переменную. Разницу более наглядно можно увидеть в таком куске кода: int counter = 0;
System.out.println(counter); // Outputs 0 System.out.println(++counter); // Outputs 1 System.out.println(counter); // Outputs 1 System.out.println(counter--); // Outputs 1 System.out.println(counter); // Outputs 0 На экзамене могут предлагаться различные хитрые задания, где таких операторов вагон и маленькая тележка. Например, может быть предложено такое задание: Что будет выведено в результате выполнения данной программы? int x = 3;
int y = ++x * 5 / x-- + --x; System.out.println("x is " + x); System.out.println("y is " + y); Проблема заключается в том, что x меняется несколько раз в одной строке. Для решения таких задач можно разбирать выражение слева направо, подставляя в выражение то, что возвращают операторы, и фиксируя отдельно значение изменяемой переменной. Например, вот так: int y = 4 * 5 / x-- + --x; // x assigned value of 4
int y = 4 * 5 / 4 + --x; // x assigned value of 3 int y = 4 * 5 / 4 + 2; // x assigned value of 2 Как видите, применяются все обозначенные выше правила применения операторов. В результате выведено будет следующее: x is 2
y is 7 Читать ещё: оригинал =========== Источник: habr.com =========== Похожие новости:
Блог компании OTUS. Онлайн-образование ), #_oracle, #_programmirovanie ( Программирование ), #_java, #_promyshlennoe_programmirovanie ( Промышленное программирование ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 18:33
Часовой пояс: UTC + 5