Что такое immutable объекты в Java Это многофункциональные immutable (неизменяемые) объекты, которые можно применять в разных частях программы. Например, это могут быть неизменяемые объекты в многопоточной среде для работы с данными. Также это могут быть сложные константы, которые помогают избежать излишнего использования памяти и перегрузки сборщика мусора (garbage collector). Отдельно стоит упомянуть иммутабельность при работе с коллекциями. Основные параметры имутабельных классов (immutable classes) Для того чтобы сказать, что класс является immutable (неизменяемым) он должен соотвествовать следующим критериям: Не предоставляйте методы, которые модифицируют состояние объекта. Такие методы могут напрямую модифировать состояние…
Read MoreРубрика: String
Обзор класса String в Java. Детальное рассмотрение функционала.
В данной статье будут рассмотрены базовые функции по работе со строками. Где будет объснено назначения класса String в Java, сложение, сравнение, поиск и другой функционал связанный со строками. Назначение класса String в Java Класс String, в первую очередь, предназначен для работы со строками. Ранее мы рассматривали, что в Java существуют строковые литералы и строковые объекты. Давайте рассмотрим основные особенности класса String: Класс имеет immutable состояние. Это означает, что после создания, каждый раз модифицируя его мы будет получать не модифицированный класс, а новую копию. В свою очередь, чтобы избежать излишнего использования…
Read MoreКак хранится в памяти java.lang.String. Оптимизация использования.
Класс java.lang.String пожалуй один из более всего используемых в Java. С помощью строк можно хранить большое множество разных типов данных. Далее в статье мы подробнее рассмотрим, как JVM хранит данные, оптимизацию хранения и другие особенности строк в Java. Что такое pool строк Это определенное хранилище в памяти JVM для хранение строк. Еще это хранилище называется, как Java String Pool. В зависимости от версии Java хранится данные будут по разному. В Java 6 строки хранились в PermGen пространстве, которое настраивалось при старте JVM. Данное пространство памяти было статическим, расширять его в…
Read More