Библиотека Java разработчика
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
Show more📈 Analytical overview of Telegram channel Библиотека Java разработчика
Channel Библиотека Java разработчика (@bookjava) in the Russian language segment is an active participant. Currently, the community unites 10 266 subscribers, ranking 12 016 in the Technologies & Applications category and 63 847 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 10 266 subscribers.
According to the latest data from 13 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 13 over the last 30 days and by 3 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 8.59%. Within the first 24 hours after publication, content typically collects 4.32% reactions from the total number of subscribers.
- Post reach: On average, each post receives 882 views. Within the first day, a publication typically gains 443 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 7.
- Thematic interests: Content is focused on key topics such as string, интерфейс, строка, boot, api.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.
По всем вопросам @evgenycarter
РКН clck.ru/3KoGeP”
Thanks to the high frequency of updates (latest data received on 14 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex).
Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException:
void method() {
try {
//...
} catch (FileNotFoundException ex) {
//...
} catch (IOException ex) {
//...
}
}List<String> list = new LinkedList<>();
list.add(“foo“);
Здесь метод add вызывается общий для всех списков, но добавлен будет именно элемент связного списка.
Выбор конкретного метода происходит в последний момент, в процессе работы программы, в зависимости от типа объекта. Это называется позднее или динамическое связывание методов (late binding, dynamic dispatch).
Переопределение имеет непосредственное отношение к принципу подстановки Лисков (LSP): в хорошем объектно-ориентированном коде для вызывающего кода переопределенный метод не должен быть отличим от оригинального.
Переопределенный метод принято снабжать аннотацией @Override. Ее отсутствие допускается, но компиляция не перегружающего метода с такой аннотацией приведет к ошибке.
При переопределении можно сузить набор выбрасываемых исключений или тип результата, и заменить модификатор доступа на менее строгий.
Статические методы нельзя переопределить, можно только перегрузить.
О внутренностях процесса связывания можно почитать в этой статье.
#Классыclass Main {
public static void main(String[] args) throws Exception {
int[] firstArray = new int[]{52, 21, 94, 29, 91};
int[] secondArray = new int[]{82, 74, 51, 39, 23};
int element = 21;
for (int i = 0; i < firstArray.length; i++) {
if (firstArray[i] == element){
System.out.println(element + " in first array");
}
}
for (int i = 0; i < secondArray.length; i++) {
if (secondArray[i] == element){
System.out.println(element + " in second array");
}
}
// Вывод : 21 in first array
}
}
#java
Подписывайтесь на канал 👉@coddy_academyprintln с параметром char[] и со String, так как null может быть и тем и другим.
#Классыimport java.io.File;
class Main {
public static void main(String[] args) throws Exception {
File file = new File("delete_folder");
if (file.delete()){
System.out.println("Директория успешно удалена");
}
}
}
#java
Подписывайтесь на канал 👉@coddy_academyjava.*;
🔘 Platform – отвечает за загрузку стандартных классов Java-рантайма. До Java 9 назывался Extension и занимался загрузкой расширений. Гарантируется, что ему будут видны (но не факт что загружены непосредственно им) все стандартные классы Java SE и JDK;
🔘 System (Application) – загружает классы из classpath конкретного приложения;
Перед тем как загрузить класс, ClassLoader проверит, не может ли это сделать его родитель. Если класс уже загружен, то загрузка не потребуется.
Иллюстрация смысла этой иерархии – загрузчики web-сервера Apache Tomcat. Прикладной код каждого web-приложения работает на своем отдельном загрузчике изолированно от других приложений. Даже один и тот же класс-singleton у каждого приложения будет собственный. Системные классы и общие библиотеки при том грузятся их родительскими загрузчиками, только один раз для сервера.
#КлассыloadClass бинарное имя класса.
В URLClassLoader и стандартных загрузчиках JVM источником класса служит .class-файл. Другие загрузчики в своей реализации используют и другие источники: это может быть сетевой ресурс, или класс может генерироваться в рантайме. К примеру загрузчик из javassist специализируется на создании классов на лету.
В результате загрузки создается экземпляр класса Class. В отличие от обычных объектов, такие экземпляры хранятся не в куче, а в permgen/metaspace. Class может быть выгружен, когда загрузивший его ClassLoader стал мусором.
#Классыenum Foo всегда неявно наследуется от Enum<Foo> – то есть перечислением нельзя расширить другой класс, но всё еще можно реализовать интерфейсы. Из-за generic-параметра разные перечисления не имеют общего предка кроме Object.
Является Comparable (сравнивается позиция по порядку объявления значений) и Serializable (сериализуется только имя константы).
Имеет только заранее заданный набор значений. Значения неявно public static final и это нельзя переопределить. Для инициализации констант действуют все правила статической инициализации.
Копии элементов перечисления не создаются даже при десериализации. Вот почему Effective Java предлагает использовать для сериализуемого синглтона enum.
Экземпляры хранят свойства name и ordinal – имя и порядковый номер константы. Статический метод values вернет список всех констант, valueOf – константу по имени. Спецификация.
Финализация и клонирование перечислений запрещены.
#Классыclass Main {
public static int[] get_summ_and_diff(int x, int y){
int summ = x + y;
int diff = x - y;
return new int[]{summ, diff};
}
public static void main(String[] args) throws Exception {
int[] diff_and_summ = get_summ_and_diff(10, 5);
System.out.println(diff_and_summ[0]);
System.out.println(diff_and_summ[1]);
// Вывод :
// 15
// 5
}
}
#java
Подписывайтесь на канал 👉@coddy_academynull, но с учетом типа:
🔘 Сравнивать с null или переменной этого же класса;
🔘 Приводить к типу-родителю (upcast) или типу-наследнику (downcast), учитывая границы generic-параметров при наличии;
🔘 Обращаться к членам экземпляра и получать NullPointerException;
🔘 Применять instanceof и получать false
🔘 Использовать как параметр для методов и других совместимых с типом операторов
В-третьих, можно обращаться к статическим членам класса. В вопросе подразумевается именно эта интересная часть. Это безопасно, NullPointerException не возникнет, но для упрощения отладки и из-за отсутствия переопределения статических членов рекомендуется так не делать. Вместо этого обращайтесь к статике явно через имя класса, либо неявно, добавив для класса import static.
#Классы
Available now! Telegram Research 2025 — the year's key insights 
