38

在 Java 的其他任何地方,任何有索引的东西都从 0 开始。这里有改变的原因还是这只是糟糕的设计?

4

6 回答 6

42

从历史上看,数据库对绑定参数使用基于 1 的索引。这可能反映了集合论和数学中关系数据库的起源,它索引元素以 1 开头,并使用 0 来表示空集或空集。

在 shell 脚本和正则表达式中,零索引通常意味着“特殊”。例如,在 shell 脚本的情况下,第零个“参数”实际上是被调用的命令。

选择 JDBC 是经过深思熟虑的,但最终可能会导致比它解决的更多的困惑和困难。

于 2009-03-05T19:04:54.003 回答
20

这是原始语言设计者淘汰弱者的阴谋的一部分。在原始规范中,数组从 -1 开始编号,具有 1 个元素的列表返回长度 =0。

今天,这个恶魔般的情节中只剩下 java Calendar API。

于 2009-03-05T19:23:55.813 回答
2

就我个人而言,我会把这归咎于糟糕的设计。

于 2009-03-05T19:04:18.857 回答
2

我了解 JDBC 和 ODBC 都基于 X/Open 调用级别接口。所以,它是 Java 之前的历史,比如从 0 开始的月份数字。

于 2009-03-05T19:20:26.960 回答
0

很可能 JDBC 是以 ODBC 为模型的。

于 2009-03-05T19:02:52.760 回答
0

也许更人性化?此外,Java 的正则表达式 Matcher 的组以 1 作为第一个匹配组开始。

于 2009-03-05T19:03:22.977 回答