Коментарі Для того, щоб в тексті програми було легше розібратися іншому програмісту або, навіть, згадати, що до чого через значний проміжок часу, під час створення програми корисно в текст вставляти коментарі. Вони не беруться до уваги компілятором, тож на об'єм скомпільованої програми не впливають і їх можна вставляти будь-де. В Java існує три типи коментарів:

однорядкові з застосуванням двох похилих рисок (//). Все що йде в рядку після них вважається коментарем. // це коментар System.out.println("Вивчаємо коментарі"); // виводимо на екран

багаторядкові — текст можна вказувати в кілька рядків, також зручно, якщо потрібно усунути кілька рядків тексту під час зневадження програми. Для відкриття коментаря використовується /*, а для закриття */. Все що між ними вважається коментарем. Вкладення багаторядкового коментаря в інший багаторядковий коментар не дозволяється. /* Це багаторядковий коментар System.out.println("Це не буде виведено на екрані"); System.out.println("І це також не буде виведено на екрані"); */ System.out.println("А це буде виведено");

для автоматичної генерації документації — розпочинаються символами /** і закінчуються */. Використовуються для додавання додаткової інформації про класи та методи, їх призначення, параметри. На основі даної інформації можна згенерувати документацію по розроблених вами класах та їх методах. Дана документація буде подібною до офіційної документації по класах Java.

Типи даних Java — строго типізована мова. Тобто, на відміну від, наприклад, PHP в Java потрібно вказувати тип змінної при її оголошенні. В Java є вісім основних (примітивних) типів даних. П'ять із них — цілочисельні (включаючи символьний тип char), два — дійсні (float, double) і один логічний (булевий) тип даних.

Тип Довжина (в байтах) Діапазон або набір значень boolean не визначено true, false byte 1 −128..127 char 2 0..216−1, або 0..65535 short 2 −215..215−1, або −32768..32767 int 4 −231..231−1, або −2147483648..2147483647 long 8 −263..263−1, або приблизно −9.2·1018..9.2·1018 float 4 -(2-2−23)·2127..(2-2−23)·2127, або приблизно −3.4·1038..3.4·1038, а також , , NaN double 8 -(2-2−52)·21023..(2-2−52)·21023, або приблизно −1.8·10308..1.8·10308, а також , , NaN

Змінні Оголошення змінних розпочинаються з обов'язкового вказання типу даних, після чого йде назва змінної. Оголошення змінної завершується крапкою з комою, оскільки оголошення в Java вважається інструкцією. int k; double salary; char ourChar;

Назва змінної повинна починатися з букви, далі може бути необмежена кількість цифр та букв. Причому, оскільки в Java використовується Unicode, то змінні можуть бути написані навіть кирилицею, проте в такому разі ваша програма буде важко читабельною для іноземців. В мові враховується регістр символів. Тому K та k — це різні змінні. Не можна використовувати як назви зарезервовані слова. В одному рядку можна оголошувати декілька змінних, проте в такому разі утруднюється читання тексту програми:

int k,i, num;

Ініціалізацію змінної можна здійснити як при оголошенні так і в подальшому в програмі: int i; int j=1; char key;

/* решту ініціалізуємо будь-де в програмі, бажано ініціалізувати, якомога ближче до місця використання змінної */ key='Y'; i=0;

Вибір назви змінної залежить від програміста, проте є кілька рекомендацій, щодо імен. Зокрема, бажано давати змістовні імена. Так, наприклад, якщо ми хочемо позначити кількість студентів, замість s чи ks, краще використати numStudents. Це доволі зручно, коли програма велика і програміст застосовує багато змінних. Змістовні імена таким чином, полегшують роботу з текстом програми як власне творцю програми, так і іншим людям. Саме таке найменування рекомендує Sun (детальніше про рекомендовану систему найменувань: Code Conventions for the Java Programming Language: Naming Conventions). Інколи, деякі програмісти ще вказують тип змінної iNumStudents — змінна типу int, cKey — змінна типу char і т.д., (так звана :w:Угорська нотація, була популярна у Microsoft у минулому столітті). Недоліком такого запису є те, що при приведенні змінної до іншого типу, назва може не відповідати змісту.

В Java 10 можна оголошувати локальну змінну із вказанням типу var (local variable), що можна використовувати, коли із присвоюваного явно відомо тип змінної. var num=10; var str="Your string"; Однією з переваг var є те, що це дозволяє дещо скоротити запис при використанні довгих назв типів об'єктних змінних (див. розділи про класи та об'єкти). var не рекомендується використовувати, коли із рядка коду не очевидно явно тип даних змінної, якій присвоюється значення.

