Java надає багато типів операторів, які можна використовувати відповідно до потреб. Вони класифікуються на основі функціональності, яку вони забезпечують. У цій статті ми дізнаємося про оператори Java і вивчимо всі їх типи.
Що таке оператори Java?
Оператори в Java — це символи, які використовуються для виконання певних операцій у Java. Оператори створюють такі завдання, як додавання, множення тощо, які виглядають легко, хоча реалізація цих завдань досить складна.
Типи операторів в Java
У Java існує кілька типів операторів, усі вони згадані нижче:
- Арифметичні оператори
- Унарні оператори
- Оператор присвоєння
- Оператори відношення
- Логічні оператори
- Тернарний оператор
- Порозрядні оператори
- Оператори зсуву
- примірник оператора
1. Арифметичні оператори
Вони використовуються для виконання простих арифметичних операцій над примітивними типами даних.
- * : Множення
- / : Поділ
- %: Модуль
- + : Доповнення
- – : Віднімання
приклад:
Java // Java Program to implement // Arithmetic Operators import java.io.*; // Drive Class class GFG { // Main Function public static void main (String[] args) { // Arithmetic operators int a = 10; int b = 3; 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('a % b = ' + (a % b)); } }> Вихід
a + b = 13 a - b = 7 a * b = 30 a / b = 3 a % b = 1>
2. Унарні оператори
Для унарних операторів потрібен лише один операнд. Вони використовуються для збільшення, зменшення або заперечення значення.
- – : Унарний мінус , що використовується для заперечення значень.
- + : Унарний плюс вказує на додатне значення (проте без цього числа є додатними). Він виконує автоматичне перетворення в int, якщо тип його операнда є байт, char або short. Це називається унарним числовим просуванням.
- ++: Оператор приросту , який використовується для збільшення значення на 1. Існує два різновиди операторів збільшення.
- Постінкремент: Значення спочатку використовується для обчислення результату, а потім збільшується.
- Попереднє збільшення: Спочатку значення збільшується, а потім обчислюється результат.
- – – : оператор зменшення , який використовується для зменшення значення на 1. Існує два різновиди операторів зменшення.
- Постдекремент: Значення спочатку використовується для обчислення результату, а потім зменшується.
- Переддекремент: значення спочатку зменшується, а потім обчислюється результат.
- ! : логічний, а не оператор , що використовується для інвертування логічного значення.
приклад:
Java // Java Program to implement // Unary Operators import java.io.*; // Driver Class class GFG { // main function public static void main(String[] args) { // Interger declared int a = 10; int b = 10; // Using unary operators System.out.println('Postincrement : ' + (a++)); System.out.println('Preincrement : ' + (++a)); System.out.println('Postdecrement : ' + (b--)); System.out.println('Predecrement : ' + (--b)); } }> Вихід
Postincrement : 10 Preincrement : 12 Postdecrement : 10 Predecrement : 8>
3. Оператор присвоєння
'=' Оператор присвоювання використовується для присвоєння значення будь-якій змінній. Він має асоціативність справа наліво, тобто значення, указане в правій частині оператора, присвоюється змінній зліва, і тому значення правої сторони має бути оголошено перед його використанням або має бути константою.
Загальний формат оператора присвоювання:
variable = value;>
У багатьох випадках оператор присвоєння можна комбінувати з іншими операторами, щоб побудувати коротшу версію оператора під назвою a Складене твердження . Наприклад, замість a = a+5, ми можемо написати a += 5.
- += , для додавання лівого операнда до правого, а потім присвоєння його змінній ліворуч.
- -= , для віднімання правого операнда з лівого операнда, а потім присвоєння його змінній ліворуч.
- *= , для множення лівого операнда на правий, а потім присвоєння його змінній ліворуч.
- /= , щоб розділити лівий операнд на правий і потім призначити його змінній ліворуч.
- %= , щоб присвоїти модуль лівого операнда правому операнду, а потім призначити його змінній ліворуч.
приклад:
Java // Java Program to implement // Assignment Operators import java.io.*; // Driver Class class GFG { // Main Function public static void main(String[] args) = 0b1100: ' + (f }> Вихід
f += 3: 10 f -= 2: 8 f *= 4: 32 f /= 3: 10 f %= 2: 0 f &= 0b1010: 0 f |= 0b1100: 12 f ^= 0b1010: 6 f <>= 1: 12 f>>>= 1: 6>>>4. Оператори відношення
Ці оператори використовуються для перевірки таких відношень, як рівність, більше та менше. Вони повертають логічні результати після порівняння та широко використовуються в операторах циклу, а також умовних операторах if-else. Загальний формат такий,
Деякі з операторів відношення:
- ==, дорівнює повертає істину, якщо ліва частина дорівнює правій.
- !=, не дорівнює повертає true, якщо ліва частина не дорівнює правій.
- <, менше ніж: повертає true, якщо ліва частина менша за праву.
- <=, менше або дорівнює повертає істину, якщо ліва частина менша або дорівнює правій частині.
- >, Більше ніж: повертає true, якщо ліва частина більша за праву.
- >=, більше або дорівнює повертає true, якщо ліва частина більша або дорівнює правій частині.
приклад:
java arraylist відсортованийJava// Java Program to implement // Relational Operators import java.io.*; // Driver Class class GFG { // main function public static void main(String[] args) { // Comparison operators int a = 10; int b = 3; int c = 5; System.out.println('a>b: ' + (a> b)); System.out.println('a + (a< b)); System.out.println('a>= b: ' + (a>= b)); System.out.println('a<= b: ' + (a <= b)); System.out.println('a == c: ' + (a == c)); System.out.println('a != c: ' + (a != c)); } }>
Вихідa>b: вірно a = b: вірно a<= b: false a == c: false a != c: true>5. Логічні оператори
Ці оператори використовуються для виконання операцій логічного І та логічного АБО, тобто функції, схожої на ворота І та АБО в цифровій електроніці. Слід пам’ятати, що друга умова не оцінюється, якщо перша невірна, тобто має ефект короткого замикання. Широко використовується для перевірки кількох умов для прийняття рішення. Java також має логічне НІ, яке повертає істину, коли умова хибна, і навпаки
Умовні оператори:
- &&, логічне І: повертає true, якщо обидві умови виконуються.
- ||, логічне АБО: повертає true, якщо принаймні одна умова виконується.
- !, логічно НІ: повертає істину, якщо умова хибна, і навпаки
приклад:
Java// Java Program to implemenet // Logical operators import java.io.*; // Driver Class class GFG { // Main Function public static void main (String[] args) }>
Вихідx && y: false x || y: true !x: false>6. Тернарний оператор
Тернарний оператор є скороченою версією оператора if-else. Він має три операнди, і тому назва Тернарний.
Загальний формат:
condition ? if true : if false>Наведений вище оператор означає, що якщо умова оцінюється як істинна, тоді виконуються оператори після «?», інакше виконуються оператори після «:».
приклад:
різниця в датах ExcelJava// Java program to illustrate // max of three numbers using // ternary operator. public class operators { public static void main(String[] args) { int a = 20, b = 10, c = 30, result; // result holds max of three // numbers result = ((a>б) ? (a> c) ? a : c : (b> c) ? b : c); System.out.println('Максимум із трьох чисел = ' + результат); } }>
ВихідMax of three numbers = 30>7. Порозрядні оператори
Ці оператори використовуються для виконання маніпуляцій з окремими бітами числа. Їх можна використовувати з будь-яким цілим типом. Вони використовуються під час виконання операцій оновлення та запитів бінарних індексованих дерев.
Java
- &, порозрядний оператор І: повертає біт за бітом І вхідних значень.
- |, порозрядний оператор АБО: повертає побітово АБО вхідних значень.
- ^, побітовий оператор XOR: повертає побітове XOR вхідних значень.
- ~, Оператор побітового доповнення: Це унарний оператор, який повертає доповнене до одиниці представлення вхідного значення, тобто з усіма бітами інвертованими.
// Java Program to implement // bitwise operators import java.io.*; // Driver class class GFG { // main function public static void main(String[] args) // Bitwise operators int d = 0b1010; int e = 0b1100; System.out.println('d & e: ' + (d & e)); System.out.println('d }>
Вихідd & e: 8 d | e: 14 d ^ e: 6 ~d: -11 d <>1: 6 і>>> 1: 6>>>8. Оператори зсуву
Ці оператори використовуються для зсуву бітів числа вліво або вправо, тим самим множачи або ділячи число на два відповідно. Їх можна використовувати, коли нам потрібно помножити або поділити число на два. Загальний формат -
<<, оператор зсуву вліво: зсуває біти числа ліворуч і заповнює пустоти, що залишилися, 0. Подібний ефект, як множення числа на деякий ступінь двійки. >>, оператор правого зсуву зі знаком: зсуває біти числа праворуч і в результаті заповнює пусті місця 0 ліворуч. Крайній лівий біт залежить від знака початкового числа. Ефект, подібний до ділення числа з певним ступенем двійки. >>>, беззнаковий оператор правого зсуву: зсуває біти числа праворуч і в результаті заповнює пусті місця 0 ліворуч. Крайній лівий біт встановлено на 0. Java// Java Program to implement // shift operators import java.io.*; // Driver Class class GFG { // main function public static void main(String[] args) { int a = 10; // using left shift System.out.println('a<<1 : ' + (a << 1)); // using right shift System.out.println('a>>1 : ' + (a>> 1)); } }>
Вихідa<<1 : 20 a>>1 : 5>>9. оператор instanceof
Екземпляр оператора використовується для перевірки типу. Його можна використовувати, щоб перевірити, чи є об’єкт екземпляром класу, підкласу чи інтерфейсу. Загальний формат -
object instance of class/subclass/interface>Java// Java program to illustrate // instance of operator class operators { public static void main(String[] args) { Person obj1 = new Person(); Person obj2 = new Boy(); // As obj is of type person, it is not an // instance of Boy or interface System.out.println('obj1 instanceof Person: ' + (obj1 instanceof Person)); System.out.println('obj1 instanceof Boy: ' + (obj1 instanceof Boy)); System.out.println('obj1 instanceof MyInterface: ' + (obj1 instanceof MyInterface)); // Since obj2 is of type boy, // whose parent class is person // and it implements the interface Myinterface // it is instance of all of these classes System.out.println('obj2 instanceof Person: ' + (obj2 instanceof Person)); System.out.println('obj2 instanceof Boy: ' + (obj2 instanceof Boy)); System.out.println('obj2 instanceof MyInterface: ' + (obj2 instanceof MyInterface)); } } class Person { } class Boy extends Person implements MyInterface { } interface MyInterface { }>
Вихідobj1 instanceof Person: true obj1 instanceof Boy: false obj1 instanceof MyInterface: false obj2 instanceof Person: true obj2 instanceof Boy: true obj2 instanceof MyInterface: true>Пріоритет і асоціативність операторів Java
Пріоритет і асоціативні правила використовуються при роботі з гібридними рівняннями, що включають кілька типів операторів. У таких випадках ці правила визначають, яку частину рівняння розглядати першою, оскільки для одного рівняння може бути багато різних оцінок. У наведеній нижче таблиці показано пріоритетність операторів у порядку зменшення величини, причому верхня частина відповідає найвищому пріоритету, а нижня — найнижчому.
Цікаві запитання про оператори Java
1. Пріоритет і асоціативність:
Часто виникає плутанина, коли йдеться про гібридні рівняння, тобто рівняння з декількома операторами. Проблема в тому, яку частину вирішити першою. У таких ситуаціях слід дотримуватися золотого правила. Якщо оператори мають різний пріоритет, спочатку вирішіть вищий пріоритет. Якщо вони мають однаковий пріоритет, вирішуйте відповідно до асоціативності, тобто або справа наліво, або зліва направо. Пояснення наведеної нижче програми добре написано в коментарях у самій програмі.
Javapublic class operators { public static void main(String[] args) { int a = 20, b = 10, c = 0, d = 20, e = 40, f = 30; // precedence rules for arithmetic operators. // (* = / = %)>(+ = -) // друкує a+(b/d) System.out.println('a+b/d = ' + (a + b / d)); // якщо однаковий пріоритет, то дотримуються асоціативних // правил. // e/f -> b*d -> a+(b*d) -> a+(b*d)-(e/f) System.out.println('a+b*d-e/f = ' + (a + b * d - e / f)); } }>
Вихідa+b/d = 20 a+b*d-e/f = 219>2. Бути компілятором:
Компілятор у наших системах використовує інструмент lex, щоб знайти найбільший збіг під час генерації токенів. Це створює певну проблему, якщо не помітити. Для прикладу розглянемо твердження a=b+++c ; може здатися, що занадто багато читачів створюють помилку компілятора. Але це твердження є абсолютно правильним, оскільки лексема, створена lex, є a, =, b, ++, +, c. Таким чином, цей оператор має подібний ефект: спочатку присвоює b+c a, а потім збільшує b. Аналогічно, a=b+++++c; спричинить помилку, оскільки згенеровані маркери є a, =, b, ++, ++, +, c. що насправді є помилкою, оскільки після другого унарного операнда немає операнда.
Javapublic class operators { public static void main(String[] args) { int a = 20, b = 10, c = 0; // a=b+++c is compiled as // b++ +c // a=b+c then b=b+1 a = b++ + c; System.out.println('Value of a(b+c), ' + ' b(b+1), c = ' + a + ', ' + b + ', ' + c); // a=b+++++c is compiled as // b++ ++ +c // which gives error. // a=b+++++c; // System.out.println(b+++++c); } }>
ВихідValue of a(b+c), b(b+1), c = 10, 11, 0>3. Використання + над ():
При використанні оператора + всередині system.out.println() обов’язково додавайте за допомогою дужок. Якщо ми пишемо щось перед додаванням, тоді відбувається додавання рядків, тобто асоціативність додавання відбувається зліва направо, і, отже, цілі числа додаються до рядка, спочатку створюючи рядок, а об’єкти рядка об’єднуються при використанні +. Тому це може призвести до небажаних результатів.
Javapublic class operators { public static void main(String[] args) { int x = 5, y = 8; // concatenates x and y as // first x is added to 'concatenation (x+y) = ' // producing 'concatenation (x+y) = 5' // and then 8 is further concatenated. System.out.println('Concatenation (x+y)= ' + x + y); // addition of x and y System.out.println('Addition (x+y) = ' + (x + y)); } }>
ВихідConcatenation (x+y)= 58 Addition (x+y) = 13>Переваги операторів в Java
Нижче наведено переваги використання операторів у Java:
- Виразність : Оператори в Java забезпечують стислий і зрозумілий спосіб виконання складних обчислень і логічних операцій.
- Економія часу: Оператори в Java економлять час, зменшуючи кількість коду, необхідного для виконання певних завдань.
- Покращена продуктивність : Використання операторів може покращити продуктивність, оскільки вони часто реалізуються на апаратному рівні, що робить їх швидшими, ніж еквівалентний код Java.
Недоліки операторів в Java
Нижче наведено недоліки операторів у Java:
- Пріоритет оператора: Оператори в Java мають визначений пріоритет, який може призвести до неочікуваних результатів, якщо їх не використовувати належним чином.
- Тип Примус : Java виконує неявні перетворення типів під час використання операторів, що може призвести до неочікуваних результатів або помилок, якщо вони не використовуються належним чином.
Поширені запитання щодо операторів Java
1. Що таке оператори в Java на прикладі?
Оператори - це спеціальні символи, які використовуються для виконання певних операцій. Наприклад, «+» використовується для додавання, де 5+4 повертає значення 9.
