首页 > 解决方案 > 为什么 Float 和 Double 包装类在 java 中是不可变的?

问题描述

Byte、Short 和 Integer 维护一个缓冲池值,表示 -128 到 127。字符池值表示 '\u0000' 到 '\u007F'。

这样我就可以理解为什么上述所有包装类都是不可变的。

但是,Float 和 Double 不维护任何缓冲池,那么将这些类设为不可变的目的是什么?

我从下面的链接中读到它:
https ://coderanch.com/t/670745/java/Wrapper-Classes-Immutable

标签: javawrapperimmutability

解决方案


首先,如果,Byte和是不可变的,那么 make和mutable将是非常不一致的。ShortCharacterIntegerDoubleFloat

可变性也有它的代价——你不能在多个线程之间安全地共享相同的资源。按需复制它们非常便宜。

我也没有看到使它们可变的用例-如果您想将其用作某些组合的输入/输出参数,那么这是一个糟糕的设计。


推荐阅读