Java — Самоучитель

  • 15. Java — Массивы
  • 16. Java — Дата и время
  • 17. Java — Регулярные выражения
  • 18. Java — Методы
  • 19. Java — Потоки ввода/вывода, файлы и каталоги
  • 9. Java — Основные операторы языка

    Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:

    • арифметические операторы;
    • операторы сравнения;
    • побитовые операторы;
    • логические операторы;
    • операторы присваивания;
    • прочие операторы.

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

    Арифметические операторы — используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:

    ОператорОписаниеПример
    +Складывает значения по обе стороны от оператораA + B даст 30
    -Вычитает правый операнд из левого операндаA - B даст -10
    *Умножает значения по обе стороны от оператораA * B даст 200
    /Оператор деления делит левый операнд на правый операндA / B даст 2
    %Делит левый операнд на правый операнд и возвращает остатокA % B даст 0
    ++Инкремент - увеличивает значение операнда на 1B++ даст 21
    --Декремент - уменьшает значение операнда на 1B-- даст 19

    Пример

    Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

    public class Test {
    
      public static void main(String args[]) {
         int a = 10;
         int b = 20;
         int c = 25;
         int d = 25;
         System.out.println("a + b = " + (a + b));
         System.out.println("a - b = " + (a - b));
         System.out.println("a * b = " + (a * b));
         System.out.println("b / a = " + (b / a));
         System.out.println("b % a = " + (b % a));
         System.out.println("c % a = " + (c % a));
         System.out.println("a++   = " +  (a++));
         System.out.println("b--   = " +  (a--));
         // Проверьте разницу в d++ и ++d
         System.out.println("d++   = " +  (d++));
         System.out.println("++d   = " +  (++d));
      }
    } 
    

    Это произведет следующий результат:

    a + b = 30
    a - b = -10
    a * b = 200
    b / a = 2
    b % a = 0
    c % a = 5
    a++   = 10
    b--   = 11
    d++   = 25
    ++d   = 27
    

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

    Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:

    ОператорОписаниеПример
    ==Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным(A == B) — не верны
    !=Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным(A != B) — значение истинна
    >Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным(A > B) — не верны
    <Проверяет, является ли значение левого операнда меньше, чем значение правого операнда, если да, то условие становится истинным(A < B) — значение истинна
    >=Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным(A >= B) — значение не верны
    <=Проверяет, если значение левого операнда меньше или равно значению правого операнда, если да, то условие становится истинным(A <= B) — значение истинна

    Пример

    Следующий простой пример показывает, программно операторы сравнения в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

    public class Test {
    
      public static void main(String args[]) {
         int a = 10;
         int b = 20;
         System.out.println("a == b = " + (a == b) );
         System.out.println("a != b = " + (a != b) );
         System.out.println("a > b = " + (a > b) );
         System.out.println("a < b = " + (a < b) );
         System.out.println("b >= a = " + (b >= a) );
         System.out.println("b <= a = " + (b <= a) );
      }
    } 
    

    Будет получен следующий результат:

    a == b = false
    a != b = true
    a > b = false
    a < b = true
    b >= a = true
    b <= a = false
    

    Побитовые операторы

    Java определяет несколько побитовых операторов, которые могут быть применены для целочисленных типов: int, long, short, char и byte. В Java побитовый оператор работает над битами и выполняет операцию бит за битом. Предположим, если a = 60; и b = 13; то в двоичном формате они будут следующие:

    a = 0011 1100
    b = 0000 1101
    -----------------
    a&b = 0000 1100
    a|b = 0011 1101
    a^b = 0011 0001
    ~a = 1100 0011

    Предположим целочисленные переменная A равна 60, а переменная B равна 13. В следующей таблице перечислены побитовые операторы в Java:

    ОператорОписаниеПример
    &Бинарный «AND» оператор, копирует бит в результат, если он существует в обоих операндах(A & B) даст 12, который является 0000 1100
    |Бинарный «OR» оператор копирует бит, если он существует в любом операнде(A | B) даст 61 который равен 0011 1101
    ^Бинарный «XOR» оператор копирует бит, если он установлен в одном операнде, но не в обоих(A ^ B) даст 49, которая является 0011 0001
    ~Бинарный оператор дополнения и имеет эффект «отражения» бит(~ A) даст -61, которая является формой дополнением 1100 0011 в двоичной записи
    <<Бинарный оператор сдвига влево. Значение левого операнда перемещается влево на количество битов, указанное в правом операндеA << 2 даст 240, который 1111 0000
    >>Бинарный оператор сдвига вправо. Значение левого операнда перемещается вправо на количество битов, указанное в правом операндеA >> 2 даст 15, который является 1111
    >>>Оператор сдвига право нулевого наполнения. Значение левого операнда перемещается вправо на количество битов, указанное в правом операнде и смещенные значения заполняются нулямиA >>> 2 даст 15, который является 0000 1111

    Пример

    Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

    public class Test {
    
      public static void main(String args[]) {
         int a = 60;	/* 60 = 0011 1100 */  
         int b = 13;	/* 13 = 0000 1101 */
         int c = 0;
    
         c = a & b;       /* 12 = 0000 1100 */ 
         System.out.println("a & b = " + c );
    
         c = a | b;       /* 61 = 0011 1101 */
         System.out.println("a | b = " + c );
    
         c = a ^ b;       /* 49 = 0011 0001 */
         System.out.println("a ^ b = " + c );
    
         c = ~a;          /*-61 = 1100 0011 */
         System.out.println("~a = " + c );
    
         c = a << 2;     /* 240 = 1111 0000 */
         System.out.println("a << 2 = " + c );
    
         c = a >> 2;     /* 215 = 1111 */
         System.out.println("a >> 2  = " + c );
    
         c = a >>> 2;     /* 215 = 0000 1111 */
         System.out.println("a >>> 2 = " + c );
      }
    } 
    

    Будет получен следующий результат:

    a & b = 12
    a | b = 61
    a ^ b = 49
    ~a = -61
    a << 2 = 240
    a >> 15
    a >>> 15
    

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

    Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:

    ОператорОписаниеПример
    &&Называется логический оператор «И». Если оба операнда являются не равны нулю, то условие становится истинным(A && B) — значение false
    ||Называется логический оператор «ИЛИ». Если любой из двух операндов не равен нулю, то условие становится истинным(A || B) — значение true
    !Называется логический оператор «НЕ». Использование меняет логическое состояние своего операнда. Если условие имеет значение true, то оператор логического «НЕ» будет делать false!(A && B) — значение true

    Пример

    Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

    public class Test {
    
      public static void main(String args[]) {
         boolean a = true;	
         boolean b = false;	
    
         System.out.println("a && b = " + (a&&b));
    
         System.out.println("a || b = " + (a||b) );
    
         System.out.println("!(a && b) = " + !(a && b));
      }
    } 
    

    Это произведет следующий результат:

    a && b = false
    a || b = true
    !(a && b) = true
    

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

    Существуют следующие операторы присваивания, поддерживаемые языком Java:

    Оператор Описание Пример
    = Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операнду C = A + B, присвоит значение A + B в C
    += Оператор присваивания «Добавления», он присваивает левому операнду значения правого C += A, эквивалентно C = C + A
    -= Оператор присваивания «Вычитания», он вычитает из правого операнда левый операнд C -= A, эквивалентно C = C - A
    *= Оператор присваивания «Умножение», он умножает правый операнд на левый операнд C * = A эквивалентно C = C * A
    /= Оператор присваивания «Деление», он делит левый операнд на правый операнд C /= A эквивалентно C = C / A
    %= Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операнду C %= A, эквивалентно C = C % A
    <<= Оператор присваивания «Сдвиг влево» C << = 2, это как C = C << 2
    >>= Оператор присваивания «Сдвиг вправо» C >>= 2, это как C = C >> 2
    &= Оператор присваивания побитового «И» («AND») C &= 2, это как C = C & 2
    ^= Оператор присваивания побитового исключающего «ИЛИ» («XOR») C ^= 2, это как C = C ^ 2
    |= Оператор присваивания побитового «ИЛИ» («OR») C |= 2, это как C = C | 2

    Пример

    Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

    public class Test {
    
      public static void main(String args[]) {
         int a = 10;	
         int b = 20;
         int c = 0;
    
         c = a + b;
         System.out.println("c = a + b = " + c );
    
         c += a ;
         System.out.println("c += a  = " + c );
    
         c -= a ;
         System.out.println("c -= a = " + c );
    
         c *= a ;
         System.out.println("c *= a = " + c );
    
         a = 10;
         c = 15;
         c /= a ;
         System.out.println("c /= a = " + c );
    
         a = 10;
         c = 15;
         c %= a ;
         System.out.println("c %= a  = " + c );
    
         c <<= 2 ;
         System.out.println("c <<= 2 = " + c );
    
         c >>= 2 ;
         System.out.println("c >>= 2 = " + c );
    
         c >>= 2 ;
         System.out.println("c >>= a = " + c );
    
         c &= a ;
         System.out.println("c &= 2  = " + c );
      
         c ^= a ;
         System.out.println("c ^= a   = " + c );
    
         c |= a ;
         System.out.println("c |= a   = " + c );
      }
    }

    Будет получен следующий результат:

    c = a + b = 30
    c += a  = 40
    c -= a = 30
    c *= a = 300
    c /= a = 1
    c %= a  = 5
    c <<= 2 = 20
    c >>= 2 = 5
    c >>= 2 = 1
    c &= a  = 0
    c ^= a   = 10
    c |= a   = 10

    Прочие операторы

    Есть несколько других операторов, поддерживаемых языком Java.

    Тернарный оператор или условный оператор (?:)

    Тернарный оператор — оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:

    переменная x = (выражение) ? значение if true : значение if false

    Пример

    Ниже приведен пример:

    public class Test {
     
       public static void main(String args[]){
          int a , b;
          a = 10;
          b = (a == 1) ? 20 : 30;
          System.out.println( "Значение b: " +  b );
     
          b = (a == 10) ? 20 : 30;
          System.out.println( "Значение b: " + b );
       }
    }

    Будет получен следующий результат:

    Значение b: 30
    Значение b: 20

    Оператор instanceof

    Оператор instanceof — проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:

    (Переменная ссылочного объекта) instanceof (класс/тип интерфейса)

    Примеры

    Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:

    public class Test {
     
       public static void main(String args[]){
          String name = "Олег";
          // Следующее вернётся верно, поскольку тип String
          boolean result = name instanceof String;  
          System.out.println( result );
       }
    }

    Будет получен следующий результат:

    true

    Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:

    class Vehicle {}
     
    public class Car extends Vehicle {
       public static void main(String args[]){
          Vehicle a = new Car();
          boolean result =  a instanceof Car;
          System.out.println( result );
       }
    }

    Будет получен следующий результат:

    true

    Приоритет операторов в Java

    Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

    Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

    В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.

    Категория Оператор Ассоциативность
    Постфикс () [] . (точка) Слева направо
    Унарный ++ - - ! ~ Справа налево
    Мультипликативный * / % Слева направо
    Аддитивный + - Слева направо
    Сдвиг >> >>> << Слева направо
    Реляционный > >= < <= Слева направо
    Равенство == != Слева направо
    Побитовое «И» («AND») & Слева направо
    Побитовое исключающее «ИЛИ» («XOR») ^ Слева направо
    Побитовое «ИЛИ» («OR») | Слева направо
    Логическое «И» («AND») && Слева направо
    Логическое «ИЛИ» («OR») || Слева направо
    Условный ?: Справа налево
    Присваивание = += -= *= /= %= >>= <<= &= ^= |= Справа налево
    Запятая , Слева направо

    В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.

    Поделитесь:

    О сайте

    Все материалы сайта proglang.su являются результатом труда его авторов. Копирование материалов в некоммерческих целях без указания источника в виде прямой ссылки на сайт proglang.su запрещено. Использование материалов в коммерческих целях разрешено только с письменного согласия автора. Нарушение авторских прав преследуется по закону. Мы это делаем, чтобы защитить плоды своих трудов от воровства. © 2014-2017

    Присоединяйтесь