首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的原始数据类型与可移植性

Java中的原始数据类型与可移植性
EN

Stack Overflow用户
提问于 2014-08-26 05:15:02
回答 4查看 832关注 0票数 6

我引用Herbert Schildt第3章的数据类型、变量和数组:

基元类型表示单个值,而不是复杂对象。虽然Java在其他方面是完全面向对象的,但原语类型却不是。这种效率的原因。制造原始类型会大大降低性能。 原语类型被定义为具有显式范围和数学行为。C、C++等语言允许整数的大小根据执行环境的要求而变化。然而,Java是不同的。由于Java的可移植性要求,所有数据类型都有一个强定义的范围。例如,int总是32位,而不考虑特定的平台。这允许编写保证在任何机器架构上不进行移植就能运行的程序。虽然在某些环境中严格指定整数的大小可能会导致性能的小损失,但为了实现可移植性,这是必要的。

他说最后两行是什么意思?为什么在某些环境中指定整数的大小会导致性能的小损失呢?

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-26 05:31:23

在“低级”语言中,原始数据类型大小通常来自CPU处理它们的能力。例如,在C中,int被定义为“至少16位大小”,但其大小在不同的体系结构中可能有所不同,以确保“int类型应该是目标处理器最有效处理的整数类型。”(来源)。这意味着,如果您的代码对int的大小做了粗心的假设,如果您将其从32位x86移植到64位powerpc,它很可能会中断。

如上所述,java是不同的。例如,一个int总是32位。这意味着,当您在不同的架构上运行相同的代码时,您不必担心它的大小会发生变化。正如上面所提到的,代价是性能--在任何本机不处理32位计算的体系结构上,这些int需要扩展到CPU可以处理的本机大小(这将带来很小的损失),或者更糟的是,如果CPU只能处理较小的int,那么int上的每个操作可能需要几个CPU操作。

票数 9
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25498512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档