Java Learning
18.6K subscribers
1.62K photos
1 video
3 files
1K links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Float или Double?

Программисты часто не могут выбрать необходимую точность для чисел с плавающей запятой. Float требует всего 4 байта, но имеет только 7 значащих цифр, а Double в два раза точнее (15 цифр), но в два раза прожорливее.

🗣️ Фактически, большинство процессоров могут одинаково эффективно работать как с Float, так и с Double, поэтому воспользуйтесь рекомендацией Бьорна Страуструпа (автор языка С++):

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


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
➡️ Строковые шаблоны (Preview)

Строковые шаблоны (string templates) — новая функция в режиме preview, упрощающая создание строк с вычисляемыми значениями.

🗣️ Ранее используемая в Java конкатенация приводила к сложному коду, тогда как строковая интерполяция в других языках сокращает код, но увеличивает риски безопасности.

ℹ️ Шаблонные выражения сочетают лаконичность интерполяции и высокую безопасность.

String name = "Joan";
String info = STR."My name is \{name}";
assert info.equals("My name is Joan"); // true


Выражение использует обработчик STR и встроенное выражение {name}, которое может включать строки, арифметику, методы и поля. Обработчики выполняются динамически и обеспечивают безопасность кода. Шаблоны не работают без обработчика, отвечающего за интерполяцию и валидацию.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😱21
Ответ:
Anonymous Quiz
3%
6
17%
15
50%
123
31%
Error
👍141
✔️ Гибкость интерфейсов

ℹ️ В Java есть возможность использовать интерфейсы как контракт для взаимодействия между классами.

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

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

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
FileOutputStream или FileWriter?

Запись файлов в Java осуществляется двумя способами: FileOutputStream и FileWriter. Какой метод выбрать, зависит от конкретной задачи.

➡️ FileOutputStream предназначен для записи необработанных байтовых потоков. Это делает его идеальным решением, например, для работы с изображениями.

➡️ У FileWriter другое призвание: работа с потоками символов. Поэтому, если вы пишете текстовые файлы, выберите этот метод.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164
⚠️ Автоматическое управление ресурсами в Java с try-with-resources

Java всегда ставила акцент на эффективное управление ресурсами, и одна из лучших фишек, которая помогает разработчикам в этом — механизм try-with-resources, представленный в Java 7.

📊 С его помощью можно автоматизировать управление ресурсами, такими как потоки ввода/вывода, соединения с БД и т.д., которые нужно корректно закрывать после использования.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Улучшение производительности с помощью Stream API в Java

Мощное средство для работы с коллекциями — Stream API, которое трансформировало подход к обработке данных, сделав код более читаемым, коротким и улучшив его производительность за счёт возможности параллельной обработки.

▶️ Рассмотрим пример, который демонстрирует как Stream API может быть использован для фильтрации и преобразования списка объектов:

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁2
✔️ Использовании Optional для избежания NullPointerException

В Java часто приходится сталкиваться с проблемой, когда метод возвращает null, что может привести к NullPointerException. Чтобы избежать таких ситуаций, можно использовать класс Optional.

👀 Рассмотрим пример, как использовать Optional для безопасного получения значения из метода, который может вернуть null.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍152
➡️ Работа с коллекциями с помощью Streams

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

👀 Этот простой пример показывает, как с помощью Streams можно легко фильтровать и преобразовывать данные в коллекциях, делая код более лаконичным и понятным.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🔗 Объединение строк с помощью String.join

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

🗣️ До Java 8 это обычно делалось с помощью цикла и объекта StringBuilder. С появлением метода String.join, эта задача стала намного проще и лаконичнее.

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


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
🟢 Локальные переменные в лямбда-выражениях

Java позволяет использовать локальные переменные внутри лямбда-выражений, но с одним важным ограничением: переменные должны быть эффективно финальными (effectively final).

❗️Это означает, что после их инициализации переменные не могут быть изменены.

🗣️ Использование локальных переменных в лямбда-выражениях может быть очень полезным для передачи дополнительных данных в лямбда-выражения

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍81
🔥 Pattern Matching для instanceof

В Java 14 был представлен Pattern Matching для оператора instanceof. Эта возможность упрощает и делает более читабельным код, который проверяет типы объектов и затем приводит их к этим типам.

✔️ Используйте эту фишку для написания более чистого и читаемого кода, избегая лишних явных приведений типов

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23😢1
Что будет выведено при выполнении кода?

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Ответ:
Anonymous Quiz
3%
A
40%
B
31%
C
26%
Default
😁25👍13
➡️ Sealed Classes в Java

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

🗣️ Это полезно для создания более предсказуемой и контролируемой иерархии классов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
✔️ Как сделать ваш код чище с Records

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

🗣️ Они автоматически предоставляют стандартные методы, такие как equals(), hashCode() и toString(), что делает код более чистым и менее многословным.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
✔️ Улучшение работы с текстом: Text Blocks

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

🗣️ Text Blocks позволяют легко включать большие фрагменты текста в код без необходимости экранирования символов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
🪄 Магия сопоставления шаблонов: Switch Expressions

ℹ️ Switch Expressions позволяет писать более компактный и выразительный код при использовании оператора switch.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🧑‍💻 Виртуальные потоки в Project Loom

Project Loom — это лёгкие потоки, которые упрощают разработку многопоточных приложений и значительно улучшают масштабируемость.

✔️ Используйте виртуальные потоки, чтобы значительно улучшить производительность и масштабируемость вашего кода.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11