【Java】配列の[]はどこに書くべき?

Javaで配列を宣言するとき、[](角括弧)を型名の後ろに書くべきか、変数名の後ろに書くべきかで迷ったことはありませんか?

どちらの書き方も文法的には正しく、コンパイルエラーにはなりません。しかし、可読性や保守性、チーム開発の観点から、明確に推奨されるスタイルがあります。

この記事では、「Javaの配列宣言における[]の正しい位置」について、理由や公式スタイルガイドを交えてわかりやすく解説します。これからJavaを学ぶ方にも、チームでコーディングスタイルを統一したい方にも役立つ内容です。

目次

配列の基本構文:どちらの書き方もJavaでは正しい

Javaでは、配列を宣言する際に [](角括弧)を型名の後ろに書く方法と、変数名の後ろに書く方法の両方が使用できます。

int[] numbers1;   // 型名の後ろに []
int numbers2[];   // 変数名の後ろに []

このように、どちらの構文もJavaの文法としては有効で、コンパイルエラーにはなりません。コンパイラから見れば両者は同じ意味を持ち、どちらを使ってもプログラムの挙動に違いはありません。

ただし、可読性やコードの一貫性チーム開発時の保守性といった観点からは、どちらの書き方を採用するかが重要になります。以降では、なぜ「型名の後ろに [] を書くスタイル」が推奨されているのか、その理由を詳しく見ていきましょう。

推奨されるのは「型名の後ろ」に書くスタイル

Javaで配列を宣言する際は、[] を型名の後ろに書くスタイルが一般的かつ推奨されています。文法的にはどちらでも問題ありませんが、このスタイルには明確なメリットがあります。

理由1:型情報が明確で読みやすい

int[] numbers;

このように書くことで、numbersint 型の配列であることが一目でわかります。型に対して [] を付けることで、「これは配列型である」と明確に示せるため、コードの意図がより直感的に伝わります。

一方で、次のように変数名の後ろに書くスタイルは、

int numbers[];

CやC++の記法に近いため、Javaの配列型の扱いに不慣れな開発者には混乱を招く可能性があります。

理由2:複数の変数を宣言するときに一貫性が保てる

int[] a, b; // ✅ aもbもint型の配列
int a[], b; // ❌ aはint[]型、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, not String args[].

Oracle公式ドキュメントでも、基本的にこのスタイルで例が示されています。

Spring FrameworkApache Commonsなどの主要オープンソースプロジェクトでも、このスタイルが一貫して使用されています。

実務でも「型名の後ろに []」が圧倒的に好まれる理由

実際の開発現場では、配列を宣言する際に [] を型名の後ろに書くスタイルが圧倒的に支持されています。その理由は、単なる好みではなく、現場での生産性やチーム開発の効率に直結しているからです。

  • 可読性が高く、コードレビューでも意図が伝わりやすい
  • 社内のコーディング規約や自動整形ツールに合わせやすい
  • 新人や外部メンバーにも理解しやすく、学習コストが低い
  • スタイルが統一されていると、バグやミスを早期に発見しやすい

このスタイルは、大手企業や多数のオープンソースプロジェクトでも採用されており、実質的な業界標準(デファクトスタンダード)となっています。

チーム開発や長期的な保守を考えると、配列の書き方も単なる文法以上に重要です。「誰が書いても、誰が読んでもわかりやすいコード」を目指すためにも、型名の後ろに [] を書くスタイルを基本とするのがベストです。

よくある質問(FAQ)

なぜJavaは両方の書き方を許しているのですか?

JavaはC/C++からの移行を意識して設計されており、当時の開発者にとって馴染みのある構文を許容することで学習コストを下げる狙いがありました。
そのため、int numbers[]; といったCスタイルの配列宣言も文法的に許容されています。 しかしこれはあくまで「互換性と柔軟性」のためであり、現在のJavaコミュニティでは 型名の後ろに [] を書くスタイルが推奨されています。

また、IntelliJ IDEA や Eclipse など多くの Java 向け IDE では、 型名の後ろに [] を書くスタイルが補完や整形のデフォルトになっている場合が多く、 このスタイルを採用することで IDE の自動補完やコード整形機能とも自然に一致します。

多次元配列はどのように書くのが正解ですか?
int[][] matrix;  // ✅ 推奨
int matrix[][];  // ❌ 非推奨
int[] matrix[];  // ❌ 混在スタイル(非推奨)

多次元配列でも、型名の直後に [] を複数書くスタイルがベストです。
たとえば int[][] matrix; のように書くことで、「matrixはint型の2次元配列である」と明確に示せます。
可読性や誤解の防止の観点からも、この形式が推奨されています。

var を使った場合、[] の位置はどうなりますか?
// varを使用する場合、型推論が働く
var numbers = new int[10];        // numbersはint[]型
var matrix = new double[5][5];    // matrixはdouble[][]型

// しかし、明示的な型宣言の方が可読性は高い
int[] numbers = new int[10];           // より明確
double[][] matrix = new double[5][5];  // より明確

varを使うと型推論が働きますが、コードの可読性や意図の明確化を重視する場面では、明示的な型宣言の方が望ましいでしょう。

レガシーコードで変数名の後ろに[]が使われている場合はどうすべき?

既存のコードベースで一貫して変数名の後ろに[]が使われている場合は、段階的な移行を検討しましょう。

  1. 新しいコードでは推奨スタイルを使用
  2. リファクタリング時に既存コードも修正
  3. チーム全体での合意を得てから統一

急激な変更よりも、チーム全体の合意の下で徐々に統一していくのが現実的です。

まとめ:配列の [] は型名の後ろに書くのが最善

Javaでは、配列の宣言時に []型名の後ろまたは変数名の後ろに書くことができます。文法的にはどちらも正しい書き方ですが、可読性・保守性・スタイルの統一という観点からは、「型名の後ろに [] を書くスタイル」を採用すべきです。

// ✅ 推奨される書き方(明確で一貫性がある)
String[] names;
int[] scores;
double[][] matrix;

// メソッドでも同様
public int[] processData(String[] input) {
    return new int[input.length];
}

このスタイルは実務での標準として広く採用されており、チーム開発でも混乱が少なく、長期的な保守もしやすくなります。

今後コードを書く際は、ぜひこのスタイルを意識して、プロジェクト全体での統一を図ってみてください。一貫性のあるコードスタイルは、チーム全体の生産性向上につながります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次