在Java的其他地方,任何索引都是从0开始的。这里有没有改变的原因,或者这只是糟糕的设计?在JDBC中,为什么准备语句的参数索引从1开始而不是从0开始?
回答
从历史上看,数据库使用基于1的索引来绑定参数。这可能反映了集合论和数学中关系数据库的起源,这些关系数据索引以1开始的元素,并用零表示空集或空集。
在shell脚本和正则表达式中,零索引通常意味着“特殊”的东西。例如,在shell脚本的情况下,第零个“参数”实际上是被调用的命令。
JDBC的选择是故意的,但最终可能会导致更多的困惑和困难。
在数学中,通常使用零索引(根据我的经验(第三级BSc))更容易。 – 2009-03-05 19:18:48
可能是因为JDBC是在ODBC上建模的。
我认为两者都是在X/Open界面上建模的。 – 2009-03-05 19:21:06
更人性化可能吗?此外,Java的正则表达式Matcher的组以1开头,作为第一个匹配的组。
这是标准的正则表达式,因为0用于表示整个匹配。 – Eclipse 2009-03-05 19:06:59
就我个人而言,我会粉饰这糟糕的设计。
我知道JDBC和ODBC都基于X/Open Call Level Interface。所以,这是Java之前的历史,就像基于0的月份数字一样。
这是由原始语言设计者去除弱点的阴谋的一部分。在原始规范中,数组从-1开始编号,而带有1个元素的列表返回length = 0。
今天,只有Java Calendar API仍然来自这个恶魔般的阴谋。
- 1. 为什么增量计数从0开始而不是从1开始?
- 2. 为什么MySQL从1开始计数而不是0?
- 3. 为什么inode数字从1开始而不是0?
- 4. 为什么我的集合决定从0开始而不是1开始?
- 5. 为什么从std :: placeholders :: _ 1开始而不是_0开始?
- 6. 酒吧从1开始而不是0
- 7. 鼠标点击坐标索引从0开始还是从1开始?
- 8. 什么是从索引0开始的未知单词是指?
- 9. NSMutableArray:initWithObjects是否从索引0开始?
- 10. 从位置1开始NSArray不是0
- 11. 了解数组:索引从0开始
- 12. PLPGSQL数组索引从1开始?
- 13. NSMutableArray的索引不是以0开始
- 14. MSChart的X轴开始从-1而不是0
- 15. GridLayout索引0从左下角开始
- 16. PHPExcel行从1开始,列为0
- 17. PHP:更新值从0开始,而不是1
- 18. 我想ID从0开始,而是从1
- 19. 从非零索引开始的数组的用途是什么?
- 20. 开始索引编号在1(不是0)与$键
- 21. 如何使熊猫数据框的列号从1开始,而不是从0开始
- 22. 从1开始
- 23. Jar不是从双击开始,而是从命令行开始
- 24. 如何在Excel宏中使VBA从0开始计数而不是1
- 25. 我的容器的子项是从索引-1还是0开始的?
- 26. 使BufferedReader从.txt文件的中间开始而不是开始?
- 27. 从readline开始的字符串从1开始在python中?
- 28. 初始化字符串的格式不符合从索引0开始的规范。不确定这是什么?
- 29. 试图获得尝试从1开始而不是0的尝试次数
- 30. iOS arc4random不是从0开始
我想知道同样的事情,特别是因为ResultSets也是1索引。 – Uri 2010-04-03 20:24:40