Java Portal | Программирование
11.3K subscribers
798 photos
59 videos
19 files
591 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
Документация и Javadoc

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

В Java предусмотрен специальный инструмент Javadoc, который упрощает написание документации

Основные его фичи это теги, которые помогают редактору кода считывать документацию.

#lesson #features
Записи Record

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

Для более упрощённого создания таких классов в JDK 15 появилось новое ключевое слово record. По своей сути, это синтаксический сахар для метода описанного выше.

#lesson #features
Ветвление switch

В Java существует два основных типа ветвлений скрипта: if...else и switch. Первый тип проверят некое условие и если оно верно — выполняет код.

В свою очередь switch получает на вход проверяемое значение и сравнивает его с перезаписанными данными. Если какой-то случай case совпадает, то JVM выполняет соответствующий код.

Отличительной особенностью switch есть то, что все его условия статические и компилируются сразу в байткод.

#lesson #keyword
Инструмент StreamAPI

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

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

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

#java #lesson #stream
Тестируем код

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

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

📖 Документация

#java #lesson #testing
map и flatMap

Для перевода значений Stream существуют два метода: map и flatMap. В чём же в них разница?

Метод map перевод одно входящие значение строго в одно выходное. Другими словами если переводить массив new int[10] в тип double[], то получится массив длинной 10, не больше и не меньше.

flatMap же не имеет таких ограничений и на выходе может выдавать несколько значений или вообще ничего не возвращать. В основном он нужен для изменения размерности массивов.

#java #lesson #stream
Пакетный менеджер Maven

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

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

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

#java #lesson #resourses
Работаем с базами данных

Для этого в Java есть универсальный драйвер, который может работать с реляционными базами данных (Oracle, MySQL). Называется он JDBC.

Java Database Connectivity позволяет нам:

• Создавать соединения с БД.
• Создавать и выполнять SQL выражений.
• Просматривать и менять полученные записи.

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

#lesson #database
map и flatMap

Для перевода значений Stream существуют два метода: map и flatMap. В чём же в них разница?

Метод map перевод одно входящие значение строго в одно выходное. Другими словами если переводить массив new int[10] в тип double[], то получится массив длинной 10, не больше и не меньше.

flatMap же не имеет таких ограничений и на выходе может выдавать несколько значений или вообще ничего не возвращать. В основном он нужен для изменения размерности массивов.

#java #lesson #stream
Regex-выражения в Java

Работа с Regex а Java максимально упрощенна и сводится к двум основным классам – Pattern и Matcher.

Класс Pattern хранит в себе само выражение и может создать Matcher для него. Также для упрощённой работы в нём есть статические методы для проверки без создания Matcher-а.

#lesson #regex
Бесконечности в Java

Часто алгоритмы, в частности перебор и сортировка массивов, требуют числа, которые могут быть меньше или больше абсолютно любого другого числа.

И такие числа есть — NEGATIVE_INFINITY и POSITIVE_INFINITY. Их имеют все классы, которые наследуются от Number.

Главной особенностью является то, что эти числа больше/меньше не только других чисел, но и себя.

#java #lesson #features
Работа с Matcher

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

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

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

#lesson #regex
StringBuffer и StringBuilder

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

Если так получается, что строка часто меняется, то используйте StringBuilder. Если вам нужна многопоточная версия — StringBuffer.

Он помогает справиться с созданием временного мусора из-за модификаций объекта String.

#java #lesson #string
📓 Алгоритмы и структуры данных. Извлечение информации на языке Java.

• В книге вы изучите, как следует реализовывать эффективные алгоритмы на основе важнейших структур данных на Java, а также как измерять производительность этих алгоритмов. Каждая глава сопровождается упражнениями, помогающими закрепить материал:

Научитесь работать со структурами данных, например, со списками и словарями, разберитесь, как они работают;
Напишите приложение, которое читает страницы Википедии, выполняет синтаксический разбор и обеспечивает навигацию по полученному дереву данных;
Анализируйте код и учитесь прогнозировать, как быстро он будет работать и сколько памяти при этом потреблять;
Пишите классы, реализующие интерфейс Map, пользуйтесь при этом хеш-таблицей и двоичным деревом поиска;
Создайте простой веб-поисковик с собственным поисковым роботом: он будет индексировать веб-страницы, сохранять их содержимое и возвращать нужные результаты.

📌 Скачать.
Паттерн Singleton

Класс существует только в едином экземпляре и к нему есть глобальный доступ (то есть, отовсюду).

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

Многие новички допускают ошибку, которую я описал выше, что превращает их код в кучу Singleton'ов. Решение: Dependency Injection.

#java #lesson #patterns
Перечисления в Java

Это набор именнованых констант. Таким образом мы можем заменить непонятные цифры (1, 2, 4) или буквы ("E", "W", "N", "S") и сделать код более стабильным.

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

Перечесления в Java могут также хранить собственные переменные и методы. Для этого надо создать enum конструктор и добавить его вызов к значениям.

#java #lesson
Аннотации в Java

Это метаданные, которые предоставляют данные о программе, но никак на неё не влияют. Только данные и всё.

Используется для: передачи информации для компилятора, Обработка во время компиляции/развертывания/во время выполнения.

#java #lesson #theory
Одинарные и двойные кавычки

В Java есть такое понятие, как символ (Char). Это определённая буква, цифра, эмодзи и т.д. Несколько таких символов уже составляют строку (String).

Так вот, в одинарных кавычках мы записываем только один символ, а в двойных кавычках мы создаём строку.

С этим нужно быть очень осторожным, поскольку пытаясь получить "MY", выполняя 'M' + 'Y', вы получите 166.

#java #lesson #theory
Перегрузка функций

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

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

Самой простой пример — System.out.println(). Если вы посмотрите определение метода, то увидите что он принимает и String, и char, и int.

#java #lesson #overloading
System.arraycopy

Невероятно полезный и часто используемый метод. Суть в чём: он копирует данные из одного массива в другой с учётом индексации.

Ситаксис:

System.arraycopy(source, from, root, dest, len);

В результате метод копирует значения из source[from] по source[from + len] и вставляет их в массив root в позицию dest.

#lesson
java roadmap по которому человек смог стать программистом за 8 месяцев. Ставьте лайки и дизлайки за качество роадмапа - заценим)
https://drive.google.com/file/d/1NEsxE-9FCpxAty7GwW7MULgivZIQwlEA/view