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-машина, как вы уже, наверное, догадываетесь, тоже написана на C++. Как и многие методы стандартных библиотек.

transient — это модификатор, который пишется перед переменными класса (полями класса). Он просит Java-машину пропустить (игнорировать) переменную при сохранении объекта класса — сериализации. Больше о сериализации вы узнаете в квесте Java Collections.

assert — тоже пришел в наследство от C++. С его помощью в код можно добавить дополнительные проверки (на то, что переменная не равна null, например). Штука в том, что он включается или выключается на этапе компиляции.

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

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


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

Еще есть два ключевых слова, которые зарезервированы, но не используются.

  • const
  • goto

Это тоже наследие языка C++, где они есть и используются.


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

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