Java Developer – Telegram
Java Developer
15.7K subscribers
1.86K photos
140 videos
2 files
2.09K links
Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Download Telegram
Что выведет код сверху?
Anonymous Quiz
32%
s1 == s2 is: true
17%
false
44%
s1 == s2 is: false
6%
true
⌨️ Ключевое слово «this»

В Java ключевое слово this используется для ссылки на текущий объект внутри класса.

Это может быть использовано в следующих случаях:

Для ссылки на переменные экземпляра класса, чтобы различать их от локальных переменных или параметров метода, имеющих тот же самый идентификатор;

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

Для передачи ссылки на текущий объект другому методу или конструктору в качестве аргумента.

В примере мы используем this.name вместо name, чтобы указать, что мы обращаемся к переменной экземпляра класса Person, а не к параметру конструктора name.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Можно ли в конструкторе выполнить исключение (exception)?

Ответ: Да. Если при создании объекта возникает ошибка, которая не может быть обработана внутри конструктора, то можно выбросить исключение, чтобы сообщить об ошибке вызывающему коду.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
9%
5, 4
6%
2, 1, 0
68%
25, 16
16%
Ошибка компиляции
⌨️ Ключевое слово throws

Ключевое слово throws используется для объявления того, что метод может выбросить исключение определенного типа. Это ключевое слово позволяет программисту указать возможные исключения, которые могут быть выброшены из метода при его выполнении.

В примере метод readFile() может выбросить два исключения: FileNotFoundException и IOException. Таким образом, если другой метод вызовет метод readFile() и не обработает эти исключения, то он должен будет объявить ключевое слово throws в своем объявлении метода.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из примитивов синхронизации подойдёт для многопоточного доступа к переменной?
Anonymous Quiz
35%
ReentrantLock
21%
CountdownLatch
24%
Future
11%
Phaser
10%
CyclicBarrier
⌨️ Метод repeat()

Метод repeat() копирует содержимое строки заданное количество раз и возвращает результат в одной строке.

Синтаксис: String repeat(int count)

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Поддерживается ли в Java множественное наследование?

Ответ: Java не поддерживает множественное наследование классов, т.е. наследование от нескольких классов одновременно. Однако, можно использовать интерфейсы для реализации множественного наследования.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Собственное исключение при делении на ноль

DivideByZeroException — собственное исключение, которое наследуется от класса Exception. В блоке try происходит проверка: если делитель равен нулю, то выбрасывается это исключение с соответствующим сообщением. В блоке catch перехватывается исключение и выводится сообщение об ошибке.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️ Тернарный оператор

Тернарный условный оператор ?: — оператор, которым можно заменить некоторые конструкции операторов if-then-else.

Выражение записывается в следующей форме:

условие ? выражение1 : выражение2

Если условие выполняется, то вычисляется «выражение1» и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется «выражение2» и его значение становится результатом работы оператора. Оба операнда «выражение1» и «выражение2» должны возвращать значение одинакового (или совместимого) типа.
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседования

Можно ли объявить несколько main-методов в коде Java-приложения?

Ответ: Метод main() — точка входа в программу. В приложении может быть несколько таких методов. Если метод отсутствует, то компиляция возможна, но при запуске будет получена ошибка Error: Main method not found.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Задача с LeetCode (Minimum Path Sum)

Описание и условие задачи на YouTubeКЛИК

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

Для решения воспользуемся динамическим программированием:

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

Последний цикл for обновляет остальные значения внутри массива grid, выбирая минимальное значение из верхней и левой ячейки и добавляя его к текущей ячейке.

Конечный результат возвращается из последней ячейки массива grid.

Эта задача на LeetCode — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код сверху?
Anonymous Quiz
11%
ABC
30%
BCD
12%
ABCD
47%
Ошибка компиляции
😁1
⌨️ Обработка нескольких исключений в одном блоке catch

В этом примере мы пытаемся преобразовать строку, которая не является целым числом, в переменную типа int. Затем мы пытаемся вызвать метод length() для переменной типа String, которой было присвоено значение null. Оба этих действия могут привести к выбросу различных исключений, таких как NumberFormatException или NullPointerException.

Мы перехватываем оба исключения в блоке catch с помощью оператора | (или), который позволяет указывать несколько типов исключений через запятую. Затем мы выводим сообщение об ошибке.

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Что выведет код сверху?
Anonymous Quiz
10%
1
33%
5
9%
15
48%
Ошибка компиляции
📌 Задача с LeetCode (Integer to English Words)

Описание и условие задачи на YouTubeКЛИК

Требуется преобразовать неотрицательное целое число num в его представление английскими словами (50 — "Fifty").

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

Для чисел до 20 вернём слово из массива "ones".

Для чисел до 100 верните слово из массива "tens", плюс рекурсивный вызов с остатком от деления на 10.

Для чисел до 1000 верните слово из массива "ones", разделенное на 100, слово "Сто" и рекурсивный вызов с остатком от деления на 100.

Для больших чисел выполним цикл по массиву "thousands" и рекурсивно вызовем функцию с частным от деления на 1000 и остатком от деления на 1000.

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

Эта задача на LeetCode — КЛИК

➡️ Java Developer
Please open Telegram to view this post
VIEW IN TELEGRAM