Javaのどこにいても、インデックスを持つものは0から始まります。ここに変更がある理由はあるのですか、これはちょうど悪いデザインですか?JDBCでは、プリペアドステートメントのパラメータインデックスは、なぜ0ではなく1から始まるのですか?
答えて
これまで、データベースでは、バインドされたパラメータに1から始まるインデックスが使用されていました。これはおそらく、集合理論と数学におけるリレーショナルデータベースの起源を反映しており、要素は1から始まり、0を使用して空集合または空集合を表します。
シェルスクリプトと正規表現では、通常ゼロインデックスは「特別な」ものを意味します。たとえば、シェル・スクリプトの場合、第0番目の「引数」は実際に呼び出されたコマンドです。
JDBCの選択肢は意図的でしたが、最終的には、それが解決するよりも混乱と難易度が高かったでしょう。
数学では、ゼロインデックス付け(通常、私の経験(3クラスBSc)で)を行う方が簡単です。 –
ゼロベースのインデックス作成は数学的なアーティファクトではないと思います。私が持っているすべての線形代数帳は、行/列の番号付けを開始します。1.正しく呼び出すと、FORTRANのデフォルトは1です。私は、ゼロベースのインデックス作成は、Cとポインタ演算の遺産だと思います。 – duffymo
個人的には、0ベースのインデックス作成は、私たちの不幸に突き当たったようなCポインタ算術からの逆戻りだと思います。 –
おそらく、JDBCはODBC上でモデル化されています。
私は両方ともX/Openインターフェイスでモデル化されていると思います。 –
もっと人間に優しいかもしれませんか?また、Javaの正規表現Matcherのグループは、最初に一致したグループとして1で始まります。
これは正規表現では標準で、0はマッチ全体を意味します。 – Eclipse
個人的には、私はこれを悪い設計にするだろう。
私はJDBCとODBCの両方がX/Open Call Level Interfaceに基づいていると理解しています。したがって、0ベースの月のようなJava以前の履歴です。
これは元の言語のデザイナーが弱者を取り除くためのプロットの一部でした。元の仕様では、配列は-1から番号が付けられ、長さ= 0が返された1要素のリストがあります。
今日、JavaカレンダーAPIだけがこの悪魔的なプロットから残っています。
私は、特にResultSetsも1つのインデックスが付いているので、同じことを考えていました。 – Uri