Java Geek
Відкрити в Telegram
Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter
Показати більше2 449
Підписники
Немає даних24 години
+27 днів
+530 день
Архів дописів
2 449
Какой самый надежный способ проверить, равны ли два значения типа double?
Наиболее надежный и точный способ проверить это — использовать
Dоuble.соmpare() и сравнить значение с нулем.
@java_geek2 449
Итератор
Итератор — это объект, который предоставляет доступ к элементам коллекции (например, списку, множеству или массиву) и позволяет последовательно перебирать эти элементы без необходимости знать внутреннюю структуру коллекции. Итераторы используются для упрощения работы с коллекциями и обеспечивают абстракцию доступа к элементам.
@java_geek
2 449
Класс java.lang
Это базовый пакет, который автоматически импортируется в любую программу на Java.
Содержит фундаментальные классы, как Object, String, Integer и т. д., определяет общие классы-исключения, такие как NullPointerException, ArithmeticException, класс Math с математическими функциями, System для взаимодействия с системой.
Также включает класс Thread для многопоточного программирования, интерфейсы Cloneable, Runnable, Comparable, определяет класс Class, представляющий классы времени выполнения.
@java_geek
2 449
Что будет, если добавлять элементы в TreeSet по возрастанию?
В основе
TreeSet лежит красно-черное дерево, которое умеет само себя балансировать. В итоге, TreeSet все равно в каком порядке вы добавляете в него элементы, преимущества этой структуры данных будут сохраняться.
@java_geek2 449
Класс FileWriter
Наследуется от класса
OutputStreamWriter, используется для записи потоков символов. Код на картинке создает файл с разрешением .txt и записывает в него текст, а после с помощью FileReader читает его из файла.
Класс имеет несколько конструкторов, а также список вспомогательных методов, которые можно использовать для управления файлами.
@java_geek2 449
Отложенная инициализация
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
@java_geek
2 449
Как получить текущее время с точностью до миллисекунд используя Date Time API?
👉@java_geek
2 449
Динамический массив
В Java динамический массив представляет собой структуру данных, которая позволяет хранить и управлять коллекцией элементов переменного размера.
Он реализуется с помощью класса
ArrayList. ArrayList представляет собой реализацию списка, который может изменять свой размер по мере необходимости.
👉@java_geek2 449
Узнаем IP-адрес своего компьютера
InetAddress.getLocalHost() используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.
👉@java_geek2 449
Познакомьтесь с основами востребованного языка программирования Java на бесплатном мини-курсе Skillbox! Узнайте, как Java-разработчики работают в офисе, на фрилансе, удалёнке, и что нужно для старта карьеры.
Бессрочный доступ за пару кликов: 👉 https://epic.st/F6t4bB
Сразу после регистрации пришлём гайд по профессии Java-разработчика 😉
Что вас ждёт:
✔️ Полезная теория
За 4 занятия изучите основы профессии и языка Java по видеоматериалам. Узнаете о перспективах языка и получите советы для старта карьеры.
✔️ Интересная практика
Напишете первые проекты: Telegram-бота, программу для обработки файлов и чат на Spring. Опыт и знания в IT не нужны для их выполнения — будут подробные инструкции от спикера.
✔️ Живой эфир с экспертом по Java
В финале в прямом эфире пообщаетесь с Даниилом Пилипенко, который более 19 лет работает в сфере Java и веб-разработки. Он ответит на вопросы о профессии, пройденном материале и практических работах.
🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год.
До встречи на мини-курсе. Старт после регистрации!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
2 449
При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
☕️ java.sql.Statement - для операторов SQL без параметров;
☕️ java.sql.PreparedStatement - для операторов SQL с параметрами и часто выполняемых операторов;
☕️ java.sql.CallableStatement - для исполнения хранимых в базе процедур.
Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection:
☕️ java.sql.createStatement() возвращает объект Statement;
☕️ java.sql.prepareStatement() возвращает объект PreparedStatement;
☕️ java.sql.prepareCall() возвращает объект CallableStatement;
👉@java_geek
2 449
Адаптер
Адаптер — это структурный паттерн проектирования, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он позволяет «преобразовать» интерфейс одного класса в интерфейс другого класса таким образом, чтобы они могли взаимодействовать без изменения существующего кода.
Паттерн Адаптер включает в себя два вида адаптеров:
☕ Классовый адаптер: использует наследование для адаптации интерфейса исходного класса к целевому интерфейсу. То есть, он наследует исходный класс и реализует целевой интерфейс.
☕ Объектный адаптер: использует композицию, чтобы включить объект исходного адаптер и реализует целевой интерфейс.
👉@java_geek
2 449
Какой способ клонирования предпочтительней?
Наиболее безопасным и, следовательно, предпочтительным способом клонирования является использование специализированного конструктора копирования:
• Отсутствие ошибок наследования (не нужно беспокоиться, что у наследников появятся новые поля, которые не будут склонированы через метод
clone());
• Поля для клонирования указываются явно;
• Возможность клонировать даже final поля.
@java_geek2 449
Что такое «ссылка на метод»?
Если существующий в классе метод уже делает все, что необходимо, то можно воспользоваться механизмом method reference (ссылка на метод) для непосредственной передачи этого метода. Такая ссылка передается в виде:
• имя_класса::имя_статического_метода для статического метода;
• объект_класса::имя_метода для метода экземпляра;
• название_класса::new для конструктора.
Результат будет в точности таким же, как в случае определения лямбда-выражения, которое вызывает этот метод.
Ссылки на методы потенциально более эффективны, чем использование лямбда-выражений. Кроме того, они предоставляют компилятору более качественную информацию о типе и при возможности выбора между использованием ссылки на существующий метод и использованием лямбда-выражения, следует всегда предпочитать использование ссылки на метод.
@java_geek
2 449
Как выбрать все элементы определенного каталога по критерию (например, с определенным расширением)?
Метод
File.listFiles() возвращает массив объектов File, содержащихся в каталоге. Метод может принимать в качестве параметра объект класса, реализующего FileFilter. Это позволяет включить в список только те элементы, для которых метод accept возвращает true (критерием может быть длина имени файла или его расширение).
@java_geek2 449
Какие преимущества есть у многопоточности?
1) Многопоточность позволяет приложению / программе всегда реагировать на ввод, даже если она уже выполняется с некоторыми фоновыми задачами;
2) Многопоточность позволяет быстрее выполнять задачи, поскольку потоки выполняются независимо;
3) Многопоточность обеспечивает лучшее использование кэш-памяти, поскольку потоки разделяют общие ресурсы памяти;
4) Многопоточность уменьшает количество требуемого сервера, поскольку один сервер может одновременно выполнять несколько потоков.
@java_geek
2 449
Записывайтесь на бесплатный мини-курс по Java-разработке с нуля: научим писать Telegram-ботов, программу для обработки данных и чат на Spring. Опыт и знания в IT не нужны для участия.
Получите доступ к занятиям за пару кликов: 👉 https://epic.st/AkN-qi
📌 На мини-курсе вы узнаете, в каких форматах могут работать Java-разработчики. Изучите основы языка и поймёте, что нужно для старта карьеры на фрилансе и удалёнке. Получите шанс освоить профессию с высокой зарплатой и гибким графиком.
— Формат мини-курса отлично подойдёт для обучения из любой точки мира. Смотрите видео в удобное время, а после выполняйте практические задания. В конце вас ждёт прямой эфир с экспертом, где он поделится профессиональными секретами, разберёт работы участников и ответит на вопросы.
🔔 Спикер — Даниил Пилипенко, основатель и директор центра подбора IT-специалистов SymbioWay. 19 лет работает в сфере Java и веб-разработки.
🎁 За время обучения вы получите 5 полезных материалов в подарок, сертификат на скидку 10 000 рублей на любой курс, персональную карьерную консультацию и доступ к изучению английского языка в Skillbox на год.
Сделайте первый шаг к карьере в IT!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
2 449
Что не так с кодом?
Он не скомпилируется. Это вопрос на знание иерархии исключений: FileNotFoundException унаследован от IOException, первый catch будет перехватывать все исключения, а в следующий блок catch управление передано не будет. Поэтому возникнет ошибка: exception FileNotFoundException has already been caught.
@java_geek
2 449
Как одной строчкой скопировать элементы любой collection в массив?
Ответ на картинке.
@java_geek
2 449
Возведение в степень
Возвести число в степень можно двумя способами:
1)простое умножение;
2)используя метод Math.pow() (двойное основание, двойной показатель степени).
Использование библиотечной функции рекомендуется только в случае крайней необходимости, например, в случае дробной или отрицательной степени.
Простое умножение в Java работает в 300-600 раз эффективнее, кроме того, его можно дополнительно оптимизировать.
@java_geek
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
