Java Learning
18.7K subscribers
1.62K photos
1 video
3 files
998 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Какой дефолтный размер HashMap ?
Anonymous Quiz
15%
0
16%
10
56%
16
3%
75
10%
Посмотреть ответ
👍211
Gradle

Это инструмент автоматизации сборки, который в основном используется в Android-разработке. Популярная альтернатива Ant и Maven.

Gradle позволяет определять и управлять зависимостями проекта, запускать модульные тесты и упаковывать приложение для развертывания. Gradle также имеет систему плагинов, которая позволяет добавлять функциональные возможности и настраивать процесс сборки.

#для_начинающих
👍113
Когда использовать рефлексии?

Уверен многих кто только начал учить ReflectionAPI удивили возможности этого инструмента. Но работа с ним довольно тяжёлая для системы, поэтому лучше использовать её в крайних случаях.

К примеру — обработка класса с аннотациями (пример выше). Извлекая аннотации из объектов класса, можно обрабатывать её каким угодно образом.

Также рефлексии часто применяют в тестировке, а именно для приватных полей и методов. Достаточно получить метод из класса, задать method.isAccessible(true) и можно вызывать его как публичный.

#для_начинающих
👍13
Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ

Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться.

Смотреть статью
👍10
Логирование данных

Уже давно прошло то время, когда для наблюдением за работой программы надо сидеть на стуле и всматриваться в консоль, сейчас эту работу делают логеры.

Суть логеров в записи данных из программы, дополняя её такими данными как время, место, уровень и так далее.

Самым популярным логером на данный момент является Log4J, установить который можно с помощью Maven/Gradle.

#для_продвинутый
👍27
В каком классе/интерфейсе реализованы/объявлены методы wait(), notify(), notifyAll()?
Anonymous Quiz
55%
Object
14%
Runnable
6%
Callable
24%
Thread
Интерфейс Enumeration

Интерфейс Enumeration — определяет методы, с помощью которых вы можете перечислить (получить по одному) элементы в коллекции объектов.

Этот устаревший интерфейс был заменён Iterator. Хоть и не совсем, но Enumeration считается устаревшим для нового кода. Однако он используется некоторыми методами, определёнными такими устаревшими классами, как Vector и Properties, используется другими API классами и сейчас широко используется в коде приложений.

Методы, объявленные Enumeration, можно посмотреть здесь.

#для_начинающих
👍7
Класс TreeMap

Класс TreeMap реализует интерфейс Map, используя дерево. TreeMap обеспечивает эффективное средство хранения пар ключ/значение в отсортированном порядке и позволяет быстро извлекать данные.

Следует отметить, что, в отличие от хэш-карты, карта деревьев гарантирует, что ее элементы будут отсортированы в порядке возрастания ключа.

Все методы и конструкции класса TreeMap можно посмотреть здесь.

#для_продвинутых
👍101
ExecutorService

ExecutorService — это интерфейс в Java, который предоставляет высокоуровневый способ управления выполнением задач (потоков) в фоновом режиме. Он является частью пакета java.util.concurrent и предоставляет абстракцию над управлением потоками выполнения, что облегчает создание и управление потоками в многозадачных приложениях.

ExecutorService позволяет разработчикам создавать пулы потоков, которые автоматически управляются пулом, а не создаются и уничтожаются каждый раз вручную. Это снижает накладные расходы на создание и уничтожение потоков, что может быть дорогостоящей операцией.

#для_продвинутых
👍131
В чём разница между >> и >>>?

Операторы >> и >>> используются для выполнения побитовых сдвигов над числами.

Оператор >> выполняет арифметический сдвиг вправо. При этом, если число положительное, то сдвиг вправо на n битов эквивалентен делению числа на 2^n. Однако при работе с отрицательными числами, оператор >> выполняет расширение знака, то есть заполняет старшие биты таким же значением, как старший бит исходного числа.

