java - 为什么像 Java 这样的语言区分字符串和字符,而其他语言则不区分?

标签 java python ruby string char

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




8年前关闭。




我注意到像 Java 这样的语言有一个 char 原语和一个 string 类。其他语言如 Python 和 Ruby 只有一个字符串类。这些语言使用长度为 1 的字符串来表示一个字符。

我想知道这种区别是否是由于历史原因。我了解直接影响 Java 的语言具有 char 类型,但没有字符串。字符串改为使用 char* 或 char[] 形成。

但我不确定这样做是否有实际目的。我也很好奇某种方式在某些情况下是否比另一种方式更具优势。

为什么像 Java 这样的语言区分 char 原语和 string 类,而像 Ruby 和 Python 这样的语言不区分?

肯定有一些设计方面的考虑,无论是约定、效率、清晰度、易于实现等。可以这么说,语言设计者真的只是从帽子里挑选了一个字符表示吗?

最佳答案

最重要的是,这正是语言设计者决定的方式。很难比这更进一步。

然而,关于 C 的一点,它通常被认为是一种低级语言,因为它的语法更准确地反射(reflect)了正在执行的数据和任务的性质。将字符视为字符串将是一个抽象级别,这将是 C 不具有的特征。它会使隐藏的数据变得不太清楚。当您只需要一个角色时,它几乎肯定会增加开销。

请注意,C 类型语言确实支持单字符串,因此在我看来,您确实拥有两全其美的优势。

关于java - 为什么像 Java 这样的语言区分字符串和字符,而其他语言则不区分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010360/

相关文章:

java - Spring Mvc 应用程序获取 - HTTP 状态 [404] – [未找到]

java - 将具体类型列表转换为 Java 中的接口(interface)列表

java - 调整数组中 Sprite 的大小不起作用

ruby - 使用 warble 将 Rails 3 应用程序部署到 Tomcat

java - 声明式服务组件满意和不满意

python - 计算 numpy ndarray 中的元素数

python - python中有保留函数吗?我想将 SAS 代码传输到 python

python - 图例标记透明度 - Matplotlib

ruby - 如何在 Ruby 中快速生成字符串的所有排列?

ruby - Ruby 中的 Kernel#select 有什么意义?