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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
Концепция 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
foreach в Java

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

Для решения это проблемы была придумала конструкция for(T object : iterable). В такой конструкции на каждой итерации из коллекции iterable будет получен объект object.

Объект iterable обязательно должен имплементировать интерфейс Iterable.

#lesson #features
Вектор в Java

До появления системы Collections в Java часто использовался класс Vector<E> — старый аналог нынешнего ArrayList.

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

Из этого можно сделать вывод: векторы меньше расходуют память, но требуют большего времени для добавления элемента

#lesson #collection
Конструкция do...while

Эта конструкция встречается редко на практике, но знать её нужно. Описать её можно как дополнение к привычному всем while(condition).

Суть в чём: сначала в блоке do{...} пишется код, а после вызывается while(condition). В результате обязательно выполнится код в блоке do, а после начнётся цикл while.

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

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

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

#lesson #regex
Работа с Matcher

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

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

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

#lesson #regex
String.format

Метод String.format часто используется когда нужно вставить в строку много разных значений.

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

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

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

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

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

#java #lesson #resourses
Сортировка Stream

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

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

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

#java #lesson #stream
Софт-девелопинг на Java

Язык Java часто используется для создания софта. Уверен многие из вас используют продукты JetBrains — они тоже написаны на Java.

Для создания приложений (не только на пк, но и на телефоны) используют один из трёх официальных движков: AWT, Swing и JavaFX.

Последний является самым популярным и удобным на данный момент, если будете пробовать данное направление — начинайте с него

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

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

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

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

#java #lesson
Работаем с временем

Для работы с датами и временем, у нас, в пакете java.util, есть класс Date.

При создании экземпляра с пустым конструктором вы получаете время и дату, которая сейчас. Если же вам надо считать всё из строки, воспользуйтесь классом SimpleDateFormat и его методом parse().

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

#lesson #theory
Аннотация FunctionalInterface

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

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

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

#java #lesson #annotations
Многопоточность

В Java многопоточность реализована через класс Thread. Каждый поток, даже основной, обёрнутый в этот класс.

Благодаря потокам выполнения кода можно разделять и выполнять параллельно. Сам код переопределяется в методе Thread::run.

#java #lesson #thread
Интерфейс Runnable

В отдельном потоке могут жить не только методы, но и целый класс.

Для этого ему надо имплементировать интерфейс Runnable, в котором находится метод run(). В самом методе нужно написать скрипт, который запустится при запуске потока, как метод main.

После сей класс нужно предоставить потоку как аргумент в конструктор new Thread(runnable)

#java #lesson #thread
Обработка изображений

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

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

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

#java #lesson #awt