Оператори в Java

текст перекладу

У цій статті я спробую коротко описати основні поняття Java, якщо розглядати Java як фабрику, де працівники і інструменти взаємодіють для створення програмного забезпечення. Сподіваюся, це буде корисно.

Чи достатньо? Ні.

Але на даному етапі давайте вивчимо це і розвиваймося далі.

1. Змінні та Константи (Variables and Constants)

Опис:

  • Змінні (Variables): Це області пам'яті, значення яких може змінюватися під час виконання програми. Наприклад, ім'я офіціанта в ресторані є змінною. Для кожного офіціанта потрібно використовувати різні імена.
  • Константи (Constants): Це області пам'яті, значення яких не змінюється протягом виконання програми. Вони визначаються за допомогою ключового слова final. Наприклад, рік заснування ресторану чи ім'я засновника ресторану є константами.

Приклад коду:

int number = 23; // Змінна  
final double PI = 3.14159; // Константа

2. Математичні Оператори (Mathematical Operators)

Опис: Java надає стандартні оператори для виконання базових математичних операцій: додавання (+), віднімання (-), множення (*) та ділення (/).

Приклад коду:

int result = 0;  
int num1 = 11;  
int num2 = 2;  

// Додавання  
result = num1 + num2; // result = 13  
// Віднімання  
result = num1 - num2; // result = 9  
// Множення  
result = num1 * num2; // result = 22  
// Ділення  
result = num1 / num2; // result = 5 (залишок відкидається)

3. Скорочені Оператори (Shorthand Operators)

Опис: Скорочені оператори використовуються для оновлення значень змінних і допомагають зробити код більш компактним і зрозумілим. Наприклад, +=, -=, *=, /= тощо.

Приклад коду:

int result = 13;  

// Збільшення  
result += 1; // result = 14  
// Інкремент  
result++; // result = 15  
// Зменшення  
result -= 2; // result = 13  
// Множення  
result *= 2; // result = 26  
// Ділення  
result /= 2; // result = 13

4. Пріоритет Операторів (Operator Precedence)

Пріоритет операторів визначає порядок, в якому будуть обчислюватися операції в математичних виразах. У Java пріоритет операторів зазвичай такий, як у математиці, з найбільшим пріоритетом для круглих дужок. Це просте, але важливе правило.

Пріоритет операторів:

  1. Вирази в дужках ()
  2. Оператори інкременту та декременту ++, --
  3. Оператори множення та ділення *, /
  4. Оператори додавання та віднімання +, -

Приклад коду:

int result = 30 - 6 * 4 / 3 + 7;  

// Порядок операцій: 6*4=24, 24/3=8, 30-8=22, 22+7=39  
// result = 29  

// Зміна пріоритету через дужки  
result = (30 - 6) * 4 / (3 - 1) + 4;  
// Порядок операцій: 30-6 = 24 , 3 - 1 = 2  
// 24 * 4 / 2 = 48 + 4   
// result = 52

5. Тип Даних Boolean і Вирази (Boolean Data Type and Expressions)

Опис: Тип даних Boolean може мати лише два значення: true (правда) або false (неправда). Використовується в умовних конструкціях (if, else). Це насправді 1 біт інформації: або 1, або 0. Можна сказати, що ми програмуємо комп'ютер за допомогою мови boolean... Здається це жарт, але насправді це не так, це чиста математика.

Приклад коду:

boolean isLong;  
int length = 15;  

isLong = length > 10; // true  
boolean isSmall;  
int size = 5;  
int maxSize = 10;  
isSmall = size <= maxSize; // true

6. Оператори Порівняння (Relational Operators)

Опис: Оператори порівняння використовуються для порівняння двох значень і повертають результат у вигляді булевого значення.

текст перекладу

У Java використовуються операції порівняння:

  • == : Рівно
  • != : Не рівно
  • < : Менше
  • <= : Менше або рівно
  • > : Більше
  • >= : Більше або рівно

Приклад коду:

int i = 1;  

boolean check1 = (i == 1); // true  
boolean check2 = (i != 1); // false  
boolean check3 = (i < 2); // true  
boolean check4 = (i <= 1); // true  
boolean check5 = (i > 0); // true  
boolean check6 = (i >= 1); // true

