Java | Фишки и трюки
Ir al canal en Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna
Mostrar más6 949
Suscriptores
-124 horas
-137 días
+1430 días
Archivo de publicaciones
6 949
Кредитная карта 180 дней без % от Банка "Открытие"
Бесплатное обслуживание навсегда и снятие наличных за 0₽ в первый месяц.
Подать заявку
Финансовые услуги оказывает: ПАО Банк "ФК Открытие"
#реклама
open.ru
О рекламодателе
6 949
Несколько способов для избежания NullPointerException:
👉 Используйте
Optional из пакета java.util.
👉 При сравнении константы с переменной пришедшей из вне, нужно вызывать equals() на константе.
👉 А при сравнении двух переменных используйте java.util.Objects#equals.
👉 Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.
👉 Вызывайте методы equals() и equalsIgnoreCase() на известных объектах.
👉 Применяйте valueOf() вместо toString().
👉 Воспользуйтесь аннотациями @NotNull и @Nullable на основе IDE.
👉 При возврате из метода коллекций, не стоит возвращать null, лучше пустую коллекцию (java.util.Collections#emptyList).6 949
Каналы любого уважающего себя разработчика:
Java Developer — поможет узнать обо всех тонкостях и секретах языка Java.
Python Developer — научит программировать на Python как настоящий разработчик.
Подписывайся и прокачивай свои навыки👇🏻
6 949
Retrofit - это библиотека для работы с HTTP-запросами в Java и Android, разработанная компанией Square. Основной целью Retrofit является упрощение выполнения сетевых запросов и преобразование HTTP-ответов в объекты Java. Retrofit использует аннотации Java для определения типа запроса, параметров, URL и других свойств.
Retrofit предоставляет удобный способ выполнения асинхронных запросов. Вы можете использовать
Call как для выполнения синхронного вызова (call.execute()), так и для выполнения запросов асинхронно (call.enqueue(...)).
Retrofit поддерживает использование интерсепторов для манипуляции запросами и ответами. Это может быть полезно для добавления заголовков, логирования и других операций.
Библиотека Retrofit предоставляет удобные средства для работы с сетевыми запросами, уменьшая объем необходимого кода и обеспечивая чистый и читаемый интерфейс для взаимодействия с удаленными API.6 949
class Cat {
public static void mew() {
System.out.println("Meow");
}
}
class SimonsCat extends Cat {
public static void mew() { }
}
public class Mew {
public static void main(String[] args) {
Cat cat = new Cat();
Cat simonsCat = new SimonsCat();
cat.mew();
simonsCat.mew();
}
}6 949
Контракт метода hashCode
Для реализации хэш-функции в спецификации языка определены следующие правила:
1️⃣ вызов метода
hashCode один и более раз над одним и тем же объектом должен возвращать одно и то же хэш-значение, при условии что поля объекта, участвующие в вычислении значения, не изменялись.
2️⃣ вызов метода hashCode над двумя объектами должен всегда возвращать одно и то же число, если эти объекты равны (вызов метода equals для этих объектов возвращает true).
3️⃣ вызов метода hashCode над двумя неравными между собой объектами должен возвращать разные хэш-значения. Хотя это требование и не является обязательным, следует учитывать, что его выполнение положительно повлияет на производительность работы хэш-таблиц.6 949
HttpClient представляет собой класс, введенный в Java 11, который предоставляет более современный и гибкий способ для выполнения HTTP-запросов и обработки HTTP-ответов. Он заменяет устаревший
HttpURLConnection и предоставляет более удобный интерфейс для работы с сетевыми операциями.
HttpClient также поддерживает асинхронные операции, позволяя выполнять запросы асинхронно с использованием CompletableFuture.6 949
🎄 Как насчет ежедневных best practices вплоть до Нового Года?
Новый день = новая возможность сделать твой код чуточку лучше!
Присоединяйся и открывай DMDEV ADVENT CALENDAR 🎁
6 949
Ромб
Интересная задача для тренеровки мозга. Нужно в ASCII-графике (скажем так) вывести ромб заданной размерности.
Не смотрите сразу решение, попытайтесь решить сами. Код вашего решения пишите в комментах, интересно как еще можно это сделать.
* *** ***** ******* ***** *** *Алгоритм: поместим центр координат в центр ромба, в результате для каждой из 4х плоскостей мы увидим закономерность: там где сумма x и y (без знака) меньше или равна половине размерности ромба, там стоит *, иначе пробел.
6 949
Цепочка методов (Method chaining) — это общий синтаксис для нескольких вызовов методов в объектно-ориентированных языках программирования. Каждый метод возвращает объект, что позволяет объединить вызовы в один оператор без необходимости использования переменных для хранения промежуточных результатов.
Пример для String:
text = text
.trim()
.replace("?", "")
.replace(" ", "-")
.toLowerCase();
Для того чтобы сделать такую штуку в своем классе, нужно что бы каждый метод возвращал из метода ссылку на текущий объект (this).6 949
Старт подготовительного курса по Java-разработке.
⏰ Когда: уже 12 декабря.
Даем: 62 урока с практикой в браузере, 3 онлайн вебинара и 1 сессию лайвкодинга с практикующим разработчиком.
Получаем: крепкие знания базы языка, умение понимать код и первую программу на Java, написанную вместе с наставником.
Всего 990 ₽ и ваше жгучее желание начать. Приходите с любым бэкграундом: нам не важны возраст, пол, образование и текущая профессия.
Запишитесь прямо сейчас!
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
6 949
Класс Properties
В Java класс Properties представляет собой таблицу хэш-значений ключ-значение. Он является частью пакета
java.util, и обычно используется для работы с конфигурационными файлами, настройками приложений и другими данными в формате ключ-значение.
Некоторые методы класса Properties:
setProperty(String key, String value) - добавление или изменение значения ключа.
getProperty(String key) - получение значения по ключу.
load(InputStream in) - загрузка свойств из InputStream.
store(OutputStream out, String comments) - сохранение свойств в OutputStream.
defaults(Properties defaults) - устанавливает значения по умолчанию, которые будут использоваться при поиске значения для ключа, если оно не найдено в текущих свойствах.
Пример файла Properties:
version=1.0 name=TestApp
6 949
Мультипаспорт не обещаем, зато визу в любую страну — легко
Вы просто говорите куда, а все сложности с оформлением мы берём на себя. Наши клиенты и в США летают, и даже на Марс при желании организуем.
Переходи в Travelers, и тогда головная боль с ВНЖ обойдет тебя стороной. Проверено сотнями клиентов.
Кстати, карту иностранного банка делаем всего за неделю и почти за спасибо.
P.S. Да, это знак. Хватит откладывать на потом, действуй уже — Travelers
6 949
Метод dropWhile был введен в интерфейсе Stream в JDK 9. Этот метод позволяет пропускать элементы в начале потока данных, пока они удовлетворяют определенному условию, и возвращает новый поток, начиная с первого элемента, который не соответствует условию.
В нашем примере метод dropWhile используется для пропуска элементов в потоке до тех пор, пока они меньше 0. После первого элемента, не соответствующего условию, оставшиеся элементы добавляются в новый поток.
6 949
Полезный пост для тех, кто хочет стать Java-разработчиком с нуля или вырасти до уровня Middle+ без вложений 👇🏻
Школа IT Mentor открывает набор на курс «Java-разработчик» - оплата обучения происходит только после трудоустройства. Первая зарплата - от 150 000 рублей. 💸
На курсе тебя ждут:
- Java Core, JDBC, HIBERNATE, SPRING(Core, MVC, Security), SPRING BOOT, GIT,
- погружение в процесс разработки на реальном проекте - от системы управления до тестирования,
- подготовка к собеседованиям и гарантия трудоустройства: не нашел работу - ничего не должен,
- помощь в составлении резюме и карьерные консультации,
- сообщество студентов вашего уровня, которое не сгорает даже после прохождения обучения.
Курс подойдет тем, кто хочет войти в IT, cтудентам ВУЗов и выпускникам образовательных программ, которые затрудняются найти работу. Junior- и Middle- программистам, которые хотят выйти на новый уровень дохода. Разработчикам из других ниш, которые хотят перейти в backend-разработку. 🔥
👉🏻 Переходи на сайт, чтобы оставить заявку на обучение и подробнее ознакомиться с программой.
Количество мест ограничено. Рассматриваются кандидаты от 18 до 50 лет.
»Перейти на сайт
Реклама. ИП Тюльников ИНН 526223159257.
6 949
⌨️ Class Loaders
В Java, Class Loader (загрузчик классов) является частью Java Runtime Environment (JRE), которая ответственна за загрузку классов в виртуальную машину Java (JVM) во время выполнения программы. Class Loader осуществляет поиск и загрузку классов в память JVM по их именам.
Class Loader имеет иерархическую структуру и состоит из трех основных типов:
1️⃣ Bootstrap Class Loader (Загрузчик базовых классов): Этот загрузчик является частью ядра JVM и отвечает за загрузку системных классов Java, таких как
java.lang.Object, java.lang.String и другие. Он является самым высоким в иерархии загрузчиком.
2️⃣ Extension Class Loader (Загрузчик расширений): Этот загрузчик наследуется от Bootstrap Class Loader и загружает классы из расширенной библиотеки Java (расположенной в директории jre/lib/ext).
3️⃣ Application Class Loader (Загрузчик приложений): Также известный как System Class Loader, этот загрузчик загружает классы из путей, указанных в переменной окружения CLASSPATH. Он также загружает классы из текущего рабочего каталога приложения.
Когда Java-программа запускается, система Class Loader следует иерархии загрузки классов. Если класс не найден в одном загрузчике, система пытается найти его в следующем в иерархии.
Процесс загрузки класса включает в себя три этапа:
1️⃣ Загрузка (Loading): Загрузчик находит байт-код класса и загружает его в память.
2️⃣ Связывание (Linking): На этом этапе проводится проверка байт-кода, выделение памяти для статических полей, и разрешение ссылок на другие классы.
3️⃣ Инициализация (Initialization): Выполняются статические блоки кода и инициализируются статические переменные.
Класс ClassLoader предоставляет методы для динамической загрузки классов во время выполнения. Работа с Class Loader'ами может быть полезной, например, при реализации механизмов плагинов и динамической загрузки классов.6 949
Не трогайте, это на Новый год!
Профессия «Java-разработчик»
🎁 🎊 Получите скидку до 30 000 р. и кэшбек на карту до 25 000 р. при успешном прохождении обучения!
Освойте язык крупного бизнеса и финансовых технологий и научитесь разрабатывать веб-приложения на фреймворке Spring.
Уже во время обучения вы вступите в программу «Карьерный трек», чтобы найти свою первую работу в IT.
Вы научитесь подбирать правильные структуры для хранения и обработки данных, познакомитесь с автоматизированным тестированием и напишите свои первые модульные тесты.
📌 Пройдите 5 бесплатных уроков и поймите, подходит ли вам профессия!
Реклама. АНПОО "ХЕКСЛЕТ КОЛЛЕДЖ". ИНН 7839056670.
6 949
JIT-компилятор
На начальном этапе выполнения программы байт-код интерпретируется JVM. Это позволяет быстро запускать программы без необходимости предварительной компиляции в машинный код.
JIT-компилятор является ключевым элементом виртуальной машины Java (JVM). Он компилирует байт-код часто вызываемых методов в машинный код во время выполнения. Следовательно, он отвечает за оптимизацию программ Java.
JVM автоматически отслеживает, какие методы выполняются. Как только метод становится пригодным для JIT-компиляции, его планируется компилировать в машинный код. Этот метод так же известен как горячий метод. Эта компиляция в машинный код происходит в отдельном потоке JVM. В результате он не прерывает выполнение текущей программы. После компиляции в машинный код, метод работает быстрее.
Таким образом, JIT-компиляция в Java позволяет достичь компромисса между портативностью байт-кода и производительностью машинного кода. Этот механизм позволяет Java-приложениям быть эффективными на различных платформах, так как байт-код может быть выполнен на любой машине, в то время как JIT-компиляция обеспечивает высокую производительность приложений в процессе их выполнения.
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