Оператор >>> также выполняет сдвиг вправо, но в отличие от >>, он всегда заполняет старшие биты нулями, даже при отрицательных числах. Этот оператор полезен при работе с беззнаковыми числами или при необходимости получения значения без знакового расширения.

#для_начинающих
👍173
Работа с датами LocalDateTime

Класс LocalDateTime из пакета java.time позволяет создавать даты и изменять их, добавляя и отнимая необходимое количество часов, дней, месяцев, лет и даже эпох.

Чтобы получить текущую дату на вашем устройстве достаточно вызвать метод LocalDateTime::now.

Зеркалом этого класса в JDBC является класс TimeStamp, в который можно перевести методом of().

#для_продвинутых
👍22
Обработка изображений

Думаем, каждый согласится, что подавать информацию в виде изображения лучше всего для восприятия. Однако сначала нужно сгенерировать такое изображение, и на этот случай в Java есть множество инструментов.

К примеру, класс java.awt.BufferedImage который позволяет обрабатывать изображения каким угодно способом, хоть попиксельно.

Чтобы загрузить изображение из файла используют ImageIO::read, для записи — ImageIO::write.

#для_продвинутых
👍19
Интерфейс SortedMap

SortedMap — это интерфейс в Java, который представляет собой отсортированную коллекцию ключей и связанных с ними значений. Он расширяет интерфейс Map и предоставляет методы для управления данными в упорядоченном виде.

Важно отметить, что SortedMap не дублирует элементы и обеспечивает их упорядоченное хранение на основе натурального порядка ключей или с использованием заданного компаратора. Это означает, что элементы в SortedMap автоматически упорядочиваются по ключам.

Методы, объявленные SortedMap, можно посмотреть здесь.

#для_продвинутых
👍9
Apache Commons CLI

Apache Commons CLI (Commons Command Line Interface) — это библиотека для обработки аргументов командной строки в Java. Она предоставляет удобный способ определения и обработки аргументов командной строки для ваших Java-приложений. Библиотека Apache Commons CLI упрощает работу с аргументами командной строки, включая разбор аргументов, создание справки и обработку различных опций командной строки.

#для_продвинутых
👍15
System.arraycopy

System.arraycopy используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy:

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

Параметры метода включают:

src: Исходный массив, из которого вы хотите скопировать элементы.
srcPos: Начальная позиция в исходном массиве, с которой начнется копирование.
dest: Целевой массив, в который вы хотите скопировать элементы.
destPos: Начальная позиция в целевом массиве, куда будут скопированы элементы.
length: Количество элементов, которое вы хотите скопировать.

#для_продвинутых
👍161
😂 Вечерний мем
Please open Telegram to view this post
VIEW IN TELEGRAM
😁69👍101
Правильная ли реализация abstract class?
Anonymous Quiz
32%
Да
58%
Нет
10%
Посмотреть ответ
👍15
Как разделить строку на части?

В Java можно разделить строку на части с помощью метода split() класса String. Метод split() разбивает исходную строку на массив строк, используя заданный разделитель.

В этом примере исходная строка «Это пример строки для разделения» разбивается на части с помощью пробела в качестве разделителя. Однако, если у вас есть другой разделитель (например, запятая или точка с запятой), просто замените значение переменной delimiter на соответствующий разделитель в вашем случае.

#для_начинающих
👍8
Метод flatMap

Метод flatMap используется в контексте работы с потоками (streams) в пакете java.util.stream. Он представлен в интерфейсе Stream<T> и предназначен для преобразования элементов потока, когда каждый элемент может быть преобразован в ноль или один элемент другого потока.

Метод flatMap применяет функцию mapper к каждому элементу исходного потока и «разворачивает» (сплющивает) поток элементов в один объединенный поток, игнорируя нулевые потоки, которые могут быть результатом преобразования.

#для_продвинутых
👍14
Интерфейс Supplier

Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.

Метод Supplier:

T get();
Где T -- это тип возвращаемого значения.

Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.

#для_продвинутых
👍143