【发布时间】:2010-06-24 08:27:52
【问题描述】:
我最初对 Java 决定指定 byte 已签名感到惊讶,其范围为 -128..127(含)。我的印象是大多数 8 位数字表示都是无符号的,取而代之的是 0..255 的范围(例如 IPv4 in dot-decimal notation)。
James Gosling 是否曾被要求解释为什么他决定签署byte?过去,权威的编程语言设计者和/或批评者之间是否就这个问题进行过显着的讨论/辩论?
【问题讨论】:
-
好问题。这是一个真正无用的数据类型。
-
“我的印象是大多数 8 位数字表示都是无符号的......” 嗯,通常称为“字节”的那些是,是的。那些称为“char”的往往不是。高斯林想让所有东西都签名,这很公平,尽管我真的希望他给它换个名字,8位签名号码。 (但是,我真的希望他也有无符号的数字。)
-
停止抱怨 Java 没有无符号字节,这不是问题。唯一的小不便是您需要将十六进制常量表转换为字节。其他一切见stackoverflow.com/questions/397867/…
-
@starblue 嗯?显然,您不必在 Java(解析器、编码器)中编写任何字节处理代码……这是一个主要的 PITA。也可能是性能问题,这取决于 jvm 如何能够优化强制转换(或不优化)。顺便说一句,关于符号扩展,问题甚至不仅限于字节,还包括短整型。
-
@starblue 尝试重构基于字节的通信协议的 Java 实现,然后告诉我无符号字节不是问题!噩梦更像
标签: java types language-design byte