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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
Float vs Double

Оба эти типа данных представляют числа с плавающей запятой. А то, что double является более точным, является общеизвестным фактом.

Настоятельно рекомендуется использовать double вместо float. Но помните, что у всего есть цена, double требует в два раза больше памяти.

#java #lesson
Лямбда-выражение

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

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

Создаётся она так: (type1 arg1,type2 arg2) -> expression, где arg1 и arg2 - аргументы функции, а expression — действие, которое надо выполнить.

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

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

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

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

#java #lesson #oop
Stream Filter

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#java #lesson #reflection
Типы данных в Java

Привет, Мэн! Сегодня мы поговорим о типах данных в Java. Тип данных определяет характеристики переменной – то, какие значения она может принимать и какие операции можно выполнять над ними. В Java существуют различные типы данных, которые помогут тебе работать с разными типами информации.

Примитивные типы данных
Java имеет восемь примитивных типов данных:

byte: это 8-битное знаковое целое число, которое может хранить значения от -128 до 127.

short: это 16-битное знаковое целое число, которое может хранить значения от -32,768 до 32,767.

int: это 32-битное знаковое целое число, которое может хранить значения от -2,147,483,648 до 2,147,483,647.

long: это 64-битное знаковое целое число, которое может хранить значения от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807.

float: это 32-битное число с плавающей запятой, которое может хранить значения с плавающей точкой. Для объявления числа с плавающей запятой следует использовать суффикс f или F.

double: это 64-битное число с плавающей запятой и используется для хранения больших чисел с плавающей точкой. В отличие от типа float, суффикс d или D необязателен.

boolean: это простой тип данных, который может принимать только два значения: true или false. Как прав...
Алгоритмическая сложность коллекций

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

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

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

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

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

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

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

#lesson #theory
System.arraycopy

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

Ситаксис:

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

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

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

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

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

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

#java #lesson #stream
Топ 10 книг для изучения Java

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

👉Читать статью
Перечисления в Java

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

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

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

#java #lesson
System.arraycopy

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

Ситаксис:

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

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

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

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

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

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

#java #lesson #stream
map и flatMap

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

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

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

#java #lesson #stream
Аннотация FunctionalInterface

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

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

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

#java #lesson #annotations