为什么C ++和Java都没有本地字符串,只是一个类?

时间:2015-05-16 09:40:46

标签: java c++

这更像是一个好奇心问题,但这里有:

所以我学习C ++,而且我的朋友很熟悉Java,我们进行了一个奇怪的讨论 - 为什么Java和C ++中没有原生字符串?

让我解释一下; 在Java和C ++中,您都有原始类型,例如" int"," float"," double"这些不是类,因此在添加时没有任何功能。在具有该给定类型的变量名之后。但是,(特别是在Java中),您有实际的类,例如" Integer"这是包围原语" int"的类。类型。然而"字符串" /"字符串"从一开始就是一个类,它没有原始类型。当然,你有" const char *"在C ++中,但Java呢?这两者的原始类型是什么? String有原始类型吗?

2 个答案:

答案 0 :(得分:4)

原始类型应该是不能分解的最小原子类型。字符串基本上是一系列字符,这就是为什么没有字符串原语。 将原语视为语言运行所需的最低要求。任何其他所需的东西都可以从这些原语构建。

答案 1 :(得分:1)

原始类型存在的一个原因是性能。 C ++中的原始类型直接映射到机器类型。这使他们依赖于系统。也就是说,16位机器上的int将是16位,但在32位机器上它将是32位。

在Java中,映射不一定是直接的,因为它指定int无论如何都是32位。但在大多数现代计算机上它仍然会很快。

在Java中,使用Integer和其他“映射”类型,您需要Object s。

CPU中没有“字符串”原语类型,因此您不会从Java中获取任何内容。

C ++ 之类的原始字符串。在代码"abc"中使用字符串文字时,您将创建char[]。这是C的继承,C ++保留它。

还有其他语言不公开基元类型。他们牺牲速度以获得更好的一致性。