2009-03-05 665 views

回答

36

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

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

JDBC的选择是故意的,但最终可能会导致更多的困惑和困难。

+0

在数学中,通常使用零索引(根据我的经验(第三级BSc))更容易。 – 2009-03-05 19:18:48

0

可能是因为JDBC是在ODBC上建模的。

+0

我认为两者都是在X/Open界面上建模的。 – 2009-03-05 19:21:06

0

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

+1

这是标准的正则表达式,因为0用于表示整个匹配。 – Eclipse 2009-03-05 19:06:59

2

就我个人而言,我会粉饰这糟糕的设计。

2

我知道JDBC和ODBC都基于X/Open Call Level Interface。所以,这是Java之前的历史,就像基于0的月份数字一样。

15

这是由原始语言设计者去除弱点的阴谋的一部分。在原始规范中,数组从-1开始编号,而带有1个元素的列表返回length = 0。

今天,只有Java Calendar API仍然来自这个恶魔般的阴谋。

相关问题