为什么java.lang.Integer不包含.charValue()?
所有类型的原语都可以从为什么java.lang.Integer不包含.charValue()?,java,jvm,primitive-types,Java,Jvm,Primitive Types,所有类型的原语都可以从java.lang.Integer中检索,除了char之外。每个原语都有一个数字表达式,那么为什么java不允许Integer.charValue()?char不是数字吗?我还注意到java.lang.Character没有扩展java.lang.Number是的,char不是一个数字。字符是UTF编码。 Unicode是一种16位字符编码系统。最低值为\u0000,最高值为\uFFFF。 char也是无符号类型 这对我来说没有意义。在字节码中,字符表示为int,那么为什么
java.lang.Integer
中检索,除了char
之外。每个原语都有一个数字表达式,那么为什么java不允许Integer.charValue()
?char
不是数字吗?我还注意到java.lang.Character
没有扩展java.lang.Number
是的,char不是一个数字。字符是UTF编码。
Unicode是一种16位字符编码系统。最低值为\u0000,最高值为\uFFFF。
char也是无符号类型 这对我来说没有意义。在字节码中,字符表示为int,那么为什么java.lang.Character不是java.lang.Number呢?@GraxCode您可以对
布尔值说同样的话。尽管如此,boolean
、char
和int
之间还是存在语义上的差异。2000万的charValue
是什么?@stunbar你的观点毫无意义,因为存在有意义的Integer.byteValue()
。字节是一个数字,它只需要低8位。字符至少由16位表示,但可能更多。这取决于角色集。那么charValue
会返回什么呢?16位?32位?还是8位ASCII码?它将改变char原语的最大值为65535,因此它应该返回16位(无符号)。即使在字节码中,字符和布尔值也被当作int来处理,所以我真的不明白为什么没有charValue
或booleanValue