Java Portal | Программирование
11.8K subscribers
889 photos
67 videos
31 files
715 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Алгоритмическая сложность коллекций

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

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

На табличке выше записаны коллекции и сложности их методов. Рекомендуем выучить её наизусть.

#lesson #collections
Почему так много кода

Если ваш первый язык не Java, вы скорее всего задавались вопросом: "Почему просто чтобы начать программу или вывести текст в консоль нужно писать так много кода?"

Ответ кроется в структуре языка. В Java всё поделено на классы и объекты, в свою очередь у которых есть атрибуты и методы.

Разберём случай с выводом System.out.println(). Казалось бы, можно же просто ограничится функцией println. Но если мы захотим вывести текст в другой поток, например в System.err? В реализации Java будет достаточно сменить атрибут out -> err

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

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

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

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

#java #lesson
this

Ключевое слово, которое указывает на себя. Например, написав this.a мы получим значение свойства a.

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

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

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

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

На табличке выше записаны коллекции и сложности их методов. Рекомендуем выучить её наизусть.

#lesson #collections
Почему так много кода

Если ваш первый язык не Java, вы скорее всего задавались вопросом: "Почему просто чтобы начать программу или вывести текст в консоль нужно писать так много кода?"

Ответ кроется в структуре языка. В Java всё поделено на классы и объекты, в свою очередь у которых есть атрибуты и методы. 

Разберём случай с выводом System.out.println(). Казалось бы, можно же просто ограничится функцией println. Но если мы захотим вывести текст в другой поток, например в System.err? В реализации Java будет достаточно сменить атрибут out -> err

#lesson #theory
Концепция JDBC

Баз данных на SQL-основе существует очень много. К примеру самые популярные из них: SQLite, MySQL и PostgreSQL.

Набор пакетов JDBC предлагает обобщить все эти базы данных, предоставляя общий API. Он предустановлен в JDK и находится в пакете java.sql.

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

#lesson #features
try-with-resource

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

Чтобы не делать это вручную придумали новую конструкцию для оператора try. Теперь после него в круглых скобках объявляются объекты, которые после выполнения кода внутри try, будут "закрыты".

Такие объекты обязательно должны имплементировать интерфейс AutoClosable и иметь метод close(). Именно он будет вызван в конце выполнения try.

#lesson #features
Документация и 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