为什么 String 没有基元类型?
2022-09-01 04:56:33
为什么Java没有String的基元类型,而大多数其他数据类型都有呢?
为什么Java没有String的基元类型,而大多数其他数据类型都有呢?
String 是一个对象,它根本不是基元类型,只是一个字符数组。Java中存在基元类型的原因很有趣,摘自James Gosling的采访:
Bill Venners:为什么Java中有基元类型?为什么不是所有东西都只是一个物体?
詹姆斯·高斯林:完全是效率问题。有各种各样的人已经建立了系统,其中int和所有系统都是对象。有多种方法可以做到这一点,所有这些都有一些非常严重的问题。其中一些只是慢,因为它们为一切分配内存。他们中的一些人试图做对象,有时它们是对象,有时它们不是(这是标准的LISP系统所做的),然后事情变得非常奇怪。这有点管用,但很奇怪。
只是让它有基元和对象,它们只是不同。你解决了很多问题。
因此,简而言之,基元类型的存在是出于效率原因。
int、char、float、double 等在内存中都有固定的长度。例如,一个int有4个字节,因此32位。
但是一个字符串可以有不同的长度,它实际上是一个char数组。