Java Portal | Программирование
13.1K subscribers
971 photos
72 videos
32 files
784 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
July 9, 2023
July 10, 2023
July 11, 2023
July 12, 2023
Работа с Matcher

Объект Matcher создаётся с помощью класса Pattern и позволяет находить части строки, которые подходят под введённое выражение.

К примеру, методы match() и find() возвращают true если такая строка была найдена. Разница в них лишь в том, что find() записывает положение найденного участка строки.

После того как этот участок найден и записан, с помощью метода group() можно получить строку с группой. В regex-выражениях группы обозначаются круглыми скобками.

#lesson #regex
July 13, 2023
Пакетный менеджер Maven

Чтобы быстро и удобно добавлять чужие библиотеки и фреймворки в свой проект программисты придумали пакетные менеджеры. Благодаря им можно в несколько строчек импортировать различные ресурсы в проект.

Maven основан на файле pom.xml, в котором хранятся все настройки проекта. К примеру в блоке <dependencies>...</> указанны подключённые к проекту модули.

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

#java #lesson #resourses
July 14, 2023
Сортировка Stream

Для сортировки в классе Stream существует метод sorted, у которого есть две реализации.

Основной это метод Stream<T>::sorted(). Он сортирует элементы которые имплементирует интерфейс Comparable<T>. Логика проста: если результат метода compare(T o) отрицательный, то объект о будет ниже в списке, если же положительный — выше.

Также можно сортировать объекты своим объектом Comparator с помощью метода sorted(Comparator<? extend T>).

#java #lesson #stream
July 15, 2023
July 16, 2023
Строки в Java

По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.

Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.

#lesson
July 18, 2023
implements и extends

Одной из основных догм в ООП является наследование. В Java можно наследовать как и классы, так и интерфейсы, но делается это по-разному.

Ключевое слово extends привязывает к классу родительский класс и только один. В своё время ключевое слово implements привязывает к классу один или несколько интерфейсов, которые класс должен реализовать.

#java #lesson #oop
July 18, 2023
July 18, 2023
NullPointer Exception

Исключения нулевого указателя возникает в Java довольно часто при попытке вызова метода несуществующего объекта.

Возьмем для примера следующую строчку кода:

int noOfStudents = school.listStudents().count;

Если объект school окажется равен Null или его метод listStudents вернет Null, вы получите исключение NullPointerException.
Хорошей практикой разработки на Java является предварительная проверка на Null в методах (смотри на картинке).

#lesson #bug
July 19, 2023
System.currentTimeMillis vs System.nanoTime

В Java есть два стандартных способа проведения тайм-операций и не всегда понятно, какой из них следует выбрать.

Метод System.currentTimeMillis возвращает текущее количество миллисекунд от начала эпохи Unix в формате Long. Его точность составляет от 1 до 15 тысячных долей секунды в зависимости от системы.

long startTime = System.currentTimeMillis();
long estimatedTime = System.currentTimeMillis() - startTime;

Метод System.nanoTime имеет точность до одной миллионной доли секунды (наносекунды) и возвращает текущее значение наиболее точного доступного системного таймера.

long startTime = System.nanoTime();
long estimatedTime = System.nanoTime() - startTime;

Таким образом, System.currentTimeMillis отлично подходит для отображения абсолютного времени и синхронизации с ним, а System.nanoTime – для измерения относительных интервалов.

#lesson #time
July 20, 2023
Оптимизация строк

При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.

Также следует избегать создания Java строки с помощью конструктора класса: (смотри на фото)

#lesson #string
July 21, 2023
Одинарные и двойные кавычки
Что вы ожидаете получить от этого кода?

public class Haha {
public static void main(String args[]) {
System.out.print("H" + "a");
System.out.print('H' + 'a');
}
}

Казалось бы, должна вернуться строка HaHa, но на деле будет Ha169.

Двойные кавычки обрабатывают символы как строки, но одинарные ведут себя иначе. Они преобразуют символьные операнды ('H' и 'a') к целочисленным значениям через расширение примитивных типов – получается 169.

#lesson #string
July 22, 2023
Можно ли использовать этот код для точного определения нечетности числа?

Надеюсь, вы заметили подвох. Если мы решим проверить таким образом отрицательное нечетное число (-5, к примеру), остаток от деления не будет равен единице (а чему он равен?). Поэтому используйте более точный метод:

public boolean oddOrNot(int num) {
return (num & 1) != 0;
}

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

#lesson #number
July 23, 2023
Строки в Java

По своей сути, строки — это массив символов char, обёрнутый в класс String. Такая обёртка позволяет обрабатывать строку всеми возможными методами: split, join, trim и другими.

Особенность строк Java в том, что они — ссылочные и неизменяемые. Это позволяет оптимизировать занимаемую память строкой.

#lesson
July 25, 2023
July 25, 2023
July 26, 2023
Инструмент StreamAPI

Думаем, любой программист наслышан о том, как просто можно обрабатывать списки в таких языках, как Python. 

Java тоже не обделена подобными особенностями, а в частности — она имеет SteamAPI. Это некий набор объектов и методов, которые позволяют обрабатывать списки.

P.S.: В следующих уроках под тегом #stream мы будем подробно рассказывать о методах обработки

#java #lesson #stream
July 27, 2023
July 29, 2023