7. Клас String і Методи (String Class and Methods)

Опис: У Java для представлення текстових даних використовується клас String. Клас String має різноманітні методи:

  • equals(): Порівнює два рядки.
  • equalsIgnoreCase(): Порівнює два рядки без урахування регістру.
  • concat(): Об’єднує два рядки.
  • length(): Повертає довжину рядка.
  • trim(): Видаляє пробіли з початку та кінця рядка.
  • toLowerCase(): Перетворює рядок на малі літери.
  • indexOf(): Знаходить позицію певного символу або рядка.

Приклад коду:

String name1 = "Kadriye"; //Привіт, Кадріє!  
String name2 = "kadriye";  
boolean sameName1 = name1.equals(name2); // false  
boolean sameName2 = name1.equalsIgnoreCase(name2); // true  
String greet1 = "Selamın";  
String greet2 = "Aleyküm";  
String message1 = greet1.concat(greet2); // "SelamınAleyküm"   
// Переклад на ургупе  
String message2 = greet1 + " " + greet2 + "!"; // "Selamın Aleyküm!"  
String hello = "Nöö rüyon";  
int stringLength = hello.length(); // 9  
String trimmed = " Nöö ".trim(); // "Nöö"  
String lc = "Nö" + "rüyon".toLowerCase(); // "Nöörüyon"  
String lc2 = ("Nöö" + "rüyon").toLowerCase(); // "nöörüyon"  
int index = hello.indexOf('o'); // 7. У цьому рядку перший пробіл має індекс 0, тому 'o' знаходиться на 7-ій позиції.

8. Конкатенація рядків (String Concatenation)

Опис: Для об’єднання рядків використовується оператор +. У Java оператор + при використанні з числами може створювати плутанину, тому важливо використовувати дужки для уточнення пріоритету операцій.

Приклад коду:

String name = "Boran";  
int num = 3;  
// Коректне об’єднання:  
String message = name + " wrote " + num + " Java programs.";   
// "Boran wrote 3 Java programs."  

// Некоректне об’єднання:  
String wrongMessage = name + " wrote " + 2 + 1 + " Java programs.";   
// "Boran wrote 21 Java programs." 2 і 1 сприймаються як символи  

// Коректне об’єднання з використанням дужок:  
String correctMessage = name + " wrote " + (2 + 1) + " Java programs.";   
// "Boran wrote 3 Java programs."

9. Класи та Об’єкти (Classes and Objects)

Опис: У Java класи (classes) описують властивості (properties) та поведінку (methods) об’єктів (objects). Властивості класу зазвичай визначаються як змінні, а методи класу визначають його поведінку.

Приклад коду:

package package.name;  

// Описуємо клас одягу  
public class Kiyafet {  
 String description; // Властивість опису одягу  
 double price; // Без значення за замовчуванням для цієї властивості  
 String size = "M"; // Значення за замовчуванням для цього поля  

 // Конструктор  
 public Kiyafet() {  
 // Тут можна додати значення за замовчуванням  
 }  

 // Можна додавати інші методи  
 // Наприклад, метод для примірки одягу
}  

// Клас ShopApp.java  
package package.name;  

public class ShopApp {  
 public static void main(String[] args) {  
 double tax = 0.2;  
 double total;  
 // Створюємо об’єкти одягу

текст перекладу

У цьому прикладі ми використовуємо клас `Kiyafet`  
// чи метод "одяг" на ваш погляд?  
Kiyafet item1 = new Kiyafet();  
Kiyafet item2 = new Kiyafet();  
// Налаштування властивостей першого товару. Спочатку створюємо об'єкт item1.  
item1.description = "Синя куртка";  
item1.price = 2499.9;  
item1.size = "M";  
// Тепер налаштовуємо властивості для товару item2  
item2.description = "Жовтий блейзер";  
item2.price = 7999.99;  
item2.size = "S";  

// Виведення деталей товарів, не забуваємо про формат "дані + текст".  

System.out.println(item1.description + ","   
+ item1.price + "," + item1.size);  
// Які, на вашу думку, правила тут?  
System.out.println(item2.description + ","   
+ item2.price + "," + item2.size);  

// Розрахунок загальної вартості  

// Клієнт купив 2 блейзери та 1 куртку  
total = (2 * item2.price) + (1 * item1.price); // Загальна вартість  
total += total * tax; // Додавання податку  
// Виведення підсумкової суми  
System.out.println("Загальна сума: " + total); // виводить підсумкову суму  
}  
}

