当前位置: 首页 > 面试题库 >

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

季小云
2023-03-14
问题内容

我可以通过将L附加到值来创建文字。为什么我不能以类似的方式创建字面量的short或byte?为什么我需要在转换时使用int文字?

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

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


问题答案:

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

现在,我的猜测是:for
intlong,有一个自然的表示正好适合机器的寄存器。在大多数的CPU然而,较小的类型byte,并short必须要被填充到int在使用前反正。如果是这样,您也可以进行演员表转换。



 类似资料:
  • 问题内容: 是否有任何特殊原因为什么不包括这种文字,而允许使用十六进制和八进制格式? 问题答案: Java 7包括它。检查新功能。 例:

  • 问题内容: 在Java中,如果将s,s或s相除,则总会得到一个。如果操作数之一是,我们将得到。 我的问题是-为什么或除法不会导致或?为什么总是? 显然,我不是在寻找“因为JLS这样说”的答案,而是在询问Java语言中此设计决策的技术原理。 考虑以下代码示例: 除以一个字节就不能了,可以吗? 那么为什么一定是一个?为什么不能有? 为什么必须如此,结果总是合适的,不是吗? 更新资料 正如@Eran所指

  • 最近我发现,如果你把一个双精度或浮点数除以0,你会得到无穷大作为值。我把无穷大转换成每种数据类型(通过编写、等),我发现如果你把它转换成字节或短,它会给出-1的值,但是如果你把它转换成任何其他数据类型,它会给你它的最大值。我想知道为什么会发生这种情况。有人猜到了吗? 这是我用来测试它的代码。 这是控制台给我的:

  • 问题内容: 我不明白为什么尚未进行如此基本的优化: 即使结论是第一项证据,整个阵列也会被扫描。 问题答案: 这是不固定的性能下降。NumPy发行3446。实际上 存在 短路逻辑,但是对机器的更改在短路逻辑周围引入了不必要的基于块的外循环,并且该外循环不知道如何短路。您可以在此处看到关于分块机制的一些解释。 即使没有回归,短路影响也不会出现在您的测试中。首先,您要确定数组的创建时间,其次,我认为它们

  • 问题内容: 我知道每次键入字符串文字时,字符串池中都会引用相同的String对象。 但是,为什么String API不包含,所以我可以使用引用? 至少,这将节省编译时间,因为编译器将知道引用现有的String,而不必检查是否已创建它以进行重用,对吗?我个人认为,字符串文字(尤其是很小的文字)在许多情况下是一种“代码异味”。 那么是否没有String.Empty背后的宏伟设计原因,还是语言创建者根本

  • 问题内容: 在Java中,有和接口。两者都属于Java的标准框架,并提供了一种访问元素的分类方法。 但是,据我了解没有。你可以用来对列表进行排序。 知道为什么要这样设计吗? 问题答案: 列表迭代器首先确保你以列表的内部顺序(也称为插入顺序)获取列表的元素。更具体地说,它是按照插入元素的顺序或操作列表的方式进行的。排序可以看作是对数据结构的一种操作,有几种方法可以对列表进行排序。 我将按照自己的见解