Please open Telegram to view this post
VIEW IN TELEGRAM
Модификатор доступа static в Java. Часть 9.
Излюбленная тема почти всех интервьюеров - Статический блок инициализации.
Статический блок используется для инициализации статических переменных. Хотя статические переменные могут быть инициализированы непосредственно во время объявления, бывают ситуации, когда нам требуется выполнить многострочную обработку.
В таких случаях пригодятся статические блоки.
Либо, если статические переменные во время инициализации требуют дополнительной логики, состоящей из нескольких операторов, то также можно использовать статический блок.
Пример статического блока.
Предположим, мы хотим инициализировать объект, представляющий собой список с некоторыми предопределенными значениями.
Это легко сделать с помощью статических блоков (Картинка 1).
В этом примере невозможно инициализировать объект List всеми начальными значениями вместе с объявлением, поэтому используется статический блок.
Код на Картинке 2 демонстрирует особенность статических блоков — они выполняются раньше конструкторов и при создании нескольких объектов класса, статический блок выполняется только один раз.
✅ JavaStart. Подписаться
Излюбленная тема почти всех интервьюеров - Статический блок инициализации.
Статический блок используется для инициализации статических переменных. Хотя статические переменные могут быть инициализированы непосредственно во время объявления, бывают ситуации, когда нам требуется выполнить многострочную обработку.
В таких случаях пригодятся статические блоки.
Либо, если статические переменные во время инициализации требуют дополнительной логики, состоящей из нескольких операторов, то также можно использовать статический блок.
Пример статического блока.
Предположим, мы хотим инициализировать объект, представляющий собой список с некоторыми предопределенными значениями.
Это легко сделать с помощью статических блоков (Картинка 1).
В этом примере невозможно инициализировать объект List всеми начальными значениями вместе с объявлением, поэтому используется статический блок.
Код на Картинке 2 демонстрирует особенность статических блоков — они выполняются раньше конструкторов и при создании нескольких объектов класса, статический блок выполняется только один раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Модификатор доступа static в Java. Часть 10.
Какие причины использовать статические блоки?
1) Если для инициализации статических переменных требуется дополнительная логика, за исключением операции присваивания;
2) Если инициализация статических переменных подвержена ошибкам и требует обработки исключений.
Ключевые моменты.
1) У класса может быть несколько статических блоков;
2) Статические поля и статические блоки выполняются в том же порядке, в котором они присутствуют в классе;
3) Из статического блока нельзя получить доступ к не статическим членам класса;
4) Статический блок не может пробросить дальше перехваченные исключения, но может их выбросить. При этом всегда будет выкидываться только java.lang.ExceptionInInitializerError;
5) Статические поля или переменные инициализируются после загрузки класса в память в том же порядке, в каком они описаны в классе.
✅ JavaStart. Подписаться
Какие причины использовать статические блоки?
1) Если для инициализации статических переменных требуется дополнительная логика, за исключением операции присваивания;
2) Если инициализация статических переменных подвержена ошибкам и требует обработки исключений.
Ключевые моменты.
1) У класса может быть несколько статических блоков;
2) Статические поля и статические блоки выполняются в том же порядке, в котором они присутствуют в классе;
3) Из статического блока нельзя получить доступ к не статическим членам класса;
4) Статический блок не может пробросить дальше перехваченные исключения, но может их выбросить. При этом всегда будет выкидываться только java.lang.ExceptionInInitializerError;
5) Статические поля или переменные инициализируются после загрузки класса в память в том же порядке, в каком они описаны в классе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из паттернов чаще всего применяется для создания единственного глобального экземпляра класса?
Anonymous Quiz
2%
Стратегия (Strategy)
84%
Одиночка (Singleton)
8%
Фабрика (Factory)
1%
Адаптер (Adapter)
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой файл обычно отвечает за сборку проекта в Maven?
Anonymous Quiz
4%
settings.xml
4%
build.gradle
17%
maven.xml
75%
pom.xml
1%
Посмотреть ответ
Модификатор доступа static в Java. Часть 11.
Статический вложенный класс (nested class).
Язык программирования Java позволяет создавать классы внутри другого класса. Такой класс называется вложенным (nested).
Вложенный класс группирует элементы, которые будут использоваться в одном месте, сделав тем сам код более организованным и читабельным.
Вложенные классы бывают двух видов:
– вложенные классы, объявленные статическими, называются статическими вложенными классами (static nested classes);
– вложенные классы, объявленные без static, называются внутренними классами (inner classes)
Основное различие между этими понятиями состоит в том, что внутренние классы имеют доступ ко всем членам включающего их класса (включая приватные) верхнего уровня, тогда как статические вложенные классы имеют доступ только к статическим членам внешнего класса.
Примером статического класса является уже известный Singleton паттерн (Картинка 2).
Наиболее широко используемый подход для создания объектов «одиночка» (singleton) — это статический вложенный класс, поскольку он не требует никакой синхронизации, его легко изучить и реализовать.
✅ JavaStart. Подписаться
Статический вложенный класс (nested class).
Язык программирования Java позволяет создавать классы внутри другого класса. Такой класс называется вложенным (nested).
Вложенный класс группирует элементы, которые будут использоваться в одном месте, сделав тем сам код более организованным и читабельным.
Вложенные классы бывают двух видов:
– вложенные классы, объявленные статическими, называются статическими вложенными классами (static nested classes);
– вложенные классы, объявленные без static, называются внутренними классами (inner classes)
Основное различие между этими понятиями состоит в том, что внутренние классы имеют доступ ко всем членам включающего их класса (включая приватные) верхнего уровня, тогда как статические вложенные классы имеют доступ только к статическим членам внешнего класса.
Примером статического класса является уже известный Singleton паттерн (Картинка 2).
Наиболее широко используемый подход для создания объектов «одиночка» (singleton) — это статический вложенный класс, поскольку он не требует никакой синхронизации, его легко изучить и реализовать.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
При работе с JDBC, какой шаг обязателен перед выполнением SQL-запроса?
Anonymous Quiz
84%
Зарегистрировать драйвер и открыть Connection
3%
Вызвать ResultSet.next()
2%
Закрыть Statement
7%
Использовать Stream для обработки
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
Модификатор доступа static в Java. Часть 12.
Причины использовать статический внутренний класс:
– Если какой-то класс используются только в одном другом классе, то их можно сгруппировать, поместив в один общий класс. Это усиливает инкапсуляцию;
– Если вложенный класс не требует какого-либо доступа к членам экземпляра его класса, то лучше объявить его как статический, потому, что таким образом он не будет связан с внешним классом и, следовательно, будет более оптимальным, поскольку ему не потребуется память в куче или в стеке.
✅ JavaStart. Подписаться
Причины использовать статический внутренний класс:
– Если какой-то класс используются только в одном другом классе, то их можно сгруппировать, поместив в один общий класс. Это усиливает инкапсуляцию;
– Если вложенный класс не требует какого-либо доступа к членам экземпляра его класса, то лучше объявить его как статический, потому, что таким образом он не будет связан с внешним классом и, следовательно, будет более оптимальным, поскольку ему не потребуется память в куче или в стеке.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какая аннотация используется для обозначения того, что метод теста в JUnit 5?
Anonymous Quiz
10%
@TestCase
0%
@Verify
84%
@Test (из org.junit.jupiter.api)
3%
@Before
3%
Посмотреть ответ
Модификатор доступа static в Java. Часть 13.
Ключевые моменты использования статического внутреннего класса:
1) Статические вложенные классы не имеют доступа к какому-либо члену экземпляра внешнего класса — он может получить к ним доступ только через ссылку на объект;
2) Статические вложенные классы могут получить доступ ко всем статическим членам внешнего класса, включая приватные;
3) Спецификация Java не позволяет объявлять класс верхнего уровня статическим. Только классы внутри других классов могут быть статическими;
4) По сути статический вложенный класс ничем не отличается от любого другого внутреннего класса за исключением того, что его объект не содержит ссылку на создавший его объект внешнего класса;
5) Для использования статических методов/переменных/классов нам не нужно создавать объект данного класса;
Яркий пример вложенного статического класса — HashMap.Entry, который предоставляет структуру данных внутри HashMap.
Стоит заметить, также как и любой другой внутренний класс, вложенные классы находятся в отдельном файле .class. Таким образом, если вы объявили пять вложенных классов в вашем главном классе, у вас будет 6 файлов с расширением .class
✅ JavaStart. Подписаться
Ключевые моменты использования статического внутреннего класса:
1) Статические вложенные классы не имеют доступа к какому-либо члену экземпляра внешнего класса — он может получить к ним доступ только через ссылку на объект;
2) Статические вложенные классы могут получить доступ ко всем статическим членам внешнего класса, включая приватные;
3) Спецификация Java не позволяет объявлять класс верхнего уровня статическим. Только классы внутри других классов могут быть статическими;
4) По сути статический вложенный класс ничем не отличается от любого другого внутреннего класса за исключением того, что его объект не содержит ссылку на создавший его объект внешнего класса;
5) Для использования статических методов/переменных/классов нам не нужно создавать объект данного класса;
Яркий пример вложенного статического класса — HashMap.Entry, который предоставляет структуру данных внутри HashMap.
Стоит заметить, также как и любой другой внутренний класс, вложенные классы находятся в отдельном файле .class. Таким образом, если вы объявили пять вложенных классов в вашем главном классе, у вас будет 6 файлов с расширением .class
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Чем отличается оператор == от метода equals() при сравнении объектов в Java?
Anonymous Quiz
17%
== сравнивает содержимое, equals() — ссылки на объекты
67%
== сравнивает ссылки, equals() — содержимое
1%
Оба всегда сравнивают только содержимое
11%
== работает только для примитивов, equals() — только для объектов
4%
Посмотреть ответ