7

Javaでこれら2つの配列宣言構文に違いはありますか?

int[] variableName; 

int variableName[];

どちらが好ましいですか?

4

7 に答える 7

16

両方の構文は同等ですが、int[] variableName;構文の方が優先されます。このint variableName[];構文は、Java に移行するすべての C/C++ プログラマーを快適にするためだけに許可されています。

整数配列は x の型であるint[] xと明確に述べていると主張することができますが、実際の型は変数の前と後の 2 つの部分に分割されています。宣言は読みにくく、初心者にとって混乱を招く可能性があります。int x[]x

配列がより多くの次元を持つ場合、読みやすさの問題は悪化します。たとえば、これらの宣言はすべて同等で有効です。

int x[][][];
int[] x[][];
int[][] x[];
int[][][] x;  // this one is the easiest to read!

また、これらすべての有効で同等のメソッド宣言に同じ考慮事項が適用されることにも注意してください (戻り値の型はすべての場合で同じです)。ただし、最後の宣言の方が読みやすいです。

int m() [][][] {return null;}
int[] m() [][] {return null;}
int[][] m() [] {return null;}
int[][][]  m() {return null;}  // this one is the easiest to read!
于 2012-08-25T13:51:16.323 に答える
5

後置構文が不可欠な唯一のケースは、非常に重要ではないユース ケースです。

class ArrayShowcase {
  private int i, ints[], intints[][];
}

そのような宣言が必要ですか?まあ、彼らがいなくても生きていけると思います。プロとしてのキャリアで書いた数十万行のコードの中で、これが必要になったことは一度もありません。

于 2012-08-25T14:11:42.047 に答える
1

すでに述べたように、それらは両方とも同じであり、最初のものが優先されます。それぞれの使用法と一致することも不可欠であることを付け加えたいと思います。2 つのうちの 1 つを使用するコード ベースを変更する場合は、同じ規則を使用してください。

于 2012-08-25T13:57:37.983 に答える
1

これらは意味的に同一です。int variablename[] 構文は、C プログラマーが Java に慣れるのを助けるためにのみ追加されました。

int[] 変数名の方がはるかに好ましく、混乱も少なくなります。

ここを見る

于 2012-08-25T14:00:23.087 に答える
0

より明示的であるため、 int[] var を使用します。これは int の配列であることを読者に伝えます。変数名の横に [] がある場合、ユーザーは行全体をスキャンしてこの配列の型を確認する必要があります。個人的には (そして私が知っているほとんどの Java プログラマーは) int[] を使用します。

于 2012-08-25T13:54:20.290 に答える
0

どちらも同じ意味なので、構文上の違いはありません。ただし、開発者がどちらか一方を使用しているのを見てきました。

于 2012-08-25T13:50:48.653 に答える
0

違いは、人間が読むための概念的なものです。同じものを定義していますが、

int[] variableNamevariableNameとは対照的に、型の一貫性を保ちます

int variableName[]ここで、配列変数の型は であると述べられていますint

于 2012-08-25T14:01:12.977 に答える