JavaRush /Курси /Java Syntax Zero /Зарезервовані слова у Java

Зарезервовані слова у Java

Java Syntax Zero
Рівень 15 , Лекція 5
Відкрита

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. Компілятор такий код не зрозуміє й не компілюватиме.

Коментарі (10)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
oleh ronin Рівень 47
3 листопада 2023
protected працює так само, як і private А хіба protected не одне і те ж саме що default ? Напевно одруківка
Vlad Рівень 17
2 грудня 2023
public --- доступний по всьому проекту privat --- доступний у межах класу де його визвали default --- доступ у межах пакета protected --- доступ в межах пакета,доступний до всіх підкласів,навіть, якщо вони не в пакеті (потипу дозволяє звертатися до методу/змінної/класу із класів-спадкоємців.)
oleh ronin Рівень 47
3 грудня 2023
А я хіба щось не так сказав? Те що від доступний для спадкоємців, це логічно, проте він ніяк не може бути як private
Vlad Рівень 17
5 грудня 2023
Ні, оскільки protected і private мають різні рівні доступу
oleh ronin Рівень 47
6 грудня 2023
Хлопче, я розумію різницю між private та protected. Мій перший коментар складався з цитати із лекції(перша стрічка) та мого запитання( друга стрічка), де я наголосив що protected працює не так само, як і private, у protected для package такаж видимість як і у default, а також доступний для спадкоємців цього класу.
Vlad Рівень 17
7 грудня 2023
Перепрошую,трохи не зрозуміли один одного!!!
27 березня 2025
Хлопче, ти би хоч до кінця дочитав те, шо там написано. чув дзвін і не знає звідки він
Roma Chernesh Рівень 16
19 лютого 2023
 Java-машину, як ви вже, напевно, здогадуєтеся, теж написано мовою С++ >> гугління цієї теми говорить, що частина JVM написана на мові С. Не те щоб це було дуже важливо, але мож кому цікаво буде дізнатися. Тобто стандартна бібліотека в основному написана на самому Java, а от там де нативний код - використовують С++ (та у певних налаштунках С).
les_yeux_blancs Рівень 50
28 квітня 2023
В принципі це взагалі не спростовує твердження про, що "Java-машину, як ви вже, напевно, здогадуєтеся, теж написано мовою С++", тому що будь-який валідний код C є валдіним кодом C++ (але працює це, звичайно, лише в одну сторону)
Roma Chernesh Рівень 16
10 травня 2023
Не споречаюся)