JAVA中为什么保留基本数字类型
相对于c++来说,java应该是比较“纯净”的面向对象的语言了。但是所谓的纯净其实也并不是那么“纯净”,不像JS、Ruby等一切均是对象,java中还保留了8个基本数据类型。
那到底为什么要保留这8个基本数据类型(byte、short、char、int、long、boolean、double、float)呢?今天看了一片介绍这个的文章,感觉写的还不错,我把文章总结如下:
原文作者认为保留基本数据类型的主要原因是:基本数据类型的性能比其包装类的要好这点对那些以计算为主的应用很重要。
作者主要从两个方面进行了论证:
1)内存的使用情况:
Java中的double总是占据内存的64个比特,但是引用类型的字节数取决于JVM。我的电脑运行64位Win7和64位JVM,因此在我的电脑上一个引用占用64个比特。根据图1,一个double比如n1要占用8个字节(64比特),一个Double比如n2要占用24个字节——对象的引用占8个字节,对象中的double的值占8个字节,对象中对Double对象的引用占8个字节。此外,Java需要使用额外的内存来支持对象的垃圾回收,但是基本类型不需要。
此图摘自原文
2)运算复杂度。作者用double类型和Double类型分别使1000*1000的矩阵相乘,最后比较了时间。结果如下:
类型 秒数
double 11.31
Double 48.48
由此我们也可以看出java中保留基本数据类型的很大一个原因就是性能问题。