java - 为什么 Float 和 Double 包装类在 java 中是不可变的?
问题描述
Byte、Short 和 Integer 维护一个缓冲池值,表示 -128 到 127。字符池值表示 '\u0000' 到 '\u007F'。
这样我就可以理解为什么上述所有包装类都是不可变的。
但是,Float 和 Double 不维护任何缓冲池,那么将这些类设为不可变的目的是什么?
我从下面的链接中读到它:
https ://coderanch.com/t/670745/java/Wrapper-Classes-Immutable
解决方案
首先,如果,Byte
和是不可变的,那么 make和mutable将是非常不一致的。Short
Character
Integer
Double
Float
可变性也有它的代价——你不能在多个线程之间安全地共享相同的资源。按需复制它们非常便宜。
我也没有看到使它们可变的用例-如果您想将其用作某些组合的输入/输出参数,那么这是一个糟糕的设计。
推荐阅读
- azure-service-fabric - 转换 app.config Service Fabric 来宾可执行文件
- visual-studio - OpenSSL SSL_connect: SSL_ERROR_SYSCALL VS2017 Community / TFS
- node.js - 回调问题设置变量节点
- python - 流程重复 3 次后响应异常
- ruby-on-rails - Rails Devise_token_auth invalid_credentials: OAuth2::Error
- java - 春季批处理作业未读取第一行
- java - 使用 EventBus 时处理 Vert.x NetSocket writeQueueFull
- javascript - TypeScript 返回不可变/常量/只读数组
- python - Jira POST & PUT Rest 调用从 Python 返回错误 400
- julia - 在 Julia-Lang 中包含文件以考虑更新的正确方法