为什么整数(int)有原始类型,即使我们有一个整数对象为Integer? 但同样不是String类型。 String没有这种原始类型。 Always String处理对象引用吗?
答案 0 :(得分:19)
速度。机器代码使用本机CPU指令添加两个int要快得多,而不是必须取两个Integer对象,从中提取int值,然后添加它们,创建一个新结果Integer对象来包含结果。 (how JNI maps primitives)
字符串很复杂,有很多方法,因此没有机器码对位。它们被提升为真正的对象。此外,String与使用相同值创建的其他字符串共享状态。没有原始值与其他原始值共享状态。 (immutable can be shared | primitive no sharing)
答案 1 :(得分:1)
这是因为处理器(CPU)直接支持整数类型,但不支持字符串。出于性能原因,Java支持一些可能由JVM可能运行的处理器支持的本机类型。
答案 2 :(得分:0)
字符串数据类型比int复杂得多 - 有一个可变量的内存来容纳一个字符串。
答案 3 :(得分:0)
最终计算是在机器级语言下完成的。我想知道原语和对象在性能方面有什么区别。详细说明的答案将不胜感激。