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

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
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
Ключевые типы и их классы

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

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

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

#java #lesson #theory
implements и extends

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

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

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

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

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

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

#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
📓 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