Разное

Логическое и в java – Java. Экспресс-курс: Логические операторы

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
if (a < b)
    System.out.println("А меньше Б");
else
    System.out.println("Б меньше А");
Если a меньше b, то выполнится первая команда, в противном случае – вторая. Команды никогда не выполнятся одновременно.
2
if (a < b)
{
    System.out.println("А меньше Б");
    System.out.println("Б больше А");
}
else
{
     System.out.println("Б меньше А");
     System.out.println("А больше Б");
}
Вместо одной команды можно подставить блок команд. В остальном — то же самое.
3
if (a < b)
{
    a = 0;
}
else
{
}
Блок else можно не писать, если он пустой.
Данные три примера абсолютно эквиваленты.
Можно не писать скобочки, если нужно выполнить только одну команду. Если у нас несколько команд, то скобочки писать обязательно.
4
if (a < b)
{
    a = 0;
}
5
if (a < b)
    a = 0;

— Диего тут просил передать тебе несколько задачек.

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.

  1. public class ConditionalOperators {

  2.  

  3.     public static void main(String[] args) {
  4.         //допустим у нас есть переменная variable

  5.         //которая по умолчанию равна 5

  6.         int variable = 5;

  7.         //мы прибавляем к ней число и хотим узнать:

  8.         //стала эта переменная больше 0, меньше 0 или 0

  9.         //думаю задача понятна

  10.         variable = variable + 3;//очевидно, что переменная станет больше 0

  11.         //давайте это проверим

  12.         if (variable > 0) {

  13.             System.out.println(«Переменная больше 0»);
  14.         }

  15.         else if (variable < 0) {

  16.             System.out.println(«Переменная меньше 0»);
  17.        

java-master.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *