fa
Feedback
Java Geek

Java Geek

رفتن به کانال در Telegram

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter

نمایش بیشتر
2 380
مشترکین
-124 ساعت
-127 روز
-3530 روز
آرشیو پست ها
Дайте определение понятию «интерфейс». Какие модификаторы по умолчанию имеют поля и методы интерфейсов? Ключевое слово interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public. Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов. Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными public, статическими static и неизменяемыми final. @java_geek

Какие типы классов бывают в Java? ☕️ Top level class (Обычный класс): ✔️ Abstract class (Абстрактный класс); ✔️ Final class (Финализированный класс). ☕️ Interfaces (Интерфейс). ☕️ Enum (Перечисление). ☕️ Nested class (Вложенный класс): ✔️ Static nested class (Статический вложенный класс); ✔️ Member inner class (Простой внутренний класс); ✔️ Local inner class (Локальный класс); ✔️ Anonymous inner class (Анонимный класс). @java_geek

Переворачиваем изображение на 180 градусов С помощью следующего фрагмента кода вы можете получить перевернутое на 180 градусо
Переворачиваем изображение на 180 градусов С помощью следующего фрагмента кода вы можете получить перевернутое на 180 градусов изображение. @java_geek

Реализуйте симметрическую разность двух коллекций, используя методы Collection (addAll(...), removeAll(...), retainAll(...)).
Реализуйте симметрическую разность двух коллекций, используя методы Collection (addAll(...), removeAll(...), retainAll(...)). Симметрическая разность двух коллекций — это множество элементов, одновременно не принадлежащих обоим исходным коллекциям. @java_geek

Как вызывать default метод интерфейса в реализующем этот интерфейс классе? Используя ключевое слово super вместе с именем инт
Как вызывать default метод интерфейса в реализующем этот интерфейс классе? Используя ключевое слово super вместе с именем интерфейса. @java_geek

Что такое checked и unchecked exception? В Java все исключения делятся на два типа: • checked (контролируемые/проверяемые исключения) должны обрабатываться блоком catch или описываться в заголовке метода (например, throws IOException). Наличие такого обработчика/модификатора в заголовке метода проверяется на этапе компиляции; • unchecked (неконтролируемые/непроверяемые исключения), к которым относятся ошибки Error (например, OutOfMemoryError), обрабатывать которые не рекомендуется и исключения времени выполнения, представленные классом RuntimeException и его наследниками (например, NullPointerException), которые могут не обрабатываться блоком catch и не быть описанными в заголовке метода. @java_geek

Collections.min/max Удивительно, насколько часто можно встретить написанный вручную код, который находит максимальный или мин
Collections.min/max Удивительно, насколько часто можно встретить написанный вручную код, который находит максимальный или минимальный элемент чего-то по какому-нибудь критерию. Казалось бы, такая тривиальная задача должна быть давно решена. На самом деле она и так давно решена: есть методы Collections.min и Collections.max. Раньше было не очень удобно писать компараторы, но в Java-8 всё стало легче. К примеру, вам нужно найти ключ в Map, соответствующий максимальному значению. Воспользуйтесь кодом с картинки. @java_geek

Зубчатый массив в Java Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулировани
Зубчатый массив в Java Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулирования наборами битов. Представляет собой массив битов, который увеличивается динамически по мере добавления элементов. Занимает меньше памяти, чем обычные структуры данных для хранения булевых значений. Позволяет выполнять операции над битами: установка, сброс, инверсия, логические операции. Зубчатый массив полезен при решении задач: поиск в множествах, хранение состояний и флагов, оптимизация расхода памяти и в целом при необходимости эффективно хранить и манипулировать большим количеством булевых значений. @java_geek

ForkJoinPool Это класс, введенный в JDK 7, который представляет собой специализированный пул потоков, предназначенный для пар
ForkJoinPool Это класс, введенный в JDK 7, который представляет собой специализированный пул потоков, предназначенный для параллельного выполнения рекурсивных задач. ForkJoinPool автоматически управляет созданием и использованием потоков для выполнения подзадач и обеспечивает эффективное распределение работы между ними. Принцип работы основан на делении большой задачи на более мелкие подзадачи и их последующем объединении для получения результата. Каждая подзадача может быть выполнена независимо друг от друга, что позволяет эффективно использовать доступные ресурсы процессора. @java_geek

Какие есть особенности класса String? Это неизменяемый (immutable) и финализированный тип данных; Все объекты класса String JVM хранит в пуле строк; Объект класса String можно получить, используя двойные кавычки; Можно использовать оператор + для конкатенации строк; Начиная с Java 7 строки можно использовать в конструкции switch. @java_geek

Метод Iterable.forEach Перебирает переданную коллекцию, и выполняет лямбда-выражение action для каждого ее элемента. @java_ge
Метод Iterable.forEach Перебирает переданную коллекцию, и выполняет лямбда-выражение action для каждого ее элемента. @java_geek

Как устроен HashMap? HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется. @java_geek

Lombok — библиотека, генерирующая за вас бойлерплейт (шаблонный) код. Даёт возможность создавать классы ускоренно, так как не
Lombok — библиотека, генерирующая за вас бойлерплейт (шаблонный) код. Даёт возможность создавать классы ускоренно, так как не надо вручную прописывать, например, геттеры и сеттеры, всё делается с помощью аннотаций. Вы можете создавать неизменяемые классы вместе с типовыми методами и геттерами к ним — с помощью @Value. Все поля класса будут финализированы и сделаны приватными. Ознакомиться с проектом подробнее можно с помощью документации: https://projectlombok.org/ @java_geek

Опишите работу блока try-catch-finally try — это ключевое слово используется для отметки начала блока кода, который потенциал
Опишите работу блока try-catch-finally try — это ключевое слово используется для отметки начала блока кода, который потенциально может выдать ошибку. catch — ключевое слово для отметки начала блока кода, предназначенного для перехвата и обработки исключений в случае их возникновения. finally — слово для отметки начала необязательного блока кода. Этот блок помещается после последнего блока catch. Управление передаётся в блок finally вне зависимости от того, было выброшено исключение или нет. Общий вид конструкции показан на картинке. @java_geek

Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Э
Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Этот класс использует либо указанную кодировку, либо кодировку платформы по умолчанию для декодирования байтов в символы. Разберём некоторые методы класса: read() — метод читает и передает один символ или -1, если поток завершен; read(char [] charBuffer, int offset, int length) — считывает поток символов и сохраняет их в заданном символьном буфере. offset - это позиция, с которой начинается чтение, а length - это общее количество символов, которые необходимо прочитать. Он передает большое количество прочитанных символов либо -1, если поток завершен; ready() — сообщает, готов ли поток к чтению. Считается, что поток готов, если его входной буфер не пуст; getEncoding() — используется для возврата заголовка кодировки символов, которая используется потоком; close() — закрывает поток и освобождает связанные с ним системные ресурсы. @java_geek

Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Э
Класс FileReader FileReader — это класс в пакете java .io, который можно использовать для чтения потока символов из файлов. Этот класс использует либо указанную кодировку, либо кодировку платформы по умолчанию для декодирования байтов в символы. Разберём некоторые методы класса: read() — метод читает и передает один символ или -1, если поток завершен; read(char [] charBuffer, int offset, int length) — считывает поток символов и сохраняет их в заданном символьном буфере. offset - это позиция, с которой начинается чтение, а length - это общее количество символов, которые необходимо прочитать. Он передает большое количество прочитанных символов либо -1, если поток завершен; ready() — сообщает, готов ли поток к чтению. Считается, что поток готов, если его входной буфер не пуст; getEncoding() — используется для возврата заголовка кодировки символов, которая используется потоком; close() — закрывает поток и освобождает связанные с ним системные ресурсы. @java_geek

Где и как вы можете использовать приватный конструктор? Приватный (помеченный ключевым словом private, скрытый) конструктор может использоваться публичным статическим методом генерации объектов данного класса. Также доступ к нему разрешён вложенным классам и может использоваться для их нужд. @java_geek

Map.putIfAbsent Раньше чтобы добавить пару в Map, если ее там нет, необходимо было делать следующее(см 1 часть на картинке).
Map.putIfAbsent Раньше чтобы добавить пару в Map, если ее там нет, необходимо было делать следующее(см 1 часть на картинке). Теперь все стало куда проще(см 2 часть на картинке). @java_geek

Collection.removeIf Метод перебирает коллекцию, и удаляет те элементы, которые соответствуют filter. В нашем примере мы в одн
Collection.removeIf Метод перебирает коллекцию, и удаляет те элементы, которые соответствуют filter. В нашем примере мы в одну строку удаляем из списка все числа больше 5. @java_geek

Где разрешена инициализация статических/нестатических полей? • Статические поля можно инициализировать при объявлении, в статическом или нестатическом блоке инициализации. • Нестатические поля можно инициализировать при объявлении, в нестатическом блоке инициализации или в конструкторе. @java_geek