有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么java与C不同,具有固定的数据类型大小

C中,我们知道数据类型(例如int)的大小可能会因编译器/硬件的不同而不同

但是为什么在java语言中数据类型的大小是恒定的呢?为什么我们不能根据编译器的不同灵活地处理java中不同的数据类型大小呢


共 (3) 个答案

  1. # 1 楼答案

    如果不同平台上的数据类型大小不同,则会失去可移植性

  2. # 2 楼答案

    C在这方面的灵活性有一些优势(如果使用32位而不是64位,则会减少内存/存储消耗),但随着硬件的改进,这些优势往往变得不那么重要(这是在70年代设计的)

    然而,这种灵活性伴随着严重的互操作性和长期的视觉问题(Y 2038 bug)

    相比之下,Java对象无论如何都有一些存储开销,因此在每个Date对象上保存4个字节是毫无意义的,而且只会带来麻烦

  3. # 3 楼答案

    java的理念是“编写一次,在任何地方运行”,而无需重新编译。这意味着每个虚拟机都有相同的数据大小。当然,在64位机器上,它使用64位引用,但您没有访问这些引用的权限,所以这无关紧要

    它工作得很好,但我确实希望我们能得到64位数组索引。这在当时并不重要,但对于大型内存映射文件来说,这是一个巨大的痛苦。你必须把它们分成2gb的块