Оператори Оператор (англ. operator) - це спеціальний символ, який повідомляє транслятору про те, що ви хочете виконати операцію з деякими операндами (наприклад, +,-,%, <<). Зазвичай, мови програмування визначають набір опера́торів, подібних до операторів в математиці. В певному сенсі, оператори є спеціальними функціями. Окрім арифметичних дій, оператори в мовах програмування можуть виконувати операції на логічних значеннях, операції з рядками. Оператори порівняння можуть використовуватись для перевірки рівності двох значень. На відміну від функцій, оператори є базовими діями мови програмування, їх назва коротша, та, як правило, складається із спеціальних символів.

Оператори виконують відповідні операції над операндами (наприклад, додавання). Деякі оператори вимагають одного операнда, їх називають унарними. Одні знаки операції ставляться перед операндами і називаються префіксними, інші – після, тоді вони називаються постфіксними. Більшість же операторів ставляться між двома операндами, такі оператори називаються інфіксними бінарними операторами.

Java надає багате операторами середовище. Більшість операторів можна поділити на 4 групи: арифметичні, розрядні(бітові), відношення, логічні(булеві). Інколи окремо виділяють ще оператори присвоєння, представники якої є у всіх інших групах. Також Джава визначає деякі додаткові оператори, які застосовуються в певних специфічних ситуаціях, наприклад instanceof (перевіряє приналежність об'єкта до певного класу). Існує тернарний оператор, що працює з трьома операндами (?:).

Слід зауважити щодо термінології. У літературі, що можна знайти у нашій країні, операторами інколи називають окремі види інструкцій (англ statement, досл. твердження, вираз), як то цикли та умовні інструкції, а то й просто функції. Саме слово operator відповідно заміняють словом операція. Часто різнобій в перекладах зустрічається в різних частинах однієї книги, що пов'язано з низькою якістю перекладів ряду книг, різнобоєм в англо-українських та англо-російських словниках, різноманітністю термінології в різних мовах програмування та неоднозначністю перекладу з англійської. В даній книзі дотримуватиметься термінологія, яка також зустрічається в нашій перекладній літературі, однозначніша і наближена до англомовного оригіналу термінології мови Java, тобто: operator —- оператор, statement —- інструкція.

Арифметичні оператори Арифметичні оператори використовуються в математичних виразах так само як і в алгебрі і представлені в таблиці. Оператор Операція Оператор Операція + Додавання += Додавання з присвоєнням - Віднімання (а також унарний мінус) -= Віднімання з присвоєнням * Множення * = Множення з присвоєнням / Ділення /= Ділення з присвоєнням % Залишок ділення по модулю %= Залишок ділення по модулю з присвоєнням ++ Інкремент (збільшення на 1) -- Декремент (зменшення на 1) Оператор мінус крім віднімання дозволяє поміняти знак операнда (з додатнього на від’ємний і навпаки). Коли операція ділення застосовується для цілочислових операндів, то дробова частина результату відкидається.

В наступній програмі подана робота з основними арифметичними операторами. public class MathOp { public static void main(String args[]) { int k; int a = 25; int b = 15;

k = a + b; System.out.println("Сума: а + b = " + k); System.out.println("Добуток: a * b = " + a * b); System.out.println("Результат ділення цілочисельних: а / b = " + a / b); //дробова частина відкидається System.out.println("Залишок по модулю: a % b = " + a % b);

Операнди арифметичних операторів повинні бути чисельних типів. Ви не можете використовувати їх для операндів булевого типу. Проте їх можна застосовувати з типом char, оскільки тип char по суті є підмножиною типу int.

Інкремент та декремент

Серед арифметичних операторів необхідно виділити оператори інкременту(збільшення на 1) і декременту (зменшення на 1). Доволі часто доводиться збільшувати певне значення змінної на одиницю. Вираз на зразок х=х+1 можна записати за допомогою оператора інкременту х++. Аналогічно із зменшенням на одиницю х--.

Дані оператори можуть бути як префіксними та і постфіксними. І тут потрібно бути уважним при їхньому використанні. Так, наприклад маємо: int x = 50; у = х++; В результаті у = 50, а не 51, як можна б було подумати. Суть в тому, що спочатку відбувається присвоєння у значення х, а згодом х буде збільшене на 1. Щоб значення змінної було еквівалентне інструкціям: х = х + 1; y = x; необхідно записати вираз так: y = ++x; Аналогічно і з декрементом.

Порозрядні оператори Java визначає ряд порозрядних (побітових) операторів, що можуть застосовуватися до цілочисельних типів, long, int, short, char та byte. Ці оператори виконують дії над окремими розрядами(бітами) їхніх операндів. Наступна таблиця наводить список даних операторів:

Оператор Опис Оператор Опис ~ Порозрядне одномістне НІ (NOT) & Порозрядне І (AND) | Порозрядне АБО (OR) ^ Порозрядне виняткове АБО (ХOR) >> Зсув вправо >>> Зсув вправо із заповненням нулями << Зсув вліво &= Порозрядне І (AND) з присвоєнням |= Порозрядне АБО (OR) з присвоєнням ^= Порозрядне виняткове АБО (XOR) з присвоєнням >>= Зсув вправо з присвоєнням >>>= Зсув вправо з заповненням нулями і присвоєнням

+ Представлення чисел Десяткове Двійкове Шістнадцяткове0 000001 000112 001023 001134 010045 010156 011067 011178 100089 1001910 1010A11 1011B12 1100C13 1101D14 1110E15 1111F Розуміння роботи порозрядних операцій тісно пов’язане з двійковим представлення чисел у комп’ютері. Більш того двійковий формат є основою цифрової техніки. Тому розуміння двійкової системи числення і порозрядних операцій доволі необхідне програмістам. Маніпулювання з розрядами доволі часто необхідне при роботі з зображеннями та апаратним обладнанням.

Насамперед, розглянемо як представляються звичайні десяткові числа у двійковому форматі. Принцип представлення такий же як десятковий, лише з тією різницею, що замість 10 цифр (0-9) у двійковій системі є лише дві (0 та 1). Так, наприклад, число 53 буде мати вигляд 00110101. Число представляється через позиції одиничок. Щоб перевести двійкове число у десяткову систему, достатньо двійку піднести до степеня позиції одиниці починаючи з 0. Тобто для 00110101 маємо 2^0+2^2+ 2^4+ 2^5= 1+4+16+32=53. Також можна здійснити обернене переведення шляхом ділення на 2. Взагалі це доволі значна тема. Операціям в двійковій системі числення і власне самій двійковій системі присвячено доволі багато математичної та технічної літератури. Якщо Вас цікавить це, то можете звернутися до такої літератури, ми ж не будемо вдаватися у всі деталі, а лише розглянемо те, що потрібне для розуміння роботи операторів Java. Якщо ви не знайомі з правилами переведення, то можете скористатися комп'ютерним калькулятором.

Слід зазначити, що часто в програмуванні застосовують 16-ву систему числення для представлення чисел. В 16-й системі числення застосовують цифри 0-9 та літери від A-F. Причиною є те, що її набагато легше переводити в двійкову систему числення і простіше в програмі написати 16-ве число ніж двійкове. Тобто програмісту менше друкувати знаків і менша вірогідність помилки при друці числа. Так, наприклад, число 255 в двійковій системі числення буде 11111111, а в 16-й FF, 10-1010-A, 78 - 0100 1110 -4E.

Двійкові від’ємні числа представляються шляхом інвертування усіх розрядів і додавання одиниці. Тобто: 11001010 +00000001 =11001011 (-53).