Что такое полиморфизм?
Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта. Как говорится, один интерфейс — множество реализаций.
При помощи полиморфизма можно объединять и использовать разные типы объектов по их общему поведению.
Например, есть у нас класс Animal, у которого есть два наследника — Dog и Cat. У общего класса Animal есть общее поведение для всех — издавать звук. В случае, когда нужно собрать воедино всех наследников класса Animal и выполнить метод “издавать звук”, используем возможности полиморфизма. Вот как будет это выглядеть(см картинку).
Таким образом, полиморфизм помогает нам. Причем это относится и к полиморфным (перегруженным) методам.
Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта. Как говорится, один интерфейс — множество реализаций.
При помощи полиморфизма можно объединять и использовать разные типы объектов по их общему поведению.
Например, есть у нас класс Animal, у которого есть два наследника — Dog и Cat. У общего класса Animal есть общее поведение для всех — издавать звук. В случае, когда нужно собрать воедино всех наследников класса Animal и выполнить метод “издавать звук”, используем возможности полиморфизма. Вот как будет это выглядеть(см картинку).
Таким образом, полиморфизм помогает нам. Причем это относится и к полиморфным (перегруженным) методам.
👍23😢1
Бинарный поиск в массивах
Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.
Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.
Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.
Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.
👍11🤔3
Дорожная карта Java-разработчика в 2023 году: путь с нуля до первой работы
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Смотреть статью
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Смотреть статью
Библиотека программиста
☕🛣️ Дорожная карта Java-разработчика в 2023 году: путь с нуля до первой работы
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
👍9
#Вопросы_с_собеседования
Что выведет эта программа?
Ответ:
Программа напечатает “String method”. Прежде всего стоит отметить, что null не является объектом в Java. Но null можно присвоить любой ссылке. Java String является объектом класса java.lang.String. В этой программе компилятор Java выбирает вызов перегруженного метода с наиболее конкретными параметрами. Это будет String, потому что класс String более конкретен, чем класс Object.
Что выведет эта программа?
Ответ:
👍49😱25❤1
#Вопросы_с_собеседования
❓Что такое «поток-демон»(daemon thread)?
Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.
В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.
❓Что такое «поток-демон»(daemon thread)?
Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.
В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков – демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.
👍26🤔1
Java Learning
#Вопросы_с_собеседования ❓Что такое «поток-демон»(daemon thread)? Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы. В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже…
#Вопросы_с_собеседования
❓Как создать поток-демон?
Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true).
Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon().
❓Как создать поток-демон?
Объявить поток демоном достаточно просто — нужно перед запуском потока вызвать его метод setDaemon(true).
Проверить, является ли поток демоном, можно вызвав его метод boolean isDaemon().
👍19
#вопросы_с_собеседований
Как получить текущую дату с использованием Date Time API из Java 8?
Как получить текущую дату с использованием Date Time API из Java 8?
LocalDate.now();
Как добавить 1 неделю, 1 месяц, 1 год, 10 лет к текущей дате с использованием Date Time API?LocalDate.now().plusWeeks(1);
LocalDate.now().plusMonths(1);
LocalDate.now().plusYears(1);
LocalDate.now().plus(1, ChronoUnit.DECADES);👍27
В чем разница между sleep() и wait(), notify() и notifyAll() методами?
Метод sleep()заставляет поток "заснуть" на определенное время(указывается в миллисекундах) после чего поток продолжит свою работу. Метод wait() освобождает монитор занятый потоком так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting - поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll()в том что notify() "высвободит" один поток(какой именно определить нельзя) а notifyAll() "освободит" все потоки из состояния waiting в состояние running.
Метод sleep()заставляет поток "заснуть" на определенное время(указывается в миллисекундах) после чего поток продолжит свою работу. Метод wait() освобождает монитор занятый потоком так что другие потоки могут использовать указанный блок кода и поток переходит в состояние waiting - поток будет ждать вызова метода notify() или notifyAll() другим потоком. Разница между notify() и notifyAll()в том что notify() "высвободит" один поток(какой именно определить нельзя) а notifyAll() "освободит" все потоки из состояния waiting в состояние running.
👍20
Что выведет программа?
Anonymous Quiz
12%
HELLO
44%
BYE
39%
Compiler error
3%
Ничего
2%
Runtime Error
👍20😱15🤔3😢2
#Вопросы_с_собеседования
❓Как разбить строку на подстроки по заданному разделителю?
Мы можем использовать метод split(String regex) для разделения строки на массив символов, используя в качестве разделителя регулярное выражение.
Метод split(String regex, int numOfStrings) является перегруженным методом для разделения строки на заданное количество строк. Мы можем использовать обратную черту для использования специальных символов регулярных выражений в качестве обычных символов.
❓Как разбить строку на подстроки по заданному разделителю?
Мы можем использовать метод split(String regex) для разделения строки на массив символов, используя в качестве разделителя регулярное выражение.
Метод split(String regex, int numOfStrings) является перегруженным методом для разделения строки на заданное количество строк. Мы можем использовать обратную черту для использования специальных символов регулярных выражений в качестве обычных символов.
👍15
План подготовки к собеседованию на позицию Java разработчика
Каждый раз, готовясь к собеседованиям на позицию «Java разработчик», я понимаю, что мне бы очень помог конкретный план подготовки. Поэтому все свои записи, накопившиеся в ходе прохождения собеседований, было решено структурировать и опубликовать. Надеюсь, кому-то этот план будет полезен.
Смотреть статью
Каждый раз, готовясь к собеседованиям на позицию «Java разработчик», я понимаю, что мне бы очень помог конкретный план подготовки. Поэтому все свои записи, накопившиеся в ходе прохождения собеседований, было решено структурировать и опубликовать. Надеюсь, кому-то этот план будет полезен.
Смотреть статью
Хабр
План подготовки к собеседованию на позицию Java разработчика
Каждый раз, готовясь к собеседованиям на позицию «Java разработчик», я понимаю, что мне бы очень помог конкретный план подготовки. Поэтому все свои записи, накопившиеся в ходе прохождения...
👍17❤2
#Вопросы_с_собеседования
Java передает аргументы по значению или по ссылке?
Java всегда передает аргументы по значению (pass-by-value). Тем не менее, когда мы передаем значение объекта, мы передаем ссылку на него, потому что переменные хранят ссылку на объект, а не сам объект. Но это не передача по ссылке (pass-by-reference). Такое положение дел может быть не совсем понятно новичкам.
Java передает аргументы по значению или по ссылке?
Java всегда передает аргументы по значению (pass-by-value). Тем не менее, когда мы передаем значение объекта, мы передаем ссылку на него, потому что переменные хранят ссылку на объект, а не сам объект. Но это не передача по ссылке (pass-by-reference). Такое положение дел может быть не совсем понятно новичкам.
👍23
👍19🤔2😱1
Что такое Dead lock?
Случай когда у нас выполняются два потока(A, B) и наш первый поток(А) заблокировал метод a() и второй поток(В) заблокировал метод b() и в то же время поток А пытается получить доступ к методу b(), а поток B пытается получить доступ к методу а() называют dead lock.
Случай когда у нас выполняются два потока(A, B) и наш первый поток(А) заблокировал метод a() и второй поток(В) заблокировал метод b() и в то же время поток А пытается получить доступ к методу b(), а поток B пытается получить доступ к методу а() называют dead lock.
👍21
Как можно извлечь цвет изображения из PDF IText Java?
Чтобы извлечь цвет изображения из PDF-файла с помощью IText и Java, вы можете использовать класс PdfImageObject для извлечения необработанных данных изображения из PDF-файла, а затем использовать класс BufferedImage из API ввода-вывода изображений Java для создания буферизованного изображения из необработанных данных.
Оттуда вы можете использовать метод getRGB() класса BufferedImage для получения цвета определенного пикселя изображения.
Чтобы извлечь цвет изображения из PDF-файла с помощью IText и Java, вы можете использовать класс PdfImageObject для извлечения необработанных данных изображения из PDF-файла, а затем использовать класс BufferedImage из API ввода-вывода изображений Java для создания буферизованного изображения из необработанных данных.
Оттуда вы можете использовать метод getRGB() класса BufferedImage для получения цвета определенного пикселя изображения.
👍15❤1
Что из нижеперечисленного является в Java ключевым словом?
Anonymous Quiz
35%
goto
16%
array
24%
null
25%
true
🤔17👍11❤1
Что нового в Java 20?
Версия Java 20 должна быть выпущена в марте 2023 года, и ожидается, что в ней появится целый ряд изменений и новых функциональных возможностей.
Смотреть статью
Версия Java 20 должна быть выпущена в марте 2023 года, и ожидается, что в ней появится целый ряд изменений и новых функциональных возможностей.
Смотреть статью
👍20❤1