22

私は現在、家庭教師のプログラミング規約として学生に教えています。私は彼らに、OracleCodeConventionsでほとんどの規約を見つけることができると言いました。

私の最後のチュートリアルで、学生は次のことを尋ねました。

public static void main(String args[])

また

public static void main(String[] args)

慣例により、または違いがある場合に書かれています。私はこれまで最初のバージョンを見たことがないので、2番目のバージョンはコンベンションであると確信しています。しかし、私にはその情報源がありません。

どちらが慣例であるかを明確にするソース(できれば、上記でリンクしたページのように、オラクルから)を教えていただけますか?

両方の式の同等性

私は両方の式が同等であることを知っています:

JLS 7、p。292州:

An array type is written as the name of an element type followed 
by some number of empty pairs of square brackets []. 

だけでなく、p。293:

The [] may appear as part of the type at the beginning of the declaration, 
or as part of the declarator for a particular variable, or both.

For example:
    byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
    byte rowvector[], colvector[], matrix[][];

しかし、これはコンベンションの質問には役立ちません。

したがって、それらは同一です(仕様ではありませんが、ここにソースがあります)。小さな例では同じバイトコードを生成するので、実践においても同じであると確信しています。

4

4 に答える 4

20

これはOracleからのものではありませんが、役立つと思います。

これは、KathySierraの著書SCJPSun Certified Programmer forJava6からのものです。

int[] key;
int key [];

配列参照を宣言するときは、識別子(変数名)の後にではなく、宣言された型の直後に常に配列ブラケットを配置する必要があります。そうすれば、コードを読んでいる人なら誰でも、たとえば、keyがint配列オブジェクトへの参照であり、intプリミティブではないことを簡単に知ることができます。

于 2012-11-01T10:35:49.280 に答える
2

Oracleのコード規約では明示的に規定されていませんが、すべての例で、宣言された型の直後に角かっこが使用されています。

彼らのサンプルコード(この文脈では権威があると見なされるべきです)では、彼らは以下を使用します:

private Object[] instanceVar3;

また、変数の初期化の詳細を示すページには、変数名の後ろに角かっこを置くことで発生する可能性のある問題を示すこの例があります。

int foo, fooarray[]; //WRONG!

これを実行したいと思うかもしれませんし、いくつかの配列を宣言していると思うかもしれません。これは構文的に正しいものですが(コメントでbrimboriumが指摘しているように)、Oracleは大文字を何の意味もありませんでした。宣言したい内容を明確に示すために、タイプの後ろに角かっこを配置することで、安全で明確になり、タイプを少なくすることをお勧めします。

于 2012-11-01T10:40:26.533 に答える
0

後期ブラケットには、あいまいなユースケースが1つあります。

int x, xs[], xxs[][];

これがどれだけ役立つか、私は読者に判断を任せます。

于 2012-11-01T10:41:56.857 に答える
0

配列型の直後に[]を使用する利点の1つは、次のとおりです。複数の配列を宣言する場合は、次のように記述します。int [] a、b、c; ただし、配列名の後に[]を使用する場合は、次のようなすべての配列変数の後に[]を使用する必要があります。inta []、b []、c [];

于 2012-11-01T11:01:52.520 に答える