这更像是一个好奇心问题,但这里有:
所以我学习C ++,而且我的朋友很熟悉Java,我们进行了一个奇怪的讨论 - 为什么Java和C ++中没有原生字符串?
让我解释一下; 在Java和C ++中,您都有原始类型,例如" int"," float"," double"这些不是类,因此在添加时没有任何功能。在具有该给定类型的变量名之后。但是,(特别是在Java中),您有实际的类,例如" Integer"这是包围原语" int"的类。类型。然而"字符串" /"字符串"从一开始就是一个类,它没有原始类型。当然,你有" const char *"在C ++中,但Java呢?这两者的原始类型是什么? String有原始类型吗?
答案 0 :(得分:4)
原始类型应该是不能分解的最小原子类型。字符串基本上是一系列字符,这就是为什么没有字符串原语。 将原语视为语言运行所需的最低要求。任何其他所需的东西都可以从这些原语构建。
答案 1 :(得分:1)
原始类型存在的一个原因是性能。 C ++中的原始类型直接映射到机器类型。这使他们依赖于系统。也就是说,16位机器上的int
将是16位,但在32位机器上它将是32位。
在Java中,映射不一定是直接的,因为它指定int
无论如何都是32位。但在大多数现代计算机上它仍然会很快。
在Java中,使用Integer
和其他“映射”类型,您需要Object
s。
CPU中没有“字符串”原语类型,因此您不会从Java中获取任何内容。
C ++ 有之类的原始字符串。在代码"abc"
中使用字符串文字时,您将创建char[]
。这是C的继承,C ++保留它。
还有其他语言不公开基元类型。他们牺牲速度以获得更好的一致性。