Java 配列宣言で、標準の括弧ではなく中括弧を使用する理由を知りたいです。ここに示すように。これには、中括弧全般についてさらに理解を深める必要があると思いますが、これは特に今の私の議題です。
Object[] tableHeaders = {"Cars","Trucks","Tacos"};
とは対照的に、これは正しいです。
Object[] tableHeaders = ("Cars","Trucks","Tacos");
Java 配列宣言で、標準の括弧ではなく中括弧を使用する理由を知りたいです。ここに示すように。これには、中括弧全般についてさらに理解を深める必要があると思いますが、これは特に今の私の議題です。
Object[] tableHeaders = {"Cars","Trucks","Tacos"};
とは対照的に、これは正しいです。
Object[] tableHeaders = ("Cars","Trucks","Tacos");
中括弧は通常セットとアンサンブルを表し、括弧は通常 C のような言語のパラメーターを表します。
ずっと前に、人々はC でこの種の規則を持つことに慣れていました。古い言語とある種の構文の一貫性を保つために、Java でこのように機能すると確信しています。
James Gosling らがこの特定の選択肢を選んだ理由はわかりません...
ただし、中かっこの代わりに丸かっこを使用すると、Java 文法に深刻なあいまいさの問題が生じます。次の例を検討してください。
Object[] tableHeaders = ("Cars");
丸括弧は配列コンストラクターを示していますか、それとも正規表現の構文の一部ですか?
これをカバーする複雑な優先順位規則を考え出すことは可能ですが、それではプログラマーとコンパイラー作成者の両方の生活が困難になります。
(文法レベルでは、Java パーサーは以下のあいまいさに対処する必要があります。
VariableInitializer:
ArrayInitializer
Expression
上記の例で("Cars")
は、ArrayInitializer と Expression の生成の両方に一致します ... 配列初期化子に丸括弧を使用する場合。どちらが正しい意味であるかを判断するには、宣言された変数の型を調べる必要があります...その後、VariableInitializer のコンテキスト依存の解析が続きます。汚い。)
配列初期化子に丸括弧を使用しないという正しい選択をしたと思います。
角括弧も機能しません。これを説明しようと考えてみてください...
... = new Object[]["Cars"]; // 1-D array
対
... = new Object[21][]; // 2-D array
対
... = new Object[][]; // is that 1-D or 2-D?
最も広く使用されているほとんどの Algol ベースのプログラミング言語では、配列は中かっこを使用して宣言されます。