Всюду в Java, все с индексом начинается с 0. Есть ли причина для изменения здесь или это просто плохой дизайн?
В JDBC, почему индексы параметров для подготовленных операторов начинаются с 1 вместо 0?
Ответ 1
Исторически базы данных использовали индексирование на основе 1 для связанных параметров. Это, вероятно, отражает истоки реляционных баз данных в теории множеств и математике, которые индексируют элементы, начиная с одного, и используют ноль для представления нулевого или пустого набора.
В сценариях оболочки и регулярных выражениях нулевой индекс обычно означает что-то "специальное". Например, в случае сценариев оболочки нулевой аргумент - это фактически вызванная команда.
Выбор для JDBC был преднамеренным, но, в конечном счете, вероятно, вызывает больше путаницы и трудности, чем он решает.
Ответ 2
Это было частью сюжета оригинальными разработчиками языка для отсечения слабых. В исходной спецификации массивы были пронумерованы от -1, а списки с 1 элементом возвратили length = 0.
Сегодня из этого дьявольского сюжета остается только API-интерфейс Java.
Ответ 3
Лично я бы сделал это до плохого дизайна.
Ответ 4
Я понимаю, что JDBC и ODBC основаны на интерфейсе уровня X/Open Call Level. Итак, это предыстория Java, например, число в месяц на основе 0.
Ответ 5
Скорее всего, JDBC был смоделирован на ODBC.
Ответ 6
Может быть, дружелюбный человек? Кроме того, группа регулярных выражений Java начинается с 1 в качестве первой согласованной группы.