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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
Теория дженериков в Java

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

Использовать дженерики можно в классах и методы. Обозначаются они стрелочными скобками и именем типа <T> (примеры вы можете увидеть выше).

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

#java #lesson #oop
Рефлексии в Java

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

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

Рефлексия и наличие логически целостной модели выдачи информации об ошибках дает возможность создавать корректный динамический код.

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

По сути своей аннотации — это метаданные объектов структуры класса и самого класса, который в дальнейшем обрабатывается.

Аннотации бывают встроенными, а также можно создать свои, но самые ключевые из них это Target и Retention.

Target принимает один или несколько типов, которым можно привязать дочернюю аннотацию. Получить их можно из ElementType.

Retention же обозначает на каком уровне будет находится и обрабатываться аннотация. Всего их три: RUNTIME, CLASS и SOURCE

#java #lesson #reflection
📓 The Well-Grounded Java Developer, 2nd Edition (Final Release).

• Understanding Java from the JVM up gives you a solid foundation to grow your expertise and take on advanced techniques for performance, concurrency, containerization, and more.

• The Well-Grounded Java Developer, Second Edition is a complete revision of the classic original with the latest innovations of the Java platform. It upgrades your existing Java skills with both JVM fundamentals like bytecode, and powerful new features such as modules and concurrency models.

• You’ll broaden your understanding of what’s possible by exploring Kotlin and other JVM languages, and learn how functional programming can offer a powerful new perspective. Each concept is illustrated with hands-on examples, including a fully modularized application/library, build setups for Maven and Gradle, and creating your own multithreaded application.

📌 Скачать.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#lesson #database
Основные принципы ООП

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

Наследование — позволяет создавать новые классы на основе уже существующих. Таким образом можно менять поведение или добавлять новый функционал.

Полиморфизм — возможность объектов с разной спецификацией иметь различную реализацию. Человек, собака и кошка могут есть, но делают это по разному.

#lesson #oop
NullPointerException

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

К сожалению, null могут принимать все ссылочные типы. Это массивы, классы и даже строки. Но вот числа никогда не будут null (поскольку это не ссылочные типы).

Что с этим делать? Достаточно просто добавить проверку на null и что-то делать с этим (выбрасывать ошибку или задавать значение по умолчанию).

#lesson #theory #errors
Что такое JVM?

Вероятно, вы уже встречали такое понятие, как Java Virtual Machine, ведь это — самая главная часть языка, отвечающая за выполнение кода.

Когда вы нажимаете на кнопку Build, первым делом запускается компилятор, который переводит код понятный человеку в байт-код, понятный JVM.

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

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

#lesson #theory
Необходимые знания для получения должности разработчик Java

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

👉 Читать статью

freeCode | #java
Интерфейс Comparable

Помимо обычных коллекций, в Java существуют Sorted... коллекции. Их значения автоматически сортируются в натуральном порядке.

Для реализации такой сортировки тип значения должен имплементировать интерфейс Comparable. Он сравнивает два объекта и возвращает "разницу" между ними в виде числа.

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

#lesson #collections
Особенность RuntimeException

Зачастую Java "заставляет" программиста обрабатывать потенциальную ошибку в коде.

Сделать это можно двумя способами: окружить опасный код конструкцией try...catch или объявить о возможной ошибке в сигнатуре метода.

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

#lesson #theory
Алгоритмическая сложность коллекций

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

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

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

#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