Функция isBlank()
Функция isBlank() используется для проверки строки на пустоту или наличие только пробельных символов. Она была добавлена в Java 11
в класс String
.
Как видно из примера, метод isBlank()
возвращает true
если строка пустая или содержит только пробельные символы. Это удобно использовать для проверки строк перед дальнейшей обработкой.
🔥 Хардовый тест для разработчиков🔥
📕 Ответьте на 9 вопросов за 20 мин и проверьте, насколько вы готовы к обучению на курсе - «Архитектура и шаблоны проектирования»
💻 Научитесь применять шаблоны проектирования в разработках! Благодаря этому навыку вы сможете писать чистый код, экономить время на разработке и быстро «пересаживаться» на любой язык программирования.
🏵 Ждем всех, кто хочет вырасти до Middle+ разработчика или архитектора ПО!
👉 ПРОЙТИ ТЕСТ https://otus.pw/yFDQa/
💣 Пройдете тест, получите демо-ролик о занятиях на курсе и Welcome-скидку.
✅ Также вам откроется доступ к открытым урокам курса.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8K6g1T
#вопросы_с_собеседований
Может ли статический метод быть переопределён или перегружен?
Cтатические методы не могут быть переопределены или перегружены в подклассах.
Причина в том, что статические методы принадлежат классу, а не объекту. Они вызываются через имя класса, а не через ссылку на объект.
Переопределение и перегрузка работают только с нестатическими методами в иерархии классов. При вызове нестатического метода используется динамическая диспетчеризация для определения нужной реализации метода в runtime.
Но со статическими методами так не работает. Компилятор связывает вызов статического метода с конкретным классом во время компиляции. Поэтому статические методы не могут быть переопределены или перегружены.
Метод ensureCapacity
Метод ensureCapacity() используется для выделения заранее зарезервированной емкости (capacity) для ArrayList и Vector.
Основные моменты:
— Позволяет оптимизировать производительность за счет предварительного выделения памяти.
— Принимает в качестве аргумента желаемый минимальный размер capacity
.
— Реальный размер выделяемой памяти может быть больше указанного.
— Метод безопасен для использования — если не нужно, то просто ничего не делает.
#это_база
Collections.emptyList()
Collections.emptyList() возвращает пустой неизменяемый список.
Это статический фабричный метод из класса Collections
, который возвращает пустой список типа List<Object>
.
Основные моменты:
— Возвращает пустой список, а не null
. Это полезно, чтобы избежать проверок на null
.
— Список неизменяемый (immutable
). Нельзя добавлять или удалять элементы из него.
— Работает быстрее, чем создание нового списка через new ArrayList()
.
— Может использоваться как значение по умолчанию или стартовое значение для списка.
#это_база
SequenceInputStream
SequenceInputStream используется для последовательного чтения данных из нескольких потоков ввода, как из одного. Это позволяет объединять данные из разных источников в один поток.
В примере мы создаем два массива байтов buf1
и buf2
, оборачиваем их в ByteArrayInputStream
. Затем передаем эти потоки в SequenceInputStream
.
При чтении из SequenceInputStream
сначала будут прочитаны данные из is1
, затем из is2
. Таким образом данные объединяются в один поток для удобства чтения.
А ты точно джун?
Развивая навыки в разработке, важно четко понимать, на каком ты уровне! Один из способов проверки – профессиональный тест.
Переходи в бот @test_your_java_bot, он поможет определить, на каком уровне Java-разработки ты находишься. В тесте – задачи, которые собрали джависты крупных IT-команд. Сможешь решить их все – любые вершины программирования твои.
Бонус в конце – список материалов, собранный опытными джавистами. Там найдутся рекомендации как для новичков, так и для опытных разработчиков. Говорят, если прочитать весь список, можно сразу стать тимлидом.
@test_your_java_bot
Погрузитесь в мир ☕️ Java и станьте Java-разработчиком за 4 месяца с курсом от Merion Academy!
Все, кому интересно, получат 🚀 3 бесплатных урока, 📍 Мы расскажем про то, что из себя представляет язык Java и его базовый синтаксис.
📍 Установите Java и среду разработки где будете писать код.
📍 Напишете свою первую консольную программу, а после нее и REST API приложение.
📍 А в конце закрепите полученные знания.
🎁 Бонус – интенсив по развитию карьеры, где HR-эксперты расскажут как создавать сильные резюме и проходить собеседования.
📜 Плюс гайд по базовому синтакису языка.
🕺У ребят одна из самых доступных цен, которая в разы ниже, чем в других онлайн-школах, а еще есть рассрочка для тех, кто хочет учиться сейчас и платить по чуть-чуть ежемесячно.
👉 Регистрируйтесь по ссылке чтобы забрать бесплатные уроки, интенсив по карьере и гайд.
Merion Academy – это экосистема доступного образования, которая включает в себя:
📍IT-базу знаний с полезными статьями.
📍merionacademy">Youtube-канал ,где простыми словами говорят о сложных вещах.
📍IT-академию, где обучат востребованным направлениям по самым доступным ценам.
Класс java.lang
Класс java.lang — это базовый пакет, который автоматически импортируется в любую программу на Java.
Содержит фундаментальные классы, как Object
, String
, Integer
и т. д., определяет общие классы-исключения, такие как NullPointerException
, ArithmeticException
, класс Math
с математическими функциями, System
для взаимодействия с системой.
Также включает класс Thread
для многопоточного программирования, интерфейсы Cloneable
, Runnable
, Comparable
, определяет класс Class
, представляющий классы времени выполнения.
#это_база
Класс java.util.Date
Класс java.util.Date представляет дату и время. Date
хранит дату и время в миллисекундах с 1 января 1970 года 00:00:00 по UTC.
Конструкторы Date()
и Date(long date)
позволяют создать объект Date
с текущей датой/временем или указанной датой/временем в миллисекундах.
Методы getTime()
и setTime(long time)
позволяют получить и установить время в миллисекундах.
Методы как getDay()
, getMonth()
и т. д. позволяют получить отдельные компоненты даты/времени.
Методы before()
и after()
позволяют сравнивать даты.
#это_база
Класс LocalDateTime
Класс LocalDateTime используется для работы с датой и временем без учета часового пояса.
Он появился в Java 8 в пакете java.time
и является частью новой date/time API, которая пришла на смену устаревшим классам Date
и Calendar
.
Основные возможности класса LocalDateTime
:
— Хранение даты и времени с точностью до наносекунд.
— Получение различных компонентов даты/времени (год, месяц, день недели и т. д.).
— Выполнение операций сложения и вычитания дат и интервалов.
— Сравнение и сортировка дат по времени.
— Форматирование и парсинг строк по заданному шаблону.
#вопросы_с_собеседований
Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?
— Iterator предназначен только для итерации по коллекции, а не для модификации коллекции. Добавление элементов через итератор нарушило бы принцип единственной ответственности.
— Многие коллекции, например ArrayList, реализуются на основе массива. Добавление элемента в середину массива — дорогая операция, требующая создания нового массива и копирования всех элементов.
— Если позволить итератору изменять коллекцию, это может привести к непредсказуемому поведению и ошибкам, особенно при работе с многопоточностью.
— Collection уже предоставляет методы add() и remove() для модификации коллекции, поэтому нет необходимости дублировать эту функциональность в Iterator.
⁉️ Как создать TCP/IP-серверное приложение в Java?
Стек протоколов TCP/IP позволяет обеспечивать доставку информации в необходимое место назначения. Умение с ней работать – важный скилл для разработчика.
🦾 Изучите эту технологию на бесплатном открытом уроке «TCP/IP-сервер в Java» от OTUS.
На эфире:
- Посмотрим, какие есть варианты реализации TCP/IP-серверного приложения в Java.
- Изучим пару примеров, их особенности и области применения.
📌 Занятие пройдёт 17 октября в 20:00 мск в рамках курса «Java Developer. Professional». После бесплатного вебинара вы сможете продолжить обучение на курсе в рассрочку.
👉 Зарегистрируйтесь на событие прямо сейчас, а мы напомним в день вебинара.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KMEsM
Semaphore
Semaphore — это класс, который позволяет ограничивать количество потоков, одновременно работающих с каким-либо ресурсом.
Поток должен получить разрешение, чтобы войти в критическую секцию.Semaphore
управляет набором разрешений (permits), а конструктор принимает количество разрешений.
Если разрешений нет, поток ставится в очередь до освобождения.
Метод acquire()
получает разрешение, release()
— освобождает.
#это_база
Метод isSorted()
Метод isSorted() используется для проверки, отсортирован ли массив или коллекция.
Метод принадлежит интерфейсу Collection
и возвращает boolean
значение.
Проверяется, находятся ли элементы коллекции в порядке возрастания. Для числовых типов сравниваются значения, для объектов — их natural ordering.
Работает за линейное время O(n), где n — размер коллекции.
Может использоваться для предварительной проверки перед вызовом sorted()
или sort()
.
#это_база
Ключевое слово var
Ключевое слово var используется для объявления переменных с неявным типом.
Это позволяет компилятору автоматически выводить тип переменной исходя из присваиваемого значения.
Как видно из примера, используя var
не нужно явно указывать тип переменной. Компилятор сам определит его исходя из присваиваемого значения. Это упрощает код в некоторых случаях.
#вопросы_с_собеседований
Расскажите про приведение типов. Что такое понижение и повышение типа?
Приведение типов — это преобразование переменной одного типа в другой.
Существует два вида приведения типов:
— Повышение типа (widening): автоматическое преобразование типа в другой, более широкий тип. Например, int в long. При этом не теряется точность, так как широкий тип может представить все значения узкого типа.
— Понижение типа (narrowing): явное приведение к более узкому типу, например double в int. Здесь возможна потеря точности, поэтому требуется явное приведение в коде.
Повышение типа безопасно, компилятор делает его автоматически.
Понижение опасно потерей данных, поэтому разработчик должен явно указать такое приведение в коде, чтобы показать, что он контролирует возможную потерю точности.
Java-разработчиков в InsurTech ждут новые драйвовые вызовы.
Лидер индустрии в России ВСК запускает ONE DAY OFFER. Масштабное Agile-коммьюнити, проекты без монолитных решений и комфортные условия. Если получите оффер, вас ждет:
— Место в компании с золотом в рейтинге работодателей Forbes;
— Работа в гибкой методологии SAFe*;
— Комфортный график — удаленка или гибрид;
— Собственная DevOps-платформа (с поддержкой Kafka, Camunda, PostgreSQL и не только);
— Удобная микросервисная архитектура — включает больше 150 приложений и 800 сервисов;
— ДМС, программы лояльности и скидки у партнеров ВСК.
Еще есть вакансии в системной аналитике, тестировании, разработке C# и Data Science.
Подача заявок до 26 октября — поторопитесь! Регистрируйтесь: https://u.to/ThEIIA
Реклама, САО «ВСК», ИНН 7710026574, erid 2VtzquyC4o6
Всем привет, мы исследовательское агентство SmartMinds и сейчас проводим опрос среди IT специалистов. Что хотим узнать: что важно при выборе работодателя, какие каналы являются эффективными при поиске работы и ходите ли вы на мероприятия для IT. Опрос анонимный, займет не более 3-х минут и мы будем благодарны всем, кто примет участие ❤️
Пройти опрос
У вас есть готовый ИТ-продукт? Сделайте пилот с ВТБ!
Акселератор ВТБ приглашает технологические стартапы и компании протестировать свои решения на бизнес-процессах и клиентах банка. А в случае успешного пилота – стать поставщиком услуги/лицензии/продукта.
Подайте заявку на сайте, пройдите экспертизу и сделайте быстрый пилот с Акселератором ВТБ.
Преимущества банка:
- коммерческие пилоты
- fast track по запуску пилотов
- экспертиза по развитию вашего продукта
Действуем вместе!
PushbackInputStream
PushbackInputStream используется для возврата байтов обратно в поток ввода.
Это позволяет прочитать несколько байтов, проанализировать их, а затем вернуть их обратно, если нужно перечитать их позже.
#вопросы_с_собеседований
В каких состояниях может пребывать поток?
Поток в Java может находиться в следующих состояниях:
— New (Новый): поток создан, но еще не запущен.
— Runnable (Готов к выполнению): поток запущен, но в данный момент не выполняется, а ожидает выделения процессорного времени.
— Running (Выполняется): поток выполняется в настоящий момент.
— Blocked (Заблокирован): поток заблокирован, ожидая завершения какого-либо события, например завершения операции ввода-вывода.
— Waiting (Ожидание): поток ожидает другого потока, например, ожидая сигнала notify от другого потока.
— Timed Waiting (Ожидание с таймаутом): то же, что Waiting, но с указанием таймаута.
— Terminated (Завершен): выполнение потока завершено, например, после завершения метода run().
#вопросы_с_собеседований
Что может произойти если два потока будут выполнять один и тот же код в программе?
В многопоточных приложениях возможны ситуации, когда два или более потока пытаются получить доступ и изменить общие данные одновременно.
Это может привести к непредсказуемому поведению и ошибкам, таким как race condition или deadlock.
Чтобы избежать таких проблем, нужно предотвратить одновременный доступ к общим данным с помощью синхронизации, например используя мониторы или блокировки.
Также полезны инструменты высокого уровня для синхронизации, такие как семафоры, очереди производителя-потребителя и другие коллекции из java.util.concurrent.
Важно тщательно продумывать доступ к общим данным в многопоточных приложениях, чтобы избежать некорректного поведения. Хороший дизайн многопоточности поможет создать надежное и эффективное приложение.
👋Бэкендер, пора расти!
👉Узнайте как ЗАВТРА, 17.10 в 20:00 мск на бесплатном вебинаре онлайн-курса «Clojure Developer» — «Особенности Clojure: сфера разработки, основные фишки языка»: регистрация
На бесплатном вебинаре мы:
— рассмотрим, с какими задачами сталкиваются разработчики Clojure и какие основные особенности отличают его от других бэкендовых языков.
— обсудим преимущества, которые предлагает Clojure по сравнению с другими языками.
— изучим, какие возможности и перспективы он предлагает для разработчиков.
🔥После вебинара вы сможете продолжить обучение на курсе по спеццене, в том числе, в рассрочку.
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: LjN8KZv52
Класс ZonedDateTime
Класс ZonedDateTime используется для работы с датой и временем с учетом часового пояса. Он также появился в Java 8 и является частью date/time API.
Основные возможности класса ZonedDateTime
:
— Хранение даты, времени и часового пояса.
— Автоматический учет перехода на летнее/зимнее время.
— Получение даты/времени в разных часовых поясах.
— Вычисление разницы во времени между часовыми поясами.
В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн.
Чтобы не пропустить полезные — сохраните канал IT мероприятия России
Анонсы вебинаров, хакатонов, конференций, мастер-классов и других событий в IT. Ивенты от гигантов индустрии и лучших специалистов по кодингу.
Всё публикуют здесь.
#вопросы_с_собеседований
Почему Map не наследуется от Collection?
Это связано с тем, что Map представляет отображение ключ-значение, в то время как Collection представляет коллекцию объектов.
Коллекции работают с объектами на основе их позиции в коллекции, тогда как в Map объекты доступны по ключу. Поэтому операции, определенные в Collection, такие как добавление, получение по индексу и итерация, не имеют смысла для Map.
Вместо этого в Map определены операции для работы с парами ключ-значение, такие как put(), get(), containsKey() и другие. Наследование Map от Collection привело бы к наследованию неподходящих методов.
Инвалидация итераторов
Инвалидация итераторов - это ситуация, когда итератор, используемый для доступа к элементам контейнера, становится некорректным или недействительным.
Она может привести к непредсказуемому поведению и ошибкам в программе, поэтому важно понимать, какие операции могут вызвать инвалидацию для каждого конкретного контейнера.
В этом примере обращение к элементу через итератор *it
может вызвать непредсказуемое поведение или ошибку выполнения программы, ведь после вставки нового элемента итератор it
становится недействительным, так как вставка нового элемента приводит к перераспределению памяти внутри вектора.
Чтобы узнать всё о «трёх китах» создания IT-продукта — анализе, разработке и тестировании — можно долго искать информацию самостоятельно, а можно просто прийти на IT Talk by Sber в Ростове-на-Дону 😏
Топовые спикеры Сбера расскажут на примерах собственных продуктов о:
✔️ Лучших практиках в части аналитики и принципах организации работы продуктовых команд по стримам. Спикер — системный аналитик команды ИКАР Артур Аветисов.
✔️ Популярных причинах, почему может тормозить релизный процесс, и методах борьбы с этой проблемой. Спикер — QA Lead команды СберДруг Михаил Новотарский.
✔️ Новых и невиданных аспектах Spring Security. Спикер — Java Lead в «Домклик» Павел Кислов.
В перерывах между докладами участников будут ждать кейтеринг, кофе-брейк, музыкальное выступление и классный нетворкинг. Встречаемся 19 октября в 18:00 в лофте «БИБЛИОТЕКА» по адресу: ул. 13-я Линия, 34.
Зарегистрироваться!
#вопросы_с_собеседований
Что такое Executor?
Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.
Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.
Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.