Javaで配列を宣言する際に、「[]
(角括弧)」を型名の後ろに書くのか、変数名の後ろに書くのかで迷ったことはありませんか?
どちらもコンパイルは通りますが、どちらが推奨される書き方なのか、なぜその書き方が好まれるのかについて、本記事で詳しく解説します。
配列の基本構文:どちらも文法的には正しい
Javaでは以下のように、配列の角括弧 []
を型名の後ろにも変数名の後ろにも書くことができます。
int[] numbers1; // 型名の後ろに []
int numbers2[]; // 変数名の後ろに []
この2つは文法的にはどちらも正しく、同じ意味を持ちます。Javaコンパイラにとっては等価です。しかし、可読性や保守性、チーム開発の観点からは、どちらか一方に統一した方が望ましいとされています。
推奨されるのは「型名の後ろ」に書くスタイル
理由1:可読性が高い
int[] numbers;
このように書くことで、「numbers
は int
の配列である」という情報が明確になります。int
という型に対して []
がついていることから、配列の型であることが直感的に伝わるのです。
一方、以下のように書いた場合、
int numbers[];
C言語やC++のスタイルに近いため、Javaの文法に不慣れな読者やチームメンバーにとっては混乱を招く可能性があります。
理由2:複数変数を宣言するときに明確
int[] a, b; // aもbもintの配列
int a[], b; // aは配列だが、bはint型(配列ではない)
変数名の後ろに []
を書くスタイルだと、同じ行で複数の変数を宣言したときに、配列かどうかが変数ごとに異なってしまうため、可読性が著しく下がります。
理由3:公式スタイルガイドも推奨
GoogleのJavaスタイルガイドでは、以下のように明記されています。
4.8.3.2 No C-style array declarations
The square brackets form a part of the type, not the variable:
String[] args
, notString args[]
.
また、Java言語仕様(Java Language Specification)においても、型の一部として []
を扱うことが推奨されています。これはJavaの設計思想に則ったスタイルであり、より公式に近い書き方といえるでしょう。
実務での運用にも「型名の後ろ」が有利
現場の開発では、以下のような理由から「型名の後ろに []
」を置くスタイルが圧倒的に好まれています。
- コードレビュー時に意図が読み取りやすい
- コーディング規約に準拠しやすい
- 新人や外部メンバーにも理解しやすい
- チームで統一しやすい
実際、企業やOSSプロジェクトでもこのスタイルが多く採用されており、現代Java開発のデファクトスタンダードといえるでしょう。
よくある質問(FAQ)
- なぜJavaは両方の書き方を許しているのですか?
-
JavaはもともとC/C++に親しんだ開発者が移行しやすいように設計されており、
int numbers[];
というC風の構文を許容しています。ただし、これは互換性のための配慮であり、推奨される書き方ではありません。 - 複数次元配列はどう書くべきですか?
-
int[][] matrix; // 推奨 int matrix[][]; // 非推奨
このように、多次元配列でも型名の直後に複数の
[]
を付ける書き方が推奨されます。
まとめ:型名の後ろに書くのがベストプラクティス
Javaでは配列の宣言時に、[]
を型名の後ろにも変数名の後ろにも書けますが、可読性・保守性・スタイルガイドの観点から「型名の後ろに []
を書く」ことが推奨されます。
// ✅ 推奨される書き方
String[] names;
int[] scores;
コードの品質を高め、チーム開発でも混乱を避けるために、自分自身やプロジェクト全体でスタイルを統一しましょう。