java - 为什么 Java 中没有字节或短文字?

标签 java primitive

我可以通过将 L 附加到值来创建文字 long;为什么我不能以类似的方式创建文字短或字节?为什么我需要使用带有强制转换的 int 字面量?

如果答案是“因为 C 中没有短文字”,那么为什么 C 中没有短文字?

这实际上并没有以任何有意义的方式影响我的生活;写(短)0 而不是 0S 之类的东西很容易。但是这种不一致让我很好奇;当你深夜起床时,这是困扰你的事情之一。有人在某个时候做出了设计决定,以使为某些原始类型输入文字成为可能,但并非对所有原始类型都输入文字。为什么?

最佳答案

在 C 中,int 至少意味着具有 CPU 的“自然”字长,而 long 可能意味着是“更大的自然”字长(在最后一部分不确定,但它也可以解释为什么 intlong 在 x86 上具有相同的大小)。

现在,我的猜测是:对于 intlong,有一种自然的表示可以完全适合机器的寄存器。然而,在大多数 CPU 上,较小的类型 byteshort 在使用之前无论如何都必须填充到 int 中。如果是这种情况,您也可以进行类型转换。

关于java - 为什么 Java 中没有字节或短文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317816/

相关文章:

java - 如何生成 Klov 报告

java - 为什么我可以将整数文字分配给短类型变量而不是短类型方法参数?

java - ArrayList包含方法如何工作?

Java char 数组似乎每个 char 需要超过 2 个字节

javascript:原始字符串有方法吗?

Java:为什么要这样定义一个字符呢?

java - 尝试从 ArrayList 访问数组

java - 在 Tomcat Web 应用程序中有选择地运行 war

java - 如何在 HTTP post 请求的消息正文中附加 XML 文件?

java - Spring会自动关闭TCP入站网关吗?