Java Learning – Telegram
Java Learning
18.3K subscribers
1.62K photos
2 videos
3 files
1K links
№ 5079899194

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

Ссылка для друга - https://news.1rj.ru/str/+ZEYYht6-46w5MDM6

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
⚙️ Collections.frequency()

Collections.frequency() считает количество вхождений указанного элемента в коллекции. Метод проходит по всем элементам и сравнивает их с нужным объектом с помощью метода .equals().

Это полезно для анализа данных, подсчёта повторяющихся элементов и статистики по коллекциям.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
#вопросы_с_собеседований
Может ли метод main выбросить исключение во вне и если да, то где будет происходить обработка данного исключения?

Метод main может выбросить исключение. Это исключение будет передано в JVM (виртуальную машину Java). JVM отловит это исключение и завершит выполнение программы, выведя stack trace (трассировку стека) исключения.

Таким образом, исключение из main приведет к аварийному завершению программы.

Чтобы избежать этого, лучшей практикой является перехватывать исключения внутри main и обрабатывать их, не допуская выброса за его пределы.


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤‍🔥1
String.join()

String.join() объединяет элементы коллекции или массива в одну строку с указанным разделителем. Это полезно для красивого вывода данных и формирования текстовых шаблонов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍3
🚫 Антипаттерн недели: Переопределение методов без аннотации @Override

В Java, если вы переопределяете метод суперкласса, но случайно ошиблись в названии или сигнатуре — компилятор не подаст сигнала, если вы не указали @Override. В результате метод не переопределяется, а программа ведёт себя неожиданною.

✔️ Всегда используйте @Override при переопределении — это защитит от скрытых ошибок.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
Math.abs()

Math.abs() возвращает абсолютное значение числа (модуль). Это полезно для работы с расстояниями, разницей между числами и при математических вычислениях.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Collections.disjoint()

Collections.disjoint() проверяет, не имеют ли две коллекции общих элементов. Это полезно для фильтрации, сравнения и оптимизации поиска пересечений.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥2
⚙️ Collections.nCopies()

Collections.nCopies() создаёт неизменяемый список, содержащий заданное количество копий одного и того же объекта. Это полезно для инициализации, заглушек и создания шаблонных коллекций.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤‍🔥2
⚙️ Class.getRecordComponents()

Class.getRecordComponents() возвращает информацию о компонентах записи (record). Это полезно для рефлексии, сериализации и автоматического отображения данных в Record-классах.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Что будет выведено при выполнении кода?

Пояснение
⬇️
Java кэширует объекты Integer от -128 до 127. Переменные a и b указывают на один объект из пула, поэтому a == b → true. Значение 200 вне диапазона, c и d — разные объекты → false.


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍2
⚙️ Pattern.asPredicate()

Pattern.asPredicate() превращает регулярное выражение в Predicate<String>, который можно использовать прямо в потоках (Stream). Это полезно для фильтрации строк без явного вызова .matches().

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥5
⚙️ System.gc() + System.runFinalization()

Хотя явно вызывать сборку мусора в Java не рекомендуется, комбинация System.gc() и System.runFinalization() может быть полезна в тестах, профилировании и при ручном контроле над ресурсами во время разработки

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥1
ClassLoader.getResources()

ClassLoader.getResources() находит все ресурсы с указанным именем в classpath и возвращает Enumeration<URL>. Это полезно для загрузки всех версий конфигурационных файлов, плагинов или ресурсов из JAR-файлов и папок одновременно

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
⚙️ Class.getNestMembers()

Class.getNestMembers() возвращает массив всех классов, принадлежащих одной «группе вложенности» (nest) — то есть тех, кто может делиться приватными методами и полями друг с другом. Это полезно для анализа доступа между вложенными классами и для инструментов байткод-анализа.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
⚙️ Class.isHidden()

Class.isHidden() проверяет, является ли класс скрытым — то есть загруженным как временный или внутренний, без явного имени в classpath. Это полезно при работе с динамической генерацией байткода, шейпингом JIT-классов и JVM-инструментами.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Что будет выведено при выполнении кода?

Пояснение
⬇️
Статический блок выполняется один раз при первом обращении к классу.
Блок инициализации экземпляра {} выполняется перед каждым вызовом конструктора, при создании объекта. Поэтому: один static, два instance, два constructor.


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🚫 Антипаттерн недели: Нарушение принципа инкапсуляции через public поля

В Java открытие полей класса как public — плохая практика. Это нарушает инкапсуляцию и делает объект уязвимым к неконтролируемым изменениям извне.

✔️ Используйте private поля и getter/setter-методы для доступа и контроля над значениями.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
⚙️ Class.isSynthetic()

Class.isSynthetic() возвращает true, если класс был создан компилятором и не существует в исходном коде напрямую. Это полезно для анализа байткода, фреймворков и генераторов кода, особенно при работе с лямбдами, вложенными классами и bridge-методами

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤‍🔥1
➡️ Строковые шаблоны (Preview)

Строковые шаблоны (string templates) — новая функция в режиме preview, упрощающая создание строк с вычисляемыми значениями.

🗣️ Ранее используемая в Java конкатенация приводила к сложному коду, тогда как строковая интерполяция в других языках сокращает код, но увеличивает риски безопасности.

ℹ️ Шаблонные выражения сочетают лаконичность интерполяции и высокую безопасность.

String name = "Joan";
String info = STR."My name is \{name}";
assert info.equals("My name is Joan"); // true


Выражение использует обработчик STR и встроенное выражение {name}, которое может включать строки, арифметику, методы и поля. Обработчики выполняются динамически и обеспечивают безопасность кода. Шаблоны не работают без обработчика, отвечающего за интерполяцию и валидацию.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
⚙️ System.identityHashCode()

System.identityHashCode() возвращает хеш-код объекта, основанный на его реальном адресе в памяти, независимо от переопределения hashCode(). Это полезно для диагностики, дебага, трекинга объектов и работы с объектами, у которых переопределён hashCode() нестандартным образом

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8