Урок 4

Операции


1. Основные арифметические операции

Операция     Описание
+ Сложение (а также унарный плюс)
- Вычитание (а также унарный минус)
* Умножение
/ Деление
% Деление по модулю
  • Выражения вычисляются слева направо, если не добавлены круглые скобки или одни операции имеют более высокий приоритет.
  • Операции *, /, и % имеют более высокий приоритет чем + и -.
  • Операция унарного вычитания изменяет знак своего единственного операнда.
  • Операция унарного сложения просто возвращает значение своего операнда.
  • Когда операция деления выполняется над целочисленным типом данных, ее результат не будет содержать дробный компонент.
  • Операнды арифметических операций должны иметь числовой тип. Арифме­тические операции нельзя выполнять над логическими типами данных, но допускается над типами данных char, поскольку в Java этот тип, по существу, является разновидностью типа int.

Пример 1. Арифметические операции над целочисленными значениями

public class BasicIntMath {
    public static void main(String[] args) {
        System.out.println("Цeлoчиcлeннaя арифметика");
        int i1 = 1 + 1;
        int i2 = 2 * 3;
        int i3 = 16 / 5;
        int i4 = 6 % 5;
        int i5 = 6 - 5;
        int i6 = -6;
        int i7 = +6;
        System.out.println("1 + 1 = " + i1);
        System.out.println("2 * 3 = " + i2);
        System.out.println("16 / 5 = " + i3);
        System.out.println("6 % 5 = " + i4);
        System.out.println("6 - 5 = " + i5);
        System.out.println("-6 = " + i6);
        System.out.println("+6 = " + i7);
    }
}

Пример 2. Арифметические операции над значениями типа double

public class BasicMath {
    public static void main(String[] args) {
        // арифметические операции над значениями типа double
        System.out.println("Aрифметика с плавающей точкой");
        double d1 = 1 + 1;
        double d2 = 2 * 3;
        double d3 = 16.0 / 5.0;
        double d4 = 6.2 % 5.0;
        double d5 = 6 - 5;
        double d6 = -6;
        double d7 = +6;
        System.out.println("1 + 1 = " + d1);
        System.out.println("2 * 3 = " + d2);
        System.out.println("16.0 / 5.0 = " + d3);
        System.out.println("6.2 % 5.0 = " + d4);
        System.out.println("6 - 5 = " + d5);
        System.out.println("-6 = " + d6);
        System.out.println("+6 = " + d7);
    }
}

Пример 3. Арифметические операции над значениями типа char

public class BasicCharMath {
    public static void main(String[] args) {
        char c = 'n';
        System.out.println(c);
        System.out.println(c + 1);
        System.out.println(c / 5);
    }
}

Пример 4. Арифметические операции над значениями типа char

public class Main {
    public static void main(String[] args) {
        char c1 = '1';
        char c2 = '\u0031';
        char c3 = 49;
        System.out.println(c1 + c2 + c3);
    }
}

2. Составные арифметические операции с присваиванием

Операция     Описание
+= Сложение с присваиванием
-= Вычитание с присваиванием
*= Умножение с присваиванием
/= Деление с присваиванием
%= Деление по модулю с присваиванием

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

а = а + 4;

B Java эту операцию можно записать следующим образом:

а += 4;
  • Составные операции с присваиванием позволяют уменьшить объем вводимого кода.
  • Их реализация в исполняющей системе Java оказывается эффективнее реализации эквивалентных длинных форм.

Пример 5. Составные арифметические операции с присваиванием

public class CompoundOperations {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = 3;
        a += 3;
        b *= 2;
        c += a * b;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

3. Операции инкремента и декремента

Операции ++ и -- выполняют инкремент и декремент. Операция инкремента увеличивает значение операнда на единицу, а операция

декремента уменьшает значение операнда на единицу. Например, выражение

х = х + 1;

с операцией инкремента можно переписать так:

х++;

Аналогично следующее выражение:

х = х - 1;

равнозначно приведенному ниже выражению

х--;

Эти операции могут быть записаны в постфиксной форме, когда операция следует за операндом, а также в префиксной форме, когда операция предшествует операнду.

Пример 7. Операции инкремента и декремента

public class IncrementDecrement {
    public static void main(String[] args) {
        int a = 1;
        int b = a++;
        int c = ++a;
        c++;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
    }
}

Пример 8. Операция инкремента

public class CharDemo {
    public static void main(String[] args) {
        char ch1;

        ch1 = 'X';
        System.out.println("ch1 contains " + ch1);

        ch1++; // increment ch1
        System.out.println("ch1 is now " + ch1);
    }
}

4. Конкатенация строк

Конкатенация (сцепление) — это операция объединения строк. 

  • Если один из операндов типа String, то оператор + используется как конкатенация строк.
  • Если оба операнда являются числами, то оператор + используется в качестве сложения.

Пример 9. Конкатенация строк

public class StringExample {
    public static void main(String[] args) {
        String str1 = "world";
        System.out.println("Hello " + str1);
        System.out.println("First line\n" + "Second line");
    }
}

Пример 10. Конкатенация строк

public class ConcatenationExample{
    public static void main(String[] args) {
        System.out.println("str=" + 4 + 4 * 2);
    }
}

Пример 11. Использование кодировки Unicode в строке

public class Main {
    public static void main(String[] args) {
        // Cлово "Украина" в кодировке Unicode
        System.out.println("\u0423\u043A\u0440\u0430\u0438\u043D\u0430");
    }
}

5. Логические операции

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

Операция     Описание
& Логическая операция И (AND) или конъюнкция
| Логическая операция ИЛИ (OR) или дизъюнкция
^ Логическая операция исключающее ИЛИ (XOR)
! Логическая унарная операция НЕ (NOT)
|| Укороченная логическая операция ИЛИ (short-circuit)
&& Укороченная логическая операция И (short-circuit)
== Равенство
!= Неравенство
&= Логическая операция И с присваиванием
|= Логическая операция ИЛИ с присваиванием
^= Логическая операция исключающее ИЛИ с присваиванием
? : Тернарная условная операция типа если ..., то ..., иначе ...

Результаты выполнения логических операций представлены в следующей таблице:

Результаты выполнения логических операций

Пример 12. Применение логических операций

public class BooleanLogic{
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        boolean c = a | b;
        boolean d = a & b;
        boolean e = a ^ b;
        boolean f = (!a & b) | (a & !b);
        boolean g = !a;
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("a | b = " + c);
        System.out.println("a & b = " + d);
        System.out.println("a ^ b = " + e);
        System.out.println("(!a & b) | (a & !b) = " + f);
        System.out.println("!a = " + g);
    }
}

Пример 12. Применение тернарной операций

public class Main {
    public static void main(String[] args) {
        int i, k;
        i = -10;
        k = i < 0 ? -i : i; // получить абсолютное значение переменной i
        System.out.print("Aбcoлютнoe значение ");
        System.out.println(i + " равно " + k);
    }
}

Источники:

https://dark-barker.blogspot.com/2012/03/bit-operations-java-pitfalls.html



0 comments
Leave your comment: