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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
javadoc

Это генератор документации в HTML-формате из комментариев исходного кода Java. Комментарии для документации определяются так: /** комментирование документации */.

У javadoc есть дескрипторы: @author, @version, @since, @see, @param, @return, которые определяют какое значение мы записываем в комментариях.

#java #lesson #javadoc
Не оставляйте try/catch блоки пустыми

Обязательно выводите ошибки или обрабатывайте их! Если их игнорировать, будет трудно найти баг и придётся дебажить код.

Исключения стоит выводить хотя бы через System.out.println(), но ещё лучше воспользоваться логгером log4j.

#java #lesson #best_practices
Scanner

Класс, способный получать данные от пользователя через командную строку. На вход Scanner принимает строку или I/O объект.

Если это String, то объект можно использовать для последовательного считывания строк.

Если это I/O объект, то позволяет считывать разные типы данных: строки, числа и подобное. Для получения данных от пользователя, передаём System.in.

#java #lesson #scanner
Класс Console

Находится в java.io и упрощает работу с консолью. Он не представляет доступ к вводу-выводу, а лишь использует уже имеющиеся потоки System.in и System.out.

Для получения доступа к этому классу надо вызвать System.console().

#java #lesson #io
Stream API

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

Первым делом из коллекции нужно получить .stream(), а потом вызывать нужную функцию: filter(), reduce() и другие.

#java #lesson #stream
.stream().reduce()

Переводит набор элементов в единое значение с помощью функции. Функция принимает результат предыдущей работы и следующие значение.

#java #lesson #stream
.stream().collect()

Добавляет элементы в неизменяемый контейнер. Полезно, если нужно сохранить набор данных в виде какой-то коллекции.

#java #lesson #stream
.stream().map()

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

#java #lesson #stream
Ключевые типы и их классы

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

Даже привычные для всех типы int, float, char и так далее — это всё сокращения объекта. Другими словами, их легко можно заменить соответствующими им классами: Integer, Float и Character.

Однако, у сокращений типов есть одна особенность — они не могут быть null.

#java #lesson #theory
implements и extends

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

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

#java #lesson #oop
В чём разница между абстрактными классами и интерфейсами?

С первого взгляда эти два объекта выполняют одну и тоже функцию — планирование классов. Однако не всё так очевидно.

Абстрактные классы — это такие же обычные классы, но некоторые их методы можно «оставить на потом». Другими словами метод объявленный ключевым словом abstract не надо реализовывать, он будет реализован в дочерних объектах.

Интерфейсы же являются описанием структуры методов класса, которые нужно реализовать. В интерфейсах нельзя объявлять переменные.

#java #lesson #oop
Stream Filter

Метод Stream::filter позволяет отфильтровывать значения из набора данных.

Синтаксис: .filter(object -> condition)

Работает он предельно просто: он проходит по каждому элементу из массива и проверяет его с помощью лямбды object -> condition. Если результат равен true, значение оставляем в массиве.

#java #lesson #stream
Кортежи в Java

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

В Java кортежи реализованы интерфейсом Cortege<F, S> и имплементированы классом CortageChain. Чтобы хранить в нём данные, достаточно с помощью дженериков задать типы и присвоить им значения.

Важной особенностью кортежей является возможность выстраивать цепочки, например так:

Cortege<Long, Cortege<String, Cortege<Float, Cortege.End>>>

#java #lesson #collections
Теория дженериков в Java

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

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

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

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

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

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

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

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

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

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

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

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

#java #lesson #reflection
Немного про JVM

В отличии от JIT компиляторов таких языков как C/C++, код Java компилируется в свой байткод. По сути это ваш код, сжатый и упрощённый до простых операций.

Обрабатывать этот байткод будет JRE и виртуальная машина JVM — выделенная область для процессов Java со своей инфраструктурой.

Такой способ компиляции имеет много преимуществ, в частности — кроссплатформенность.

Спектр поддерживаемых устройств невероятно велик: от кнопочных телефоном и банкоматов до компьютеров и сервером NASA.

#java #theory
Бесконечности в 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