Я знаю, что целые числа неизменны в Java. Но почему он разработан таким образом?
Я прочитал другие ответы, прежде чем задавать этот вопрос:
Является ли Integer неизменным
я ++ все еще работает для неизменяемого Integer в Java?
Почему классы оболочки Java неизменяемы?
Но я не мог найти вариант использования, который обязывает Integer быть неизменным. Существуют ли какие-либо технические причины, например, для String?
- Строка используется как параметр в сетевом соединении, URL-адрес базы данных и т.д. Его можно легко скомпрометировать, если он изменен.
- Для поддержки средства StringPool.
- Для поддержки механизма загрузки классов, в котором строки используются в качестве аргументов. Строка, изменяемая, приводит к загрузке неправильного класса.
Я понимаю, что есть обертки, такие как AtomicInteger
для mutable.
UPDATE:
Из беседы нет универсальной причины, которая могла бы гарантировать, что Целые являются неизменными. Однако, делая неизменным, он дает некоторый бонус, как указано в ответах.
Такая цитата из Andrey
возможность кэширования.
Другие сокращают глобальное состояние
проще многопоточность