38

Java の他のどこでも、インデックスを持つものはすべて 0 から始まります。ここに変更の理由はありますか、それとも単に設計が悪いのでしょうか?

4

6 に答える 6

42

歴史的に、データベースはバインドされたパラメーターに 1 ベースのインデックスを使用してきました。これはおそらく集合論と数学におけるリレーショナル データベースの起源を反映しており、1 から始まる要素にインデックスを付け、0 を使用して null または空のセットを表します。

シェル スクリプトと正規表現では、ゼロ インデックスは通常、「特別な」ものを意味します。たとえば、シェル スクリプトの場合、0 番目の「引数」は実際に呼び出されたコマンドです。

JDBC の選択は慎重に行われましたが、最終的には、解決するよりも多くの混乱と困難を引き起こす可能性があります。

于 2009-03-05T19:04:54.003 に答える
20

これは、弱者を取り除くための元の言語設計者による計画の一部でした。元の仕様では、配列には-1から番号が付けられ、1つの要素を持つリストは長さ=0を返しました。

今日、この悪魔的なプロットから残っているのはjavaCalendarAPIだけです。

于 2009-03-05T19:23:55.813 に答える
2

個人的には、これは悪い設計に起因すると思います。

于 2009-03-05T19:04:18.857 に答える
0

おそらく、JDBC は ODBC をモデルにしていると思われます。

于 2009-03-05T19:02:52.760 に答える
0

多分もっと人間に優しいでしょうか?また、Java の正規表現 Matcher のグループは、最初に一致したグループとして 1 から始まります。

于 2009-03-05T19:03:22.977 に答える