Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
998 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
#вопросы_с_собеседований
В чем разница между Iterator и Enumeration?

Iterator появился в JDK 1.2 и реализует интерфейс Iterable, в то время как Enumeration существовал в более ранних версиях JDK и не реализует Iterable.

— Методы Iterator позволяют удалять элементы во время итерации, в то время как методы Enumeration не предоставляют такой возможности.

Iterator является "fail-fast", то есть выбросит ConcurrentModificationException, если коллекция была изменена, а Enumeration не гарантирует такого поведения.

Iterator поддерживает обобщенные типы, а Enumeration работает только с объектами типа Object.
👍17
#вопросы_с_собеседований
Почему современные фреймворки используют в основном только unchecked exceptions?

Unchecked exceptions используются в основном потому, что они не требуют обязательной обработки исключений в коде. Это позволяет упростить код и сделать его более читаемым. Однако, это также может привести к тому, что исключения не будут обработаны и программа может завершиться аварийно.

Некоторые же фреймворки используют checked exceptions для обработки ошибок ввода-вывода или других проблем, которые могут возникнуть в процессе выполнения программы. Однако, это может привести к тому, что код становится более сложным и менее читаемым.
👍22
#вопросы_с_собеседований
Что будет, если в static блоке кода возникнет исключение?

Если в static блоке кода возникнет исключение, то это приведет к ошибке инициализации класса.
Static блок выполняется при загрузке класса, и любые исключения в нем приведут к сбою и невозможности загрузить класс.

Поэтому нужно либо обрабатывать исключения в static блоке, либо избегать кода, который может привести к исключениям.
Лучше выносить в static блок только простую инициализацию, а сложную логику помещать в конструктор или методы класса.
👍31
Класс Unsafe

Класс Unsafe — это мощный, но опасный инструмент, который позволяет выполнять низкоуровневые операции с памятью и внутренними механизмами JVM. Его использование не рекомендуется для обычных задач веб-разработки или стандартных приложений, но он может быть полезен в специфических ситуациях, требующих высокой производительности и обхода стандартных механизмов Java.

#для_продвинутых
👍21
Класс MathContext

Класс MathContext используется для указания точности вычислений с плавающей запятой. Он определяет два параметра:

precision — количество знаков после запятой, которые должны сохраняться в результате вычислений.
roundingMode — способ округления значений, которые не могут быть точно представлены с заданной точностью.

По умолчанию точность вычислений в Java равна 16 знакам после запятой, а режим округления — HALF_UP.

#для_начинающих
👍161
EventListener

EventListener (слушатель событий) — это интерфейс, который позволяет объектам реагировать на события, происходящие в системе. Он используется для создания интерактивных приложений, где действия пользователя или изменения в системе должны вызывать определенные реакции.

#для_продвинутых
👍17
#вопросы_с_собеседований
Для чего используется оператор assert?

Оператор assert используется для проверки условий во время выполнения программы.
Он позволяет проверить истинность некоторого логического выражения и выбросить исключение AssertionError, если выражение ложно.

Основные применения assert:
- Проверка предусловий и постусловий в методах.

- Проверка инвариантов в критических секциях кода.

- Отладка при разработке, чтобы проверить ожидаемое состояние программы в определенных точках.

- Проверка условий в потенциально опасных ситуациях, например при работе с массивами.

assert лучше использовать для отладки и проверки инвариантов, а для критически важных проверок предусловий лучше применять явную проверку условий и выброс исключений.
👍94
StringTokenizer

StringTokenizer — это класс в Java, который используется для разбиения строки на токены. Токены — это отдельные части строки, разделенные символами-разделителями.

Создание объекта StringTokenizer:

StringTokenizer st = new StringTokenizer(строка, разделители);


строка — это строка, которую нужно разбить на токены.
разделители — это строка, содержащая символы-разделители.

#для_продвинутых
👍16🤔32
java.lang.reflect.Constructor

Класс java.lang.reflect.Constructor представляет собой конструктор класса Java. Он используется для создания экземпляров класса, предоставляя доступ к информации о конструкторе, а также возможность его вызова.

#для_продвинутых
👍19
MouseListener

MouseListener — это интерфейс в Java, позволяющий компонентам графического интерфейса (GUI) реагировать на действия мыши, такие как нажатие, отпускание, перемещение, вход и выход курсора. Он широко используется для создания интерактивных приложений.

