1. Список слів

У мові Java, як і в будь-якій мові програмування, є слова, які мають особливий зміст. Наприклад, return або if, або while. Такі слова називаються ключовими (keywords) і вважаються зарезервованими мовою Java.

Ви не можете використовувати ці слова як імена змінних, імена методів або класів. Компілятор завжди буде інтерпретувати їх строго певним чином. Загалом в Java таких слів 54.

abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
var
true
null
false

Деякі з них ви вже знаєте, а про решту ми зараз поговоримо.


2. Примітивні типи

Як ви вже, напевно, запам'ятали, у Java є 8 примітивних типів, і кожному з них відповідає своє ключове слово:

  • byte
  • short
  • int
  • long
  • char
  • float
  • double
  • boolean
  • void

Якщо ви досить допитливі, то, найімовірніше, уже пробували назвати змінну ім'ям int. І, звісно ж, це у вас не вийшло. Саме через те, що всі імена примітивних типів є зарезервованими словами.

Також до цієї категорії можна віднести тип void.


3. Цикли й розгалуження

Цикли й розгалуження теж мають великий список ключових слів:

  • if
  • else
  • switch
  • case
  • default
  • while
  • do
  • for
  • break
  • continue

Лише 10 слів вистачає, щоб у мові з'явилися цикли кількох видів, розгалуження, оператори керування перериванням циклу (break і continue) і множинні розгалуження (switch). Усі ці ключові слова вам уже знайомі.


4. Винятки

Винятки дають нам 5 ключових слів:

  • try
  • catch
  • finally
  • throw
  • throws

Це блок try-catch-finally, оператор для викидання винятків — throw і ключове слово throws для підтримки механізму checked-винятків.

Добра новина: ви вже знайомі з усіма ключовими словами у винятках, отож більшу частину роботи з винятками вже знаєте.


5. Області видимості

Лише три ключових слова, але ви вже з ними знайомі:

  • private
  • protected
  • public

public дозволяє доступ до методу/змінної/класу з будь-якого місця програми.

private забороняє доступ до методу/змінної/класу з будь-якого місця програми. Доступ дозволено тільки всередині того самого класу, що й метод, позначений модифікатором private.

protected працює так само, як і private, але ще дозволяє звертатися до методу/змінної/класу із класів-спадкоємців. Переваги цього модифікатора стануть вам зрозумілішими, коли ви добре розберетеся з ООП та успадкуванням.


6. Робота з класами

У цю категорію входять 10 ключових слів:

  • class
  • interface
  • enum
  • import
  • package
  • extends
  • implements
  • static
  • final
  • abstract
  • default

Їх можна поділити на 4 групи.

Перша група — створення класів: class, interface і enum. З оголошенням class і enum ви вже познайомилися. Ключове слово interface використовується для оголошення ще одного «різновиду класів» — інтерфейсів.

Друга група — це вже відомі вам ключові слова package та import. Package використовується для того, щоб описати пакет класу всередині файлу класу. А import — щоб у нашому класі ми могли використовувати короткі імена чужих класів.

Ключові слова extends і implements використовуються для опису успадкування. Їх ви розглянете на самому початку квесту Java Core.

І нарешті, остання група — це модифікатори static, final, default і abstract. Про static і final ви вже дещо знаєте, а ключове слово abstract використовується для того, щоб зробити клас або метод абстрактним. Детальніше — під час вивчення успадкування у квесті Java Core.


7. Робота з об'єктами та змінними

Ще 6 ключових слів використовуються для роботи з об'єктами, методами та змінними.

  • new
  • instanceof
  • this
  • super
  • return
  • var (починаючи з Java 10)

Оператор new використовується для створення нових об'єктів — це ви вже знаєте.

Оператор instanceof використовується, щоб перевірити, чи містить певна змінна посилання на об'єкт певного типу. З ним ви теж уже знайомі.

Ключове слово this використовується, щоб вирішувати проблеми з затіненням змінних і методів класу. Ви це теж вивчали.

Ключове слово super — це аналог this, тільки в разі звернення до методів і змінних батьківського класу. Батьківський клас інакше називають суперкласом.

Оператор return використовується, щоб повернути значення функції та разом із тим цю саму функцію завершити.

І нарешті, var — це оголошення змінної з автовиведенням типу. Ви теж із цим уже знайомі.


8. Багатонитковість

Багатонитковість на рівні синтаксису мови Java представлено лише двома словами.

  • synchronized
  • volatile

Ми їх навіть не розглядатимемо. Ось доберетеся до квесту Java Multithreading — тоді й почнемо.


9. Різне

Крім того, є ще 4 унікальних ключових слова:

  • native
  • transient
  • assert
  • strictfp

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

transient — це модифікатор, який пишуть перед змінними класу (полями класу). Він просить Java-машину пропустити (ігнорувати) змінну під час збереження об'єкта класу, тобто під час серіалізації. Більше про серіалізацію ви дізнаєтеся у квесті Java Collections.

assert — теж надійшов у спадок від С++. З його допомогою в код можна вписати додаткові перевірки (наприклад, чи змінна не дорівнює null). Штука в тому, що ці перевірки вмикаються або вимикаються на етапі компіляції.

Можна зібрати проєкт для внутрішнього тестування, де вони здійснюватимуться (будуть увімкнені). А можна їх і вимкнути під час компіляції: коли компілюєте версію програми, яка буде постачатися користувачам.

Ну а про модифікатор strictfp і додаткову точність процесорів Intel ми навіть цілу історію розповідали.


10. Зарезервовані, але не використовуються

А ще є два ключових слова, які є зарезервованими, але не використовуються.

  • const
  • goto

Це теж спадщина від мови C++, в якій вони є та використовуються.


11. Неключові слова

Константи true, false і null формально не належать до ключових слів, проте мають усі їхні особливості. Ви не можете дати методу назву true або змінній — назву false. Компілятор такий код не зрозуміє й не компілюватиме.