Java 8 операции — urvanov.ru
Цикл статей «Учебник Java 8».
Следующая статья — «Java 8 выражения, инструкции и блоки».
Предыдущая статья — «Переменные в Java 8».
Операции позволяют выполнить арифметические, логические и битовые действия с переменными и литералами. В этой статье я попробую описать каждую операцию с таким уровнем подробностей, с которым его учил я.
Содержание
Операция присваивания
Преобразование примитивных типов
— Расширяющее преобразование примитивов
— Сужающее преобразование примитивов
Арифметические операции
Унарные операции
— Отличие постфиксного и префиксного инкремента и декремента
Операции сравнения
Логические И и ИЛИ
Операция instanceof
Тернарная операция
Битовые операции
Присвоение с выполнением другой операции
Приоритеты операций
Операция присваивания
Операция «=» позволяет присвоить значение переменной:
int x = 3; long l1 = 10_000_000_000L; float f1 = 1.3f; double weight = 81.34; byte b1 = 100; short sh2 = -10000; char ch2 = 60000;
int x = 3; long l1 = 10_000_000_000L; float f1 = 1.3f; double weight = 81.34; byte b1 = 100; short sh2 = -10000; char ch2 = 60000; |
КОНСТАНТНЫЕ значения до int можно присвоить без приведения типа к переменным меньшего размера (например short в byte), если значение помещается в эту переменную.
Вы можете присвоить переменной, имеющей больший тип, значение меньшего типа, например переменной типа double можно присвоить значение int, но не наоборот (но можно использовать приведение типа, если очень нужно).
Примеры:
double d1 = 2; // Это можно int x = 2.3; // так нельзя. Будет ошибка компиляции. byte b1 = 100; //Это можно, так как литерал 100 гарантировано // поместится в byte. byte b2 = 10000; //Нельзя. Ошибка компиляции. int n = 100; byte b3 = n; //А вот так тоже нельзя, так как // переменная n имеет тип int.
double d1 = 2; // Это можно int x = 2.3; // так нельзя. Будет ошибка компиляции.
byte b1 = 100; //Это можно, так как литерал 100 гарантировано // поместится в byte.
byte b2 = 10000; //Нельзя. Ошибка компиляции.
int n = 100; byte b3 = n; //А вот так тоже нельзя, так как // переменная n имеет тип int. |
Операция присваивания возвращает значение, которое присвоила, поэтому можно присваивать значение сразу нескольким переменным по цепочке:
int x; int y; int z = x = y = 10; // y, x и z будет присвоено 10.
int x; int y; int z = x = y = 10; // y, x и z будет присвоено 10. |
Преобразование примитивных типов
Есть два типа преобразования примитивных типов:
Расширяющее преобразование примитивов
Следующие преобразования называются расширяющими преобразованиями примитивов:
- byte -> short, int, long, float, double
- short -> int, long, float, double
- char -> int, long, float, double
- int -> long, float, double
- long -> float, double
- float -> double
Расширяющее преобразование не приводит к потере информации в следующих случаях:
- из целого типа в другой целый тип
- из byte, short, char в тип с плавающей точкой
- из int в double
- из float в double в выражении с strictfp (это такой особый режим вычислений с плавающей точкой, возможно, распишу позже).
Расширяющее преобразование из float в double в обычном режиме (без strictfp ) может привести к потере точности.
Расширяющее преобразование int во float или из long во float, или из long в double может привести к потере точности, то есть результат может потерять несколько наименее значимых бит информации, что приведёт к получению округлённого значения.
Примеры расширяющего преобразования примитивов:
byte b1 = 100; short sh2 = b1; // Расширяющее преобразование byte->short char ch2 = 100; int i1 = sh2; // Расширяющее преобразование short->int int i2 = ch2; // Расширяющее преобразование char->int long l1 = i1; // Расширяющее преобразование int->long float f1 = l1; // Расширяющее преобразование long->float double d1 = f1; // Расширяющее преобразование float->double
byte b1 = 100; short sh2 = b1; // Расширяющее преобразование byte->short char ch2 = 100; int i1 = sh2; // Расширяющее преобразование short->int int i2 = ch2; // Расширяющее преобразование char->int long l1 = i1; // Расширяющее преобразование int->long float f1 = l1; // Расширяющее преобразование long->float double d1 = f1; // Расширяющее преобразование float->double |
Несмотря на возможность потери точности расширяющее преобразование примитивов никогда не приводит к ошибкам во время выполнения.
Сужающее преобразование примитивов
Следующие преобразования называются сужающими преобразованиями примитивов:
- short -> byte, char
- char -> byte ,
urvanov.ru
Логические операторы в Java — манекены 2019
логический оператор (иногда называемый «Логический оператор») в Java-программировании — это оператор, который возвращает логический результат, основанный на логическом результате одного или двух других выражений.
Иногда выражения, которые используют логические операторы, называются «составными выражениями», потому что эффект от логических операторов позволяет объединить два или более теста условий в одно выражение.
Оператор | Имя | Тип | Описание |
---|---|---|---|
! | Не | Унарный | Возвращает true, если операнд к правилу оценивается как false. Возвращает false, если операнд справа имеет значение true. |
& | И | Binary | Возвращает true, если оба операнда оцениваются как true. Оба операнда оцениваются до применения оператора And. |
| | Или | Двоичный | Возвращает значение true, если хотя бы один из операндов оценивает значение true. Оба операнда оцениваются до применения оператора Or. |
^ | Xor | Binary | Возвращает true, если один и только один — из операндов оценивается как true. Возвращает false , если оба операнда оцениваются как true или если оба операнда оцениваются как false. |
&& | Условное и | Двоичное | То же, что и &, но если операнд на слева возвращает false, он возвращает false, не оценивая операнд в праве . |
|| | Условное или | Двоичное | То же, что и |, но если операнд в слева возвращает значение true, он возвращает true без оценки операнда в праве . |
ru.howtodou.com
Операторы отношения и логические операторы
Вы здесь: Главная >> Java-учебник >> Операторы отношения и логические операторы
Язык Java содержит полный комплект операторов отношения. Чтобы проверить равенство, следует использовать символы = =. Например, значение выражения 3 = = 7 равно false.
Для проверки неравенства используются символы ! = .
Так, значение выражения 3 != 7 равно true.
Кроме того, в языке Java есть обычные операторы < (меньше), > (больше), <= (меньше или равно) и => (больше или равно).
Java, как и язык C++, использует символы для обозначения логического оператора «и», а также символы | | для обозначения логического оператора «или» . Как обычно, знак восклицания означает логический оператор отрицания . Операторы && и | | вычисляются по сокращенной схеме, т.е. если в ходе вычисления выражения А && В выясняется, что подвыражение А ложно, то подвыражение В не вычисляется.
Например, в выражении
х != 0 && 1/х > х+у // Не делить на 0.
вторая часть никогда не вычисляется, если значение переменной х равно нулю.
Таким образом, подвыражение 1/х не вычисляется, если х равно нулю и деления на нуль не происходит.
Аналогично, если оказывается, что выражение А истинно, то значение выражения А | | В автоматически становится истинным, и вычислять выражение В нет необходимости.
В языке Java есть также тернарный оператор ? :, который иногда оказывается полезным. Выражение
условие ? e1 : е2
означает, что если условие истинно, то вычисляется выражение e1, а если ложно — е2.
Например, выражение
х < у ? х : у
вычисляет меньшее из чисел х и y.
Побитовые операторы
Работая с любыми целочисленными типами, можно применять операторы, имеющие дело непосредственно с битами, из которых состоят целые числа. Это значит, что для получения отдельных битов числа можно использовать технику масок.
В языке Java есть следующие побитовые операторы:
S («и») | {«или») ^ («исключающее или») ~(«не»)
Эти операторы работают с битами. Например, если n — это целое число, то выражение
int fourthBitFromRight = (n & 8) /8;
равно единице, если четвертый бит справа в двоичном представлении числа n равен единице, и нуль, если нет.
Используя оператор & с соответствующей степенью двойки, можно замаскировать все биты, кроме одного.
Операторы & и | применяются к булевским переменным и вычисляют булевские значения.
Эти операторы аналогичны операторам && и | |, за исключением того, что побитовые операторы не вычисляются по сокращенной схеме, т.е. перед вычислением результата вычисляются оба аргумента.
В языке Java есть также операторы >> и <<, сдвигающие битовое представление числа вправо или влево. Эти операторы часто оказываются удобными, если нужно построить битовое представление на основе маски: int fourthBitFromRight = (n s (1 « 3)) » 3;
В языке есть даже оператор >>>, заполняющий старшие разряды нулями, в то время как оператор » приписывает знаковый бит к старшим разрядам.
Оператора <« в языке Java нет.
Аргумент, стоящий в правой части операторов побитового сдвига, сокращается по модулю 32 (если левая часть является числом типа long, правая часть сокращается по модулю 64).
Например, значение выражения 1«35 эквивалентно выражению 1 <<3, или 8.
В языках C/C++ не фиксируется, какой сдвиг выполняет оператор >> : арифметический (вплоть до знакового бита) или логический (заполняя свободные разряды нулями).
Разработчики средств реализации языка могут выбрать тот вариант, который покажется им более эффективным. Это значит, что оператор >> в языке C/C++ в действительности лишь определяет некое неотрицательное число.
Язык Java снимает эту неопределенность.
www.java-study.ru
Курс Java Syntax — Лекция: Условные операторы
— Привет, Амиго. Сегодня мы разберём условные операторы.
— От программ было бы мало толку, если бы они делали абсолютно одно и то же независимо от того, как меняются внешние обстоятельства. Программе нужно уметь подстраиваться под обстоятельства, и делать одни действия в одних случаях и другие – в других. В Java это реализовано с помощью «условного оператора» — специального ключевого слова, которое позволяет выполнять разные блоки команд в зависимости от правдивости условия.
— Он состоит из трех частей: «условия», «команды 1» и «команды 2». Если условие верно (истинно), тогда выполняется «команда 1», иначе выполняется «команда 2». Команды никогда не выполняются одновременно. Общий вид этого оператора таков:
Код условного оператора
if (условие)
команда_1;
else
команда_2;
— Как интересно. Думаю, с таким оператором программировать гораздо интереснее.
— Ага. Вот тебе парочка примеров:
Код | Пояснение | |
---|---|---|
1 |
| Если a меньше b, то выполнится первая команда, в противном случае – вторая. Команды никогда не выполнятся одновременно. |
2 |
| Вместо одной команды можно подставить блок команд. В остальном — то же самое. |
3 |
| Блок else можно не писать, если он пустой. Данные три примера абсолютно эквиваленты. Можно не писать скобочки, если нужно выполнить только одну команду. Если у нас несколько команд, то скобочки писать обязательно. |
4 |
| |
5 |
|
— Диего тут просил передать тебе несколько задачек.
javarush.ru
Условные операторы Java | Java master
Сегодня я хочу познакомить Вас с условными операторами в Java. Когда Вы хотите управлять ходом Вашей программы и выполнять действие в зависимости от того, какое выражение выполнилось, Вам просто необходимо использовать условные операторы.
Давайте разберем, что это за оператор. Синтаксис оператора такой:
if (условие истинно) {
выполняем все, что находиться в этих блоках
}
else {
выполняем все что здесь
}
Есть еще такой вид этого оператора:
if (условие истинно) {
выполняем все, что находиться в этих блоках
}
else if (это условие истинно){
выполняем код здесь
}
else {
выполняем все что здесь
}
Вы можете добавлять сколько угодно else if конструкций и проверять любое количество условий. Но когда условий очень много лучше использовать другой оператор: switch — case.
Его синтаксис следующий:
switch (ключ) {
case значение ключа:
выполняем этот код
break;
//сколько угодно блоков case
default:
если значений ключа не оказалось в case блоках — выполняем этот блок кода
break;
}
На примерах все станет ясней.
Давайте создадим класс ConditionalOperators и попробуем потренироваться писать условные операторы. Если Вы не знаете, как создать класс, то советую почитать статью: Первая программа на Java.
Нашей первой задачей будет проверить переменную на знак: больше 0, меньше 0, или равно 0.
public class ConditionalOperators {
- public static void main(String[] args) {
//допустим у нас есть переменная variable
//которая по умолчанию равна 5
int variable = 5;
//мы прибавляем к ней число и хотим узнать:
//стала эта переменная больше 0, меньше 0 или 0
//думаю задача понятна
variable = variable + 3;//очевидно, что переменная станет больше 0
//давайте это проверим
if (variable > 0) {
- System.out.println(«Переменная больше 0»);
}
else if (variable < 0) {
- System.out.println(«Переменная меньше 0»);
java-master.com