10. Правила іменування змінних (Variable Naming Rules)

Опис: В Java імена змінних можуть містити літери, цифри, символи _ та $, але не можуть починатися з цифри. Крім того, імена є чутливими до регістру (case-sensitive).

Приклад коду:

int myVariable = 10;  
double _price = 1999.99;  
String $name = "Birand";  
// int 1stPlace = 1;   
// Невірно — не можна починати з цифри.

11. Оператори збільшення та зменшення (Increment and Decrement Operators)

Опис: Використовуються для збільшення або зменшення значення змінної на 1. Оператори ++ — для збільшення, -- — для зменшення.

Приклад коду:

int x = 5;  
x++; // x = 6  
x--; // x = 5

12. Помилка ділення на нуль (Division by Zero Exception)

Опис: В Java ділення на нуль викликає помилку ArithmeticException. Тому потрібно робити перевірку перед діленням.

Приклад коду:

int a = 10;  
int b = 0;  
try {  
 int c = a / b;  
} catch (ArithmeticException e) {  
 System.out.println("Ділення на нуль неможливе.");  
}

13. Порівняння рядків в Java (String Comparison in Java)

Опис: Для порівняння об'єктів (наприклад, рядків) замість оператора == слід використовувати методи equals() або equalsIgnoreCase(). Оператор == порівнює посилання, а equals() — вміст.

Приклад коду:

String str1 = "Selam";  
String str2 = "Selam";  
boolean areEqual = str1.equals(str2); // true  
boolean areEqualIgnoreCase = str1.equalsIgnoreCase(str2); // true

14. Користувацькі класи та об'єкти (User-Defined Classes and Objects)

Користувацькі класи дозволяють визначати об'єкти, що відповідають специфічним вимогам. Клас містить властивості (properties) і методи (methods). Це не обов'язкове правило. У необхідних випадках властивість або метод може бути додано до підкласу. Але метод, визначений у класі, можна використовувати і в підкласах. Це дозволяє робити різні операції.

Приклад коду:

public class Car {  
 String model;  
 double price;  
 int year;  
 // Метод  
 public void startEngine() {  
 System.out.println("Двигун запущено.");  
 }  
}  

public class Main {  
 public static void main(String[] args) {  
 Car myCar = new Car();  
 myCar.model = "BMW 5";  
 myCar.price = 7999999.99;  
 myCar.year = 2025;  
 myCar.startEngine(); // створено об'єкт автомобіля, після чого запущено двигун  
 }  
}

15. Умовні вирази та блоки if (Conditional Statements and If Blocks)

Опис: Дозволяють виконувати різні блоки коду залежно від певних умов. Використовуються конструкції if, else if, else.

Приклад коду:

int age = 19;  

if (age >= 18) {  
 System.out.println("Ви дорослий.");  
} else {  
 System.out.println("Ви ще не досягли повноліття.");  
}

текст перекладу

Коментарі в коді (Comments)

**Опис:** Використовуються для того, щоб додавати нотатки або пояснення в код. Коментарі ігноруються компілятором.

**Приклад коду:**

// Це однорядковий коментар

