2012-01-20 13 views
3

可能性の重複:
Difference between int[] array and int array[]int [] xの違いは何ですか? int x [];?

私はこの質問が既に尋ね、ちょうどそれを見つけるためにタイトルを書いていることを確信していたが、私の驚きに、それはありませんでした。私は1つの問題に取り組んでいました。私はこれを試しました:

int[] x = new int[1]; 
int y[] = new int[1]; 
x=y; 
y=x; 

コンパイラは私にエラーを与えませんでした。これらの2つの宣言には違いがありますか?

答えて

12

意味に違いはありません。どちらの構文も同じ意味です。 JLS §10.2から一部抜粋:

[]は、この例のように、 宣言、または特定の変数の宣言の一部として、 または両方の冒頭タイプの一部として表示されることがあります。

byte[] rowvector, colvector, matrix[]; 

この宣言は同等です。しかし

byte rowvector[], colvector[], matrix[][]; 

以下のコメントの中にVooという状態があるため、1つのステートメントに複数の配列を宣言するときにこれらの宣言について混乱が生じることがあります。

+0

ありがとう、私もそう思ったが、確かめなければならなかった。 – shift66

+2

1つの行に複数の変数を定義している場合(引用箇所はすでにヒントしています)、違いがあります。すなわち 'int a []、b;'は 'int [] a、b;'と同じではありません。それは混乱につながる可能性があるので、二次バリアントを使用しないのが最善です。実際には、Cとiirc Blochの遺産であり、後で彼はそれを言語に含めることを後悔しました。 – Voo

+0

@Voo:素敵な発言、私はそれについてまだ考えていませんでした。私は通常、1行に複数の変数を宣言するのは良い考えですが、特にその型がこの例と同じでない場合は... –

7

違いはありません。

Cからの移行を簡単に行うための構文糖だけです。 Javaではint[] xが推奨されています(推奨)。

1

なし、これは単なる味の問題です。集約型(それが型の一部であると感じるため)を使用する方が好きな人もいれば、(アクセス構文に近いので)変数名の横に置くことを好む人もいます。

関連する問題