charBuffer
Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу
Этот метод возвращает объект
В этом примере создается строка "Hello". Затем из этой строки получаем буфер символов методом
В цикле посимвольно читаем из буфера символы и выводим их на экран.
Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу
String.Этот метод возвращает объект
CharBuffer, который представляет последовательность символов строки.CharBuffer позволяет эффективно читать и манипулировать символами строки без создания копий.В этом примере создается строка "Hello". Затем из этой строки получаем буфер символов методом
charBuffer().В цикле посимвольно читаем из буфера символы и выводим их на экран.
👍14❤3
Зачем нужны и какие бывают блоки инициализации?
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
• Блок инициализации возможно создать и в анонимном классе.
Блоки инициализации представляют собой код, заключенный в фигурные скобки и размещаемый внутри класса вне объявления методов или конструкторов.
• Существуют статические и нестатические блоки инициализации.
• Блок инициализации выполняется перед инициализацией класса загрузчиком классов или созданием объекта класса с помощью конструктора.
• Несколько блоков инициализации выполняются в порядке следования в коде класса.
• Блок инициализации способен генерировать исключения, если их объявления перечислены в
throws всех конструкторов класса.• Блок инициализации возможно создать и в анонимном классе.
👍19
Класс java.util.Date
Класс java.util.Date представляет дату и время.
Конструкторы
Методы
Методы как
Методы
Класс java.util.Date представляет дату и время.
Date хранит дату и время в миллисекундах с 1 января 1970 года 00:00:00 по UTC.Конструкторы
Date() и Date(long date) позволяют создать объект Date с текущей датой/временем или указанной датой/временем в миллисекундах.Методы
getTime() и setTime(long time) позволяют получить и установить время в миллисекундах.Методы как
getDay(), getMonth() и т. д. позволяют получить отдельные компоненты даты/времени.Методы
before() и after() позволяют сравнивать даты.👍8🤔2
Чем полезны неизменяемые объекты?
Неизменяемость (
Неизменяемость (
immutability) помогает облегчить написание многопоточного кода. Неизменяемый объект может быть использован без какой-либо синхронизации. К сожалению, в Java нет аннотации @Immutable, которая делает объект неизменяемым, для этого разработчикам нужно самим создавать класс с необходимыми характеристиками. Для этого необходимо следовать некоторым общим принципам: инициализация всех полей только в конструкторе, отсутствие методов setX() вносящих изменения в поля класса, отсутствие утечек ссылки, организация отдельного хранилища копий изменяемых объектов и т.д.👍18
Для чего нужен метод hashCode()?
Метод
• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
Метод
hashCode() необходим для вычисления хэш кода переданного в качестве входного параметра объекта. В Java это целое число, в более широком смысле - битовая строка фиксированной длины, полученная из массива произвольной длины. Этот метод реализован таким образом, что для одного и того же входного объекта, хэш код всегда будет одинаковым. Следует понимать, что в Java множество возможных хэш кодов ограничено типом int, а множество объектов ничем не ограничено. Из-за этого, вполне возможна ситуация, что хэш коды разных объектов могут совпасть:• если хэш коды разные, то и объекты гарантированно разные;
• если хэш коды равны, то объекты могут не обязательно равны.
👍13
Что такое тернарный оператор выбора?
Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.
Выражение записывается в следующей форме:
Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.
Выражение записывается в следующей форме:
условие ? выражение1 : выражение2Если условие выполняется, то вычисляется выражение1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражение2 и его значение становится результатом работы оператора. Оба операнда выражение1 и выражение2 должны возвращать значение одинакового (или совместимого) типа.
👍23
Collections.emptyList()
Collections.emptyList() возвращает пустой неизменяемый список.
Это статический фабричный метод из класса
Основные моменты:
— Возвращает пустой список, а не
— Список неизменяемый (
— Работает быстрее, чем создание нового списка через
— Может использоваться как значение по умолчанию или стартовое значение для списка.
Collections.emptyList() возвращает пустой неизменяемый список.
Это статический фабричный метод из класса
Collections, который возвращает пустой список типа List<Object>.Основные моменты:
— Возвращает пустой список, а не
null. Это полезно, чтобы избежать проверок на null.— Список неизменяемый (
immutable). Нельзя добавлять или удалять элементы из него.— Работает быстрее, чем создание нового списка через
new ArrayList().— Может использоваться как значение по умолчанию или стартовое значение для списка.
👍22
unmodifiableList
unmodifiableList используется для создания неизменяемого списка на основе другого списка.
Это позволяет вернуть неизменяемую обертку вокруг модифицируемого списка, чтобы предотвратить случайные изменения этого списка.
Созданный список нельзя изменить: нельзя добавлять/удалять элементы, изменять их, иначе будет выброшено исключение.
В примере на основе
unmodifiableList используется для создания неизменяемого списка на основе другого списка.
Это позволяет вернуть неизменяемую обертку вокруг модифицируемого списка, чтобы предотвратить случайные изменения этого списка.
Созданный список нельзя изменить: нельзя добавлять/удалять элементы, изменять их, иначе будет выброшено исключение.
В примере на основе
mutableList создан неизменяемый список. Попытка изменить его выбросит исключение, но изменения в mutableList отразятся в immutableList.👍15
#вопросы_с_собеседований
Что такое Executor?
Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.
Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.
Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.
Что такое Executor?
Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.
Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.
👍14
#Вопросы_с_собеседования
Какие условия “благополучной” сериализации объекта?
Для успешной сериализации объекта должны выполняться следующие условия:
1. Класс объекта должен имплементировать интерфейс Serializable.
2. В классе должно быть определено serialVersionUID — идентификатор версии класса. Это нужно для совместимости версий класса при десериализации.
3. Все поля класса должны быть сериализуемыми типами данных. Примитивные типы сериализуются автоматически, для объектов вложенных классов нужно также выполнить условия сериализации.
4. Если в классе есть поля, которые не нужно сериализовывать, они помечаются модификатором transient.
5. Методы класса сериализации не подлежат, сериализуются только данные объекта.
6. Класс должен иметь конструктор по умолчанию без параметров для корректной десериализации.
Какие условия “благополучной” сериализации объекта?
1. Класс объекта должен имплементировать интерфейс Serializable.
2. В классе должно быть определено serialVersionUID — идентификатор версии класса. Это нужно для совместимости версий класса при десериализации.
3. Все поля класса должны быть сериализуемыми типами данных. Примитивные типы сериализуются автоматически, для объектов вложенных классов нужно также выполнить условия сериализации.
4. Если в классе есть поля, которые не нужно сериализовывать, они помечаются модификатором transient.
5. Методы класса сериализации не подлежат, сериализуются только данные объекта.
6. Класс должен иметь конструктор по умолчанию без параметров для корректной десериализации.
👍25🤔1
Метод weakCompareAndSwap()
Метод weakCompareAndSwap() используется для атомарного обновления полей объекта без блокировки.
Он позволяет сравнить значение поля с ожидаемым значением и установить новое значение, если они равны. Это полезно при реализации неблокирующих алгоритмов параллельного программирования.
В этом примере два потока пытаются атомарно изменить значение счетчика с
Метод weakCompareAndSwap() используется для атомарного обновления полей объекта без блокировки.
Он позволяет сравнить значение поля с ожидаемым значением и установить новое значение, если они равны. Это полезно при реализации неблокирующих алгоритмов параллельного программирования.
В этом примере два потока пытаются атомарно изменить значение счетчика с
0 на 1 и 2 соответственно. Метод weakCompareAndSwap гарантирует, что только один поток сможет успешно выполнить изменение.👍14
Mockito
Mockito — это фреймворк для создания заглушек (mocks) в Java. Заглушки — это имитаторы реальных объектов, которые используются при тестировании кода.
Зачем использовать Mockito?
С помощью Mockito вы можете легко создавать заглушки для сложных объектов, что позволяет вам сосредоточиться на тестировании конкретного фрагмента кода. Также заглушки Mockito позволяют вам имитировать различные сценарии, что помогает вам написать более надежные тесты.
#для_продвинутых
Mockito — это фреймворк для создания заглушек (mocks) в Java. Заглушки — это имитаторы реальных объектов, которые используются при тестировании кода.
Зачем использовать Mockito?
С помощью Mockito вы можете легко создавать заглушки для сложных объектов, что позволяет вам сосредоточиться на тестировании конкретного фрагмента кода. Также заглушки Mockito позволяют вам имитировать различные сценарии, что помогает вам написать более надежные тесты.
#для_продвинутых
👍16
Jackson
Jackson — это популярная библиотека Java для сериализации и десериализации объектов Java в различные текстовые форматы, такие как JSON, XML, YAML и CSV.
Jackson имеет простой и понятный API, что делает его доступным для начинающих разработчиков. Он работает очень быстро, что делает его идеальным выбором для высокопроизводительных приложений.
Jackson поддерживает широкий спектр функций и возможностей, что позволяет настроить его под ваши конкретные нужды. А также его можно расширить с помощью модулей для поддержки дополнительных форматов данных и функций.
#для_продвинутых
Jackson — это популярная библиотека Java для сериализации и десериализации объектов Java в различные текстовые форматы, такие как JSON, XML, YAML и CSV.
Jackson имеет простой и понятный API, что делает его доступным для начинающих разработчиков. Он работает очень быстро, что делает его идеальным выбором для высокопроизводительных приложений.
Jackson поддерживает широкий спектр функций и возможностей, что позволяет настроить его под ваши конкретные нужды. А также его можно расширить с помощью модулей для поддержки дополнительных форматов данных и функций.
#для_продвинутых
👍20
Apache POI
Apache POI – это библиотека с открытым исходным кодом для работы с форматами файлов Microsoft Office в Java.
Она позволяет читать, создавать и редактировать файлы Excel, Word, PowerPoint и другие.
#для_начинающих
Apache POI – это библиотека с открытым исходным кодом для работы с форматами файлов Microsoft Office в Java.
Она позволяет читать, создавать и редактировать файлы Excel, Word, PowerPoint и другие.
#для_начинающих
👍29
Библиотека Apache Commons BeanUtils
Apache Commons BeanUtils — это набор утилит для работы с Java-бинами в проектах на Java. Java-бин — это простой класс Java, который следует определенным соглашениям:
Он имеет поля (атрибуты) для хранения данных.
Он предоставляет методы доступа (геттеры и сеттеры) для чтения и записи значений этих полей.
Обычно он имеет пустой конструктор по умолчанию.
Библиотека BeanUtils упрощает работу с такими классами, избавляя вас от необходимости вручную вызывать методы доступа.
#для_продвинутых
Apache Commons BeanUtils — это набор утилит для работы с Java-бинами в проектах на Java. Java-бин — это простой класс Java, который следует определенным соглашениям:
Он имеет поля (атрибуты) для хранения данных.
Он предоставляет методы доступа (геттеры и сеттеры) для чтения и записи значений этих полей.
Обычно он имеет пустой конструктор по умолчанию.
Библиотека BeanUtils упрощает работу с такими классами, избавляя вас от необходимости вручную вызывать методы доступа.
#для_продвинутых
👍9🤔1
Apache Commons Lang3
Apache Commons Lang3 — это библиотека Java, предоставляющая набор утилит для работы с базовыми классами Java, такими как String, Object, Collection и др.
Она дополняет стандартную библиотеку Java, предоставляя дополнительные методы, которые часто используются в разработке.
#для_продвинутых
Apache Commons Lang3 — это библиотека Java, предоставляющая набор утилит для работы с базовыми классами Java, такими как String, Object, Collection и др.
Она дополняет стандартную библиотеку Java, предоставляя дополнительные методы, которые часто используются в разработке.
#для_продвинутых
👍15