Статический класс
это всегда внутренний класс. Статического не внутреннего класса не бывает.
Обычный внутренний класс и статический внутренний класс часто сравнивают.
Главное отличие статического от обычного внутреннего в том что не нужно создавать экземпляр внешнего класса для обращения к его элементам, но обращаться внутренний статический класс может только к статическим элементам внешнего класса.
То есть отличаеться такой класс от просто внутреннего тем что он не сильно связан с внешним классом, его можно создавать и использовать без объекта внешнего класса, так как, как уже было сказано он не может работать (и ему и не нужно) с нестатическими элементами внешенго класса, а соответственно связь слабая.
Он работает лишь со статическими элементами внешнего класса то есть с элементами, которые общие для всех обьектов внешнего класса, и поэтому связь не сильная, поскольку статические элементы не зависят от обьекта класса, то есть необязательно создавать обьект внешнего класса для использования обьектом внутреннего статического класса статических членов обьекта внешнего класса.
Например есть класс Торт Наолеон.
У него есть внутри какая-то статическая переменная, например колличество масла, и внутренний статический класс Рецепт Торта Наполеон.
В отличие от мотора, который выполняет важные функции в машине и без которого машина не поедет и от которого нет смысла без машины для которой он существует рецепт торта наполеон очевидно может существовать отдельно от самого торта наполеон, но тем не менее он всё равно имеет смысловую связь с тортами наполеон, ведь торты наполеон готовяться по этому рецепту. Поэтому Рецепт торта наполеон есть смысл описать как внутренний статический класс класса Торт Наполеон.
И соответственно обьект внутреннего статического класса Рецепт торта наполеон будет иметь лишь общую связь со всеми обьектами класса торт наполеон, поскольку будет иметь связь только со статическими (общими) элементами класса торт наполеон.
Поясним на примере:
Вывод:

Table of Contents
Ссылочные типы и типы значений
Объяснение различий ссылочных типов и типов значений в Java. Как работают объекты и примитивы в памяти? Практические примеры с классами.
Передача в метод ссылочных типов и типов значений
Разбираем разницу между передачей в метод примитивов и объектов в Java. Почему объекты изменяются, а примитивы нет? Практические примеры.
Аннотации в Java
Узнайте, что такое аннотации в Java на примерах @Override, @Deprecated и @FunctionalInterface. Создавайте собственные аннотации с @interface для управления кодом.