Java中的其他任何地方,索引的任何内容都从0开始。这里有变化的原因还是这个设计不好?
答案 0 :(得分:38)
历史上,数据库对绑定参数使用了基于1的索引。这可能反映了集合论和数学中关系数据库的起源,它们以1开头索引元素,并使用零来表示空集或空集。
在shell脚本和正则表达式中,零索引通常意味着“特殊”。例如,在shell脚本的情况下,第0个“参数”实际上是被调用的命令。
JDBC的选择是故意的,但最终可能会导致比它解决的更多混乱和困难。
答案 1 :(得分:17)
这是原始语言设计师清除弱者的情节的一部分。在原始规范中,数组从-1开始编号,而包含1个元素的列表返回长度= 0。
今天,只有java Calendar API仍然来自这个恶魔般的情节。
答案 2 :(得分:2)
就个人而言,我会将其归结为糟糕的设计。
答案 3 :(得分:2)
我知道JDBC和ODBC都基于X / Open Call Level Interface。因此,它是Java之前的历史记录,就像基于0的月份数字一样。
答案 4 :(得分:0)
可能是JDBC在ODBC上建模。
答案 5 :(得分:0)
可能更人性化?此外,Java正则表达式Matcher组以1作为第一个匹配组开始。