JavaRocks
2.36K subscribers
145 photos
14 videos
312 links
Базовый канал для изучения языка Java.

Наш сайт: javarocks.ru

Все необходимые туториалы и материалы.

Тесты для проверки знаний. Лучшие практики и паттерны проектирования.

@viktorreh
@anothertechrock
Download Telegram
Как правильно изучать Java? Чтобы не тратить зря время....

Вот RoadMap
👍75👌5
public class Quest {
public static void main(String[] args) {
int i = 1;
inc(i);
System.out.println(i);
}
private static void inc(int num) {
num++;
}
}
👍6🔥1
Что выведет код?
Anonymous Quiz
47%
1
36%
2
18%
Ошибка компиляции
👍12🔥41
😁9🥰2
Локальные переменные в лямбда-выражениях

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

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

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


👉 Java Rocks | #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⌨️ Arrays.deepToString()

Метод deepToString из класса Arrays используется для создания строкового представления многомерных массивов (например, массивов массивов). Он обходит каждый уровень вложенности массива и выводит его элементы в виде строки. Это удобно для работы с многомерными массивами, так как стандартный метод toString не раскрывает их структуру.

Пример использования:

int[][] array = {{1, 2, 3}, {4, 5, 6}};
System.out.println(Arrays.deepToString(array));
// [[1, 2, 3], [4, 5, 6]]

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

👉 Java Rocks | #java #arrays #deeptostring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
This media is not supported in your browser
VIEW IN TELEGRAM
Voqal — это Java инструмент для разработчиков, который помогает повысить продуктивность через голосовое программирование.

С его помощью можно управлять IDE JetBrains голосом: перемещаться по коду, писать, запускать и отлаживать программы.

Ссылка: тык

👉 Java Rocks | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
public class Quest {
public static void main(String[] args) {
String s = null;
if (s != null & s.length() > 0) {
System.out.println("YES!");
} else {
System.out.println("NO!");
}
}
}
Что выведет код?
Anonymous Quiz
14%
YES!
46%
NO!
40%
Ошибка NullPointerException
🕯 Паттерн Decorator (Декоратор)

Decorator — это структурный паттерн, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в "декораторы". Это полезно для расширения функциональности без изменения существующего кода.

Использование:

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

Преимущества:

1️⃣ Паттерн позволяет гибко расширять поведение объектов на лету, не изменяя исходный код класса.
2️⃣ Устраняет необходимость создавать громоздкие подклассы с множеством вариаций, что уменьшает сложность системы.
3️⃣ Позволяет комбинировать несколько декораторов, чтобы получить более сложные поведения, сохраняя при этом структуру системы простой и модульной.
4️⃣ Реализует принцип единственной ответственности: каждая новая функциональность инкапсулируется в отдельный класс-декоратор.

Недостатки:

1️⃣ Усложнение отладки программы, так как наличие множества обёрток может затруднять понимание того, где и как обрабатываются запросы.
2️⃣ Создание большого числа мелких объектов-декораторов, что может увеличить потребление памяти и усложнить структуру системы.

👉 Java Rocks | #паттерны
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
FileChannel

FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.

Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.

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


👉 Java Rocks | #java
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Почему 1==1 это true, а 128==128 это false?


Integer a = 128;
Integer b = 128;
System.out.println(a == b); // false

Integer x = 1;
Integer y = 1;
System.out.println(x == y); // true


Это не просто волшебство! Это связано с целочисленным кэшированием в Java.

Для значений в диапазоне от -128 до 127 объекты типа Integer кэшируются, и ссылки на них одинаковы, а для значений за пределами этого диапазона создаются новые объекты, и ссылки на них будут разными. Так как используется оператор ==, то сравниваются ссылки на объекты.

👉 Java Rocks | #java #magic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
👍4
10 лучших Java-проектов для начинающих 2024 года с исходным кодом

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

Ссылка: тык

👉 Java Rocks | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
public class Quest {
public static void main(String[] args) {
int x = 1;
System.out.println("x+1 = " + x+1);
}
}
Что выведет код?
Anonymous Quiz
29%
x+1 = 2
31%
x+1 = 2
40%
Ошибка компиляции
👎5😁4
ℹ️ Метод-референсы

В Java 8 появился новый способ улучшить читаемость кода — ссылки на методы. Это позволяет ссылаться на существующие методы без их вызова, делая код более кратким и понятным.

🔍 Типы метод-референсов:

1️⃣ Статические методы: Позволяют ссылаться на статические методы класса.
Пример: Integer::parseInt

2️⃣ Методы экземпляра: Ссылки на методы конкретного объекта.
Пример: myObject::toString

3️⃣ Методы любого объекта типа: Для методов любого экземпляра заданного класса.
Пример: String::toUpperCase

4️⃣ Конструкторы: Ссылки на конструкторы для создания новых объектов.
Пример: ArrayList::new

⚡️ Пример использования:

Вместо стандартной лямбды:

list.forEach(item -> System.out.println(item));


Можно использовать ссылку на метод:

list.forEach(System.out::println);


А Вы используете ссылки на методы в своих проектах?👇

👉 Java Rocks | #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Инкапсуляция

Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.

Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.

При запуске этой программы на выходе мы получим:
John 0


👉 Java Rocks | #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
⌨️ Срезы в стримах. Метод dropWhile

Операция dropWhile служит дополнением к операции takeWhile. Она отбрасывает первые элементы, для которых предикат возвращает true. Как только результат вычисления предиката становится ложным, она прекращает работу и возвращает все оставшиеся элементы, причем работает даже в том случае, если число оставшихся элементов бесконечно!


List<Integer> ints = List.of(1,2,3,4,5,6,7,8,9);
ints.stream()
.dropWhile(i -> i < 5)
.forEach(System.out::println);
// 5 6 7 8 9


👉 Java Rocks | #java #stream #dropWhile
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔥Полный гайд по алгоритмам сортировки на Java

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

✍️ Особенно актуально для собеседующихся

Ссылка: тык

👉 Java Rocks | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2