JavaRush /Java блог /Java Developer /Операції над числами в Java
Автор
Jesse Haniel
Главный архитектор программного обеспечения в Tribunal de Justiça da Paraíba

Операції над числами в Java

Стаття з групи Java Developer
Привіт! Сьогодні ми розглянемо дуже важливу тему, а саме – операції над числами в Java. Числа в програмуванні всюди. Якщо копнути в шкільний курс, можна пригадати, що вся інформація в комп'ютері представлена в числовому форматі – комбінаціями нулів і одиниць – який ще називають двійковим кодом. Операції над числами в Java - 2Операцій над числами в програмуванні існує безліч, тому ми розглянемо найважливіші з них із прикладами :)

Арифметичні операції

Почнемо з найпростішого – з арифметичних операцій. Це відомі всім додавання (знак +), віднімання (-), множення (*) і ділення (/).

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       System.out.println(x+y);
       System.out.println(x-y);
       System.out.println(x*y);
       System.out.println(x/y);
   }
}
Виведення в консоль:
1032 966 32967 30
Усім цим ти вже користувався. До них можна додати операцію % – залишок від ділення.

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 33%2;
       System.out.println(y);
   }
}
Виведення в консоль:
1
У цьому прикладі ми ділимо 33 на 2. У результаті в нас виходить 16 і залишається зайвий "хвіст", який на 2 не ділиться – одиниця. Цей "хвіст" і буде результатом операції "залишок від ділення". У Java (як і в математиці) реалізовані операції порівняння. Вони тобі теж напевно знайомі ще зі школи:
  • дорівнює (==)
  • більше (>)
  • менше (<)
  • більше або дорівнює (>=)
  • менше або дорівнює (<=)
  • не дорівнює (!=)
Тут варто звернути увагу на один важливий момент, у якому багато новачків припускаються помилок. Операція "дорівнює" записується як ==, а не одним знаком =. Одиничний знак = в Java є оператором присвоєння, коли змінній присвоюється число, рядок, або значення іншої змінної. Операції над числами в Java - 3

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x=y);//очікуємо, що в консоль буде виведено false
   }
}
Виведення в консоль:
999
Упс! Це явно не той результат, на який ми розраховували. Це взагалі інший тип даних: ми очікували побачити boolean, а отримали число. Усе тому, що в дужках у нас операція присвоєння, а не порівняння. x=y Значення y (999) було присвоєно змінній x, і після цього ми вивели x в консоль. Правильний варіант:

public class Main {

   public static void main(String[] args) {

       int x = 33;
       int y = 999;
       System.out.println(x==y);
   }
}
Виведення в консоль:
false
Ось тепер ми правильно порівняли 2 числа! :) Ще одна особливість операції присвоювання (=) – її можна здійснювати "по ланцюжку":

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;
       int z = 256;

       x = y = z;
       System.out.println(x);
   }
}
Виведення в консоль:
256
Запам'ятай: присвоювання здійснюється справа наліво. Цей вираз (x = y = z) буде виконаний покроково:
  • y = z , тобто у = 256
  • x = y, тобто x = 256

Унарні операції

Вони називаються "унарними" від слова "uno" – "один". Таку назву вони отримали тому, що на відміну від попередніх, здійснюються над одним числом, а не над кількома. До них належать:
  • Унарний мінус. Він змінює знак числа на протилежний.

    
    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
    
           // змінюємо знак вперше
           x = -x;
           System.out.println(x);
    
           // змінюємо знак вдруге
           x= -x;
           System.out.println(x);
       }
    }
    

    Виведення в консоль:

    -999 999

    Ми використовували унарний мінус двічі. Внаслідок цього наше число стало спочатку від'ємним, а потім знову позитивним!

  • Інкремент (++) і декремент (--)

    Операція ++ збільшує число на одиницю, а операція -- зменшує на цю ж саму одиницю.

    
    public class Main {
    
       public static void main(String[] args) {
    
           int x = 999;
           x++;
           System.out.println(x);
    
           x--;
           System.out.println(x);
       }
    }
    

    Виведення в консоль:

    1000 999
Така форма запису може бути тобі знайома, якщо ти чув про мову С++. За допомогою такої цікавої назви його творці передали свою ідею: "C++ є розширенням мови C". А популярна поліпшена версія "Блокнота" називається Notepad++. Важливий момент. Операції інкременту та декременту бувають двох видів: постфіксними та префіксними. x++ – постфіксний запис ++x – префіксний запис У чому ж полягає принципова різниця, якщо ставити плюси-мінуси перед числом чи після? Побачимо на прикладі:

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
   }
}
Виведення в консоль:
999
Щось не так! Ми хотіли збільшити x на 1 і присвоїти нове значення змінній y. Тобто y має дорівнювати 1000. Але маємо інший результат – 999. Виходить, x не був збільшений, і операція інкременту не спрацювала? Ще й як спрацювала. Щоб у цьому переконатися, спробуй вивести x в консоль наприкінці :)

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = x++;
       System.out.println(y);
       System.out.println(x);
   }
}
Виведення в консоль:
999 1000
Насправді, постфіксна операція тому так і називається: вона виконується після основного виразу. Тобто в нашому випадку int y = x++; спочатку виконується y = x (і змінній y буде присвоєно початкове значення x), а тільки потім x++. Як бути, якщо нас не влаштовує така поведінка? Потрібно використовувати префіксний спосіб запису:

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = ++x;
       System.out.println(y);
   }
}
У цьому випадку спочатку відпрацює ++x і тільки після цього y = x;. Цю різницю варто запам'ятати одразу, щоб не припуститися помилок у реальній програмі, в якій уся поведінка може через це перевернутися з ніг на голову :) Операції над числами в Java - 3

Комбіновані операції

Крім того, в Java існують так звані комбіновані операції. В їхніх межах використовується комбінація з двох операцій:
  • Присвоювання
  • Арифметична операція
Сюди належать операції:
  • +=
  • -=
  • *=
  • /=
  • %=
Розглянемо приклад:

public class Main {

   public static void main(String[] args) {

       int x = 999;
       int y = 33;

       x += y;
       System.out.println(x);
   }
}
Виведення в консоль:
1032
x += y означає x = x + y. Просто для стислості запису використовується два знаки поспіль. Так само це працює з комбінаціями -=, *=, /= і %=.

Логічні операції

Крім операцій над числами, в Java існують також операції над булевими змінними – true і false. Ці операції виконуються за допомогою логічних операторів:
  • ! – оператор "НЕ". Змінює значення булевої змінної на протилежне

    
    public class Main {
    
       public static void main(String[] args) {
    
           boolean x = true;
           System.out.println(!x);
       }
    }
    

    Виведення в консоль:

    false
  • && – оператор "І". Повертає значення true тільки в тому разі, якщо обидва операнди є true.

    
    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 && 100 > 200);
           System.out.println(100 > 50 && 100 >= 100);
       }
    }
    

    Виведення в консоль:

    false
    true

    Результатом першої операції є false, оскільки одна з умов є хибною, а саме 100 > 200. Оператору && для того, щоб повернути true, потрібно, щоб істинними були всі умови (як у другому рядку, наприклад).

  • || – оператор "АБО". Повертає true, коли хоча б один з операндів істинний.

    Тут наш попередній приклад уже відпрацює по-іншому:

    
    public class Main {
    
       public static void main(String[] args) {
    
           System.out.println(100 > 10 || 100 > 200);
       }
    }
    

    Виведення в консоль:

    true

    Вираз 100 > 200, як і раніше, хибний, але оператору "або" цілком достатньо, що перша частина (100 > 10) є істинною.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