为什么String没有原始类型?

use*_*924 33 java string primitive-types

当大多数其他数据类型执行时,为什么Java没有String的基本类型?

Jon*_*Jon 53

String是一个对象,它根本不是一个原始类型,只是一个字符数组.原始类型存在于Java中的原因是一个有趣的原因,摘自James Gosling的采访:

Bill Venners:为什么Java中存在原始类型?为什么不是一切都只是一个对象?

詹姆斯戈斯林:完全是一种效率的东西.有各种各样的人建立了系统,其中包括整体和所有对象.有很多方法可以做到这一点,而且所有这些方法都有一些相当严重的问题.其中一些只是慢,因为他们为一切分配内存.他们中的一些人试图做有时它们是对象的对象,有时它们不是(这是标准的LISP系统所做的),然后事情变得非常奇怪.它有点工作,但很奇怪.

只是让它有原始和对象,它们只是不同.你解决了很多问题.

因此,简而言之,出于效率原因存在原始类型.

  • +1 - 并且推论是String不是原始的,因为它使它成为原语不会使它更有效率. (28认同)

Yin*_*Zhu 17

int,char,float,double等都在内存中有固定的长度.例如,int有4个字节,因此是32位.

但是一个字符串可以有不同的长度,它实际上是一个char数组.


Eri*_*sen 6

大多数编程语言都不考虑字符串原语,因为它实际上是一个字符数组.原始类型几乎总是具有固定的大小.

我应该说,虽然有些人可能认为String是"原始的",因为它是内置的.但是,作为一种基本类型而不是复合类型,它并不是原始的.因为字符串是一个字符数组,所以它是一个复合类型.