Объекты каких стандартных классов immutable в Java?

В Java есть несколько стандартных классов, объекты которых являются неизменяемыми (immutable). Неизменяемость означает, что после создания объекта его состояние не может быть изменено. Любые операции, которые кажутся модификацией объекта, фактически создают новый объект с измененным состоянием. Вот несколько примеров неизменяемых классов в Java:

  1. java.lang.String: Строки в Java являются неизменяемыми. Все операции, которые кажутся модификацией строки, создают новую строку.java

String str = "Hello"; str = str.concat(", World!"); // Новая строка создается

java.math.BigInteger: Класс BigInteger представляет неограниченно длинные целые числа и является неизменяемым.

java

BigInteger bigInteger1 = new BigInteger("12345678901234567890"); BigInteger bigInteger2 = bigInteger1.add(new BigInteger("1")); // Новый объект BigInteger создается

java.time.* (новые классы времени в пакете java.time): Многие классы для работы с временем в новом API времени также являются неизменяемыми.

java

LocalDate date = LocalDate.now(); LocalDate tomorrow = date.plusDays(1); // Новый объект LocalDate создается

java.lang.Integer, java.lang.Double, и другие оболочечные классы: Оболочечные классы для примитивных типов данных также являются неизменяемыми.

java

Integer num = 42; num = num + 1; // Новый объект Integer создается

java.awt.Color: Объекты класса Color из пакета java.awt тоже являются неизменяемыми.

java

  1. Color red = new Color(255, 0, 0); Color brighterRed = red.brighter(); // Новый объект Color создается

Эти классы предоставляют преимущества, такие как безопасность потоков и предсказуемое поведение в многопоточных сценариях, а также удобство использования в различных контекстах.