Please open Telegram to view this post
VIEW IN TELEGRAM
Каково назначение ключевого слова transient в Java?
Anonymous Quiz
3%
Используется для методов, которые нельзя переопределять
2%
Служит для объявления константы
36%
Указывает, что переменная может изменяться из разных потоков
47%
Указывает, что поле не должно сериализовываться
11%
Посмотреть ответ
Модификатор доступа static в Java. Часть 5.
Статические методы в интерфейсах.
В версии Java 8 появилась возможность определения статических методов в интерфейсах.
Их поведение напоминает поведение методов по умолчанию (default methods), но есть существенные отличия – они не могут быть переопределены методами в реализующих интерфейс классах.
Такая особенность позволяет избежать нежелательных результатов, которые возможны в случае некорректной реализации метода в классе.
Пример кода с использованием статического метода в интерфейсе можно увидеть на Картинке 1.
Обратите внимание, что для использования статических методов интерфейса не нужно использовать ключевое слово «implements». Достаточно (и это необходимо) использовать имя интерфейса вместе с именем статического метода. В других случаях, статические методы интерфейса видны только методам этого интерфейса.
✅ JavaStart. Подписаться
Статические методы в интерфейсах.
В версии Java 8 появилась возможность определения статических методов в интерфейсах.
Их поведение напоминает поведение методов по умолчанию (default methods), но есть существенные отличия – они не могут быть переопределены методами в реализующих интерфейс классах.
Такая особенность позволяет избежать нежелательных результатов, которые возможны в случае некорректной реализации метода в классе.
Пример кода с использованием статического метода в интерфейсе можно увидеть на Картинке 1.
Обратите внимание, что для использования статических методов интерфейса не нужно использовать ключевое слово «implements». Достаточно (и это необходимо) использовать имя интерфейса вместе с именем статического метода. В других случаях, статические методы интерфейса видны только методам этого интерфейса.
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. Часть 6.
Какие же причины использовать статические методы? Вопрос из собеседования на Junior java разработчика.
– Для доступа / управления статическими переменными и другими статическими методами, которые не зависят от объектов;
– Для служебных, вспомогательных классов и интерфейсов, поскольку не требуют создания объектов и соответственно, обеспечивают большую производительность (не создаются лишние объекты в памяти);
– Когда методу требуется доступ лишь к статическим полям класса.
✅ JavaStart. Подписаться
Какие же причины использовать статические методы? Вопрос из собеседования на Junior java разработчика.
– Для доступа / управления статическими переменными и другими статическими методами, которые не зависят от объектов;
– Для служебных, вспомогательных классов и интерфейсов, поскольку не требуют создания объектов и соответственно, обеспечивают большую производительность (не создаются лишние объекты в памяти);
– Когда методу требуется доступ лишь к статическим полям класса.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое дженерики (generics) в Java?
Anonymous Quiz
57%
Механизм обеспечения безопасности типов во время компиляции
3%
Способ определения статических методов
6%
Метод ускорения выполнения кода
29%
Специальный тип интерфейса
5%
Посмотреть ответ
Модификатор доступа static в Java. Часть 7.
Ключевые моменты.
Очень нужная информация как для понимания, так и для успешного ответа на собеседовании на вопросы про ключевое слово static.
1) Статические методы в Java вызываются во время компиляции, а не во время исполнения;
2) Поскольку переопределение метода является частью полиморфизма во время выполнения (Runtime Polymorphism), статические методы не могут быть переопределены. Это справедливо также для статических методов интерфейса;
3) Абстрактные методы не могут быть статическими;
4) Статические методы не могут использовать ключевые слова this или super;
5) Методы экземпляра класса также могут непосредственно обращаться к статическим переменным и статическим методам;
6) Статические методы могут обращаться ко всем статическим переменным и другим статическим методам;
7) Статические методы не могут напрямую обращаться к переменным экземпляра и методам экземпляра. Для этого им нужна ссылка на объект;
8) Статические поля и методы не являются потокобезопасными. Т.к. каждый экземпляр класса имеет одну и ту же копию статической переменной, такая переменная нуждается в защите от одновременного обращения к ней нескольких потоков. Для этого статическая переменная должна быть синхронизирована;
9) Статические методы связываются во время компиляции, в отличие от не статических методов, которые связываются во время исполнения.
✅ JavaStart. Подписаться
Ключевые моменты.
Очень нужная информация как для понимания, так и для успешного ответа на собеседовании на вопросы про ключевое слово static.
1) Статические методы в Java вызываются во время компиляции, а не во время исполнения;
2) Поскольку переопределение метода является частью полиморфизма во время выполнения (Runtime Polymorphism), статические методы не могут быть переопределены. Это справедливо также для статических методов интерфейса;
3) Абстрактные методы не могут быть статическими;
4) Статические методы не могут использовать ключевые слова this или super;
5) Методы экземпляра класса также могут непосредственно обращаться к статическим переменным и статическим методам;
6) Статические методы могут обращаться ко всем статическим переменным и другим статическим методам;
7) Статические методы не могут напрямую обращаться к переменным экземпляра и методам экземпляра. Для этого им нужна ссылка на объект;
8) Статические поля и методы не являются потокобезопасными. Т.к. каждый экземпляр класса имеет одну и ту же копию статической переменной, такая переменная нуждается в защите от одновременного обращения к ней нескольких потоков. Для этого статическая переменная должна быть синхронизирована;
9) Статические методы связываются во время компиляции, в отличие от не статических методов, которые связываются во время исполнения.
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
Как называется механизм автоматического освобождения памяти в Java?
Anonymous Quiz
3%
Перераспределение памяти
2%
Оптимизация памяти
2%
Ручное управление памятью
93%
Сборка мусора (Garbage Collection)
1%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM
Модификатор доступа static в Java. Часть 8.
Наглядная таблица связей статических/обычных методов и статических/обычных переменных.
✅ JavaStart. Подписаться
Наглядная таблица связей статических/обычных методов и статических/обычных переменных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Одна из самых распространенных задач из собеседований.
Каким будет результат сравнения в следующем коде на Картинке?
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк.
Разберем детально:
1) Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект.
2) Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта.
3) Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через .equals(), а содержимое данных строк одинаково.
✅ JavaStart. Подписаться
Каким будет результат сравнения в следующем коде на Картинке?
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк.
Разберем детально:
1) Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект.
2) Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта.
3) Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через .equals(), а содержимое данных строк одинаково.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из следующих методов используется для создания нового потока (thread) в Java?
Anonymous Quiz
29%
thread.run()
63%
new Thread().start()
1%
thread.begin()
2%
startThread()
5%
Посмотреть ответ
Please open Telegram to view this post
VIEW IN TELEGRAM