Блоки инициализации используются для выполнения определенного кода при создании объекта. Их использование позволяет вынести логику инициализации полей объекта за пределы конструкторов.
Бывает два типа блоков инициализации:
Please open Telegram to view this post
VIEW IN TELEGRAM
Для проверки, является ли строка палиндромом в Java, можно сравнить каждый символ строки с его зеркальным отражением.
В примере на картинке мы создаем метод
isPalindrome, который принимает на вход строку str. В цикле for мы сравниваем символы строки str с их зеркальными отражениями. Если символы не совпадают, то строка не является палиндромом, и мы возвращаем значение false. Если же все символы совпадают, то строка является палиндромом, и мы возвращаем значение true.В методе
main мы создаем строку str со значением "level", вызываем метод isPalindrome, передавая ему эту строку в качестве аргумента, и выводим результат на экран.Please open Telegram to view this post
VIEW IN TELEGRAM
Агрегация и композиция — это два разных подхода к организации классов и объектов в объектно-ориентированном программировании.
В целом, основное различие между композицией и агрегацией заключается в том, насколько тесной является связь между контейнером и его компонентами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Множественное наследование — это возможность создания класса на основе нескольких базовых классов. В Java множественное наследование классов не поддерживается. Однако, можно реализовать множественное наследование интерфейсов.
Для реализации множественного наследования используется ключевое слово
implements, которое позволяет классу реализовать несколько интерфейсов. В примере на картинке класс MyClass реализует два интерфейса InterfaceA и InterfaceB. При этом он должен предоставить реализацию всех методов, объявленных в этих интерфейсах.Также в Java 8 было добавлено ключевое слово default. Оно позволяет определять методы с реализацией по умолчанию в интерфейсах. Это позволяет создавать общую реализацию методов, которые могут быть переопределены в классах, реализующих интерфейс.
Please open Telegram to view this post
VIEW IN TELEGRAM
Прокси-объект (Proxy Object) — это объект, который выступает в качестве заменителя другого объекта и контролирует доступ к нему. Прокси-объект может использоваться для передачи запросов к оригинальному объекту через промежуточный уровень, что позволяет выполнять дополнительную обработку или проверку перед выполнением запроса.
В Java прокси-объекты создаются с помощью интерфейсов. Если у нас есть интерфейс, который определяет методы, которые должны вызываться на оригинальном объекте, мы можем создать прокси-объект, который реализует этот интерфейс и перенаправляет вызовы методов к оригинальному объекту. При этом мы можем выполнять нужные операции до или после вызова методов на оригинальном объекте.
Примеры использования прокси-объектов в Java:
Please open Telegram to view this post
VIEW IN TELEGRAM
Immutable object (неизменяемый объект) — это объект, чье состояние не может быть изменено после создания. В Java неизменяемые объекты обычно реализуются путем объявления класса с
final модификатором и установкой всех полей класса как final.Неизменяемые объекты имеют следующие особенности:
В примере на картинке класс
ImmutableClass является неизменяемым, потому что его поле value объявлено как final. После создания объекта этого класса значение value не может быть изменено.Please open Telegram to view this post
VIEW IN TELEGRAM
Можно ли использовать private или protected переменные в interface?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
Ковариантность типов — это свойство некоторых языков программирования, которое позволяет использовать производный тип вместо базового типа в контексте, где ожидается базовый тип. Другими словами, ковариантность позволяет использовать объекты производных классов там, где требуется объект базового класса.
В примере класс
Dog наследует класс Animal. Метод reproduce() в классе Animal возвращает объект типа Animal, а в классе Dog этот же метод переопределен и возвращает объект типа Dog. Таким образом, тип возвращаемого значения стал ковариантным.Ковариантность типов полезна, когда нужно работать с коллекциями. Например, можно объявить переменную типа List и добавлять в нее объекты типа Dog и других производных классов. Без ковариантности это было бы невозможно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Run-Time Data Areas — это области памяти, которые выделяются для хранения данных во время выполнения Java-программы. В Java существует несколько Run-Time Data Areas:
Каждая из этих областей памяти имеет свои особенности и используется различными компонентами JVM во время выполнения программы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Описание, условие и объяснение алгоритма решения задачи на YouTube — КЛИК
searchMatrix() — метод, который определяет, содержит ли двумерный массив «matrix» заданное значение «k».При помощи оператора
if происходит проверка, является ли массив null или имеет ли он нулевую длину. Если это так, то метод вернёт false.Переменные
m и n хранят количество строк и столбцов, а переменные i и j используются для перебора элементов массива.Внутри цикла
while проверяется текущий элемент matrix[i][j]:k, метод вернёт true;k, тогда j уменьшается на 1 и переходит к следующему элементу в строке;k, тогда i увеличивается на 1 и переходит к следующей стооке;Если метод не вернёт
true до окончания цикла, значит число k не найдено и метод вернёт false.Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Data упрощает работу с системами доступа к данным: реляционными и нереляционными базами данных, map-reduce фреймворками и облачными хранилищами. Центральная концепция Spring Data — репозитории из предметно-ориентированного дизайна (Domain-driven design, DDD).
Spring Data состоит из множества отдельных библиотек для разных случаев жизни. Вот самые популярные из них:
Please open Telegram to view this post
VIEW IN TELEGRAM
Смотреть видео
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Local Variable?
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
Переименовать файл можно, переместив содержимое первого файла в новый файл и удалив предыдущий файл. Java обрабатывает эту операцию, используя метод
resolveSibiling(). Он используется для разрешения данного пути относительно родительского пути этого пути.Please open Telegram to view this post
VIEW IN TELEGRAM
Описание, условие и объяснение алгоритма решения задачи на YouTube — КЛИК
twoSum() — метод, который находит два числа в массиве, сумма которых равна заданному числу «k».Цикл
for перебирает все элементы массива. Для каждого элемента определяем число, которое необходимо найти, чтобы получить сумму k. Для этого из k вычитается текущий элемент nums[i].Затем определяется два указателя —
left и right. left указывает на следующий элемент после текущего, а right — на последний элемент массива.Внутри цикла
while выполняется бинарный поиск:mid между left и right;nums[mid] равно искомому числу (numberToFind), то возвращается массив с текущим элементом nums[i] и число nums[mid];numberToFind < nums[mid], то right = mid - 1, чтобы продолжить поиск левее;numberToFind > nums[mid], то left = mid + 1, чтобы продолжить поиск правее;Если внутри цикла
while не найдено равное число, то переходим к следующему элементу массива и повторяем процесс поиска. Если после перебора всех элементов не найдена пара чисел, возвращается пустой массив new int[0].Please open Telegram to view this post
VIEW IN TELEGRAM