#для_продвинутых
👍22
KeyListener

KeyListener — это интерфейс в Java, который позволяет отслеживать события, связанные с клавиатурой. Он используется для определения того, когда пользователь нажимает, отпускает или печатает клавишу.

#для_продвинутых
👍16
Метод isDaemon()

Метод isDaemon() используется для определения, является ли поток демоном или нет.

Демон (daemon) — это поток, который работает в фоновом режиме и не препятствует завершению программы. Основная программа может завершиться, даже если демон все еще выполняется.
👍16
JarFile

JarFile — это класс в Java, который используется для чтения содержимого JAR-файла. JAR-файл (Java ARchive) — это формат архива, который используется для объединения нескольких файлов Java (.class), а также других ресурсов, таких как изображения, звуки и текстовые файлы, в один файл.

Создание объекта JarFile
Для создания объекта JarFile необходимо использовать его конструктор, который принимает путь к JAR-файлу в качестве параметра.

#для_продвинутых
11👍5
ZipFile

ZipFile — это класс, который используется для чтения содержимого ZIP-архивов. Он позволяет вам перебирать записи в архиве, получать информацию о них и извлекать их содержимое.

#для_начинающих
👍23😢2
SoftReference

SoftReference (мягкая ссылка) — это класс, который представляет собой ссылку на объект, который может быть удален сборщиком мусора (GC) в любой момент, если память нужна для других объектов.

Принцип работы:
— Создание: SoftReference создается с помощью конструктора, который принимает ссылку на объект.
— Доступ к объекту: Для доступа к объекту, на который ссылается SoftReference, используется метод get().
— Очистка: GC может очистить SoftReference в любой момент, если память нужна для других объектов.

Когда использовать SoftReference:
— Кэширование: SoftReference можно использовать для реализации кэшей, где важно сохранить объекты в памяти, если это возможно, но не обязательно.
— Сохранение метаданных: SoftReference можно использовать для хранения метаданных об объектах, которые не являются критичными для работы приложения.

#для_продвинутых
👍153🔥1
WeakReference

WeakReference — это класс, представляющий собой «слабую ссылку» на объект. Слабая ссылка не препятствует сборщику мусора (GC) в удалении объекта, на который она ссылается.

Когда использовать WeakReference:

— При кэшировании: Слабые ссылки можно использовать для реализации кэша, где объекты кеша удаляются из памяти, когда они больше не используются, но не сразу.
— При отслеживании объектов: Слабые ссылки можно использовать для отслеживания объектов, не препятствуя их удалению GC.
— При реализации «умных указателей»: Слабые ссылки можно использовать для реализации «умных указателей», которые автоматически освобождают ресурсы, когда они больше не нужны.

#для_продвинутых
👍11
DatagramPacket

DatagramPacket — это класс в Java, который представляет собой пакет датаграмм. Датаграммы используются для реализации бессоединительной службы доставки пакетов. Это означает, что каждый пакет отправляется независимо от других пакетов, и нет гарантии, что они будут доставлены в том же порядке, в котором были отправлены.

#для_продвинутых
👍9
InvocationHandler

InvocationHandler — это интерфейс, реализуемый обработчиком вызовов для экземпляра прокси. Каждый экземпляр прокси имеет связанный с ним обработчик вызовов. Когда метод вызывается на экземпляре прокси, вызов метода кодируется и отправляется в метод invoke его обработчика вызовов.

#для_продвинутых
👍8
Интерфейс Delayed

Интерфейс Delayed используется для объектов, у которых есть время истечения задержки.
Он позволяет организовать очередь объектов с учетом их задержки.

Основные методы:
getDelay(TimeUnit unit) — возвращает оставшееся время задержки в указанных единицах измерения.
compareTo(Delayed o) — сравнивает текущий объект с переданным по оставшемуся времени задержки.

Этот интерфейс реализуется классами, которые должны храниться в очереди с задержкой, например в DelayQueue.
👍91
Метод isDaemon()

Метод isDaemon() используется для определения, является ли поток демоном или нет.

Демон (daemon) — это поток, который работает в фоновом режиме и не препятствует завершению программы. Основная программа может завершиться, даже если демон все еще выполняется.
👍16