// Я використав багаторядкові коментарі вище, помітили? Ось приклад на самому низу
// 🙂
```

17. Написання та виконання коду Java (Writing and Running Java Code)

Опис: Код Java пишеться та компілюється за допомогою IDE (наприклад, NetBeans). Класи організовуються в пакети.

Приклад коду:

 // Оголошення пакету та класу  
 package paket.adi;  

 public class Example {  
     public static void main(String[] args) {  
         System.out.println("Java код працює!");  
     }  
 }

18. Обробка виключень — Помилка ділення на нуль (Division by Zero Exception)

Опис: В Java ділення на нуль викликає помилку ArithmeticException. Перед діленням необхідно виконати перевірку.

Приклад коду:

int a = 1;  
int b = 0;  
try {  
    int c = a / b;  
} catch (ArithmeticException e) {  
    System.out.println("Ділення на нуль неможливе.");  
}

19. Правила іменування змінних (Variable Naming Rules)

Опис: В Java імена змінних можуть містити літери, цифри, символи _ і $, але не можуть починатися з цифри. Також вони чутливі до регістру (case-sensitive).

Приклад коду:

int myVariable = 100;  
double _price = 199.99;  
String $name = "Boran";  
// int 1incisira = 1;   
// Коментар показує, що це оголошення (1incisira) є недійсним,   
// бо змінна не може починатися з цифри.

Відповіді на запитання:

 // *  
 public class ShopApp {  
     public static void main(String[] args) {  
         double tax = 0.2;  
         double total;  
         // Що ми використовуємо: клас `Kiyafet` чи метод "одяг"?  
         // Відповідь: обидва — лівий item1 є класом, а правий () є конструкторами :)   
         Kiyafet item1 = new Kiyafet();  
         // на мою думку, лівий — це клас, а правий — це метод
 //**  

Правила та найкращі практики:  

 /* Розділення після оператора: Найпоширеніший та рекомендований метод — розділяти рядок після оператора.  
 Це особливо стосується таких операторів:  

Аритметичні оператори (+, -, *, /, %)  
Оператор конкатенації (+) (особливо для злиття рядків)  
Оператори присвоєння (=, +=, -=, *=, /=, %=)  
Логічні оператори (&&, ||)  
Оператор умов (? :)  
Наприклад: */  


int uzunToplam = sayi1 + sayi2 + sayi3   
 + sayi4 + sayi5;  

String uzunMesaj = "Це дуже довге повідомлення "  
 + "і воно повинно бути розподілене на кілька рядків.";  
/* Розподілення після оператора крапки (.): Коли використовується ланцюжок методів (method chaining),  
розподіл рядка після крапки підвищує зручність читання: */  


String sonuc = myString.trim()  
 .toUpperCase()  
 .substring(0, 5);  
/* Розподілення після коми (,): Якщо параметри методів або оголошення змінних надто довгі,  
можна розділяти рядки після коми: */  


public void cokUzunMetot(int parametre1,  
 int parametre2,  
 String parametre3,  
 double parametre4) {  
}  

int x,  
 y,  
 z;  

/* Розподілення перед або після дужок ((, [, {): Якщо вирази в дужках дуже довгі,  
можна розділяти рядки перед або після дужок. Це часто зустрічається в складних умовах або визначеннях масивів:*/   



if ((kosul1 && kosul2) ||  
 (kosul3 && kosul4)) {  
 // ...  
}  

int[] sayilar = {1, 2, 3,  
 4, 5, 6};
  • == vs .equals()

В Java клас Integer кешує цілі числа в діапазоні від -128 до 127. Це означає, що для чисел у цьому діапазоні використовується та сама пам'ятна адреса.

Як я зрозумів, коли ми зберігаємо два числа 128, Java зберігає їх за різними адресами.
текст перекладу

Тому оператор == порівнює два різні місця в пам'яті і повертає false.

Беручи до уваги цю інформацію, при використанні операторів варто намагатися використовувати методи з бібліотек.

Не кажіть, що це додаткове навантаження, оскільки неправильно працююча програма може завдати більше шкоди, ніж та, що взагалі не працює 🙂

Deepseek пояснив це таким чином. Я також додаю це разом з результатами своїх власних спроб коду.

Оператор == порівнює посилання. Тобто, він перевіряє, чи вказують дві змінні на ту саму пам'ятну адресу. Це буде помітно, коли ми створюємо ціле число.

pic

Метод .equals() порівнює значення. Він перевіряє, чи однакові значення, що містяться в двох об'єктах.

pic

Перекладено з: Java’da operatörler

Leave a Reply

Your email address will not be published. Required fields are marked *