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. Робота з класами

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

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

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

Перша група — створення класів: class, interface та enum. З оголошенням класу та 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-машина, як ви вже, мабуть, здогадуєтеся, теж написана на C++. Як і багато методів стандартних бібліотек.

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

assert — теж прийшов у спадок від C++. З його допомогою в код можна додати додаткові перевірки (на те, що змінна не дорівнює 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
Не споречаюся)