004-005-009

配列リテラルで初期化する

中級

問題説明

配列リテラル:簡潔な初期化

配列リテラルを使うと、宣言と初期化を1行で行え、コードがより読みやすく保守しやすくなります。既知の値で配列を初期化する際の推奨方法です。

一緒に配列リテラルの便利な使い方を学んでいきましょう!

学習目標

  • 配列リテラルを使用した配列の宣言と初期化を実装できる
  • 配列リテラル構文を使って複数の値を一度に格納する方法を適用できる
  • 初期化された配列の要素に正しくアクセスするプログラムを実行できる

学習ポイント

  • 配列リテラル構文: 型[] 名前 = {v1, v2, v3}
  • 自動サイズ決定: 配列の長さは値の数で決定
  • 宣言時のみ使用可能: リテラルは宣言時にのみ動作
  • 拡張for文: 配列を反復する最もシンプルな方法

配列リテラルの構文

型[] 配列名 = {値1, 値2, 値3};

複数ステップ初期化との比較

配列リテラル(推奨)複数ステップ(冗長)
String[] fruits = {"Apple", "Banana", "Cherry"};
String[] fruits = new String[3];
fruits[0] = "Apple";
fruits[1] = "Banana";
fruits[2] = "Cherry";

よくある間違い

間違えても大丈夫です。もう一度構文を確認してみてください。

間違い1: 再代入でリテラルを使用

誤ったコード:

String[] fruits;
fruits = {"Apple", "Banana"};  // コンパイルエラー!

正しいコード:

String[] fruits;
fruits = new String[]{"Apple", "Banana"};  // new 型[]{}を使用

間違い2: リテラル内で型を混在

誤ったコード:

Object[] mixed = {1, "two", 3.0};  // 動作するが型安全性を失う

より良いコード:

int[] numbers = {1, 2, 3};  // 同種の型を推奨

拡張for文(for-each)

for (String fruit : fruits) {
    System.out.println(fruit);
}

利点: インデックス変数不要、オフバイワンエラーなし、クリーンなコード。

制限: 反復中に配列を変更したりインデックスにアクセスできない。

それぞれのスタイルを使う場面

  • 配列リテラル: コンパイル時に値が既知
  • new 型[サイズ]: 動的サイズ、後で値を設定
  • 拡張for: 読み取り専用の反復
  • 従来のfor: インデックスや変更が必要

前提知識の詳細説明

この問題を解くために必要な知識を確認しましょう。

基本概念

この問題で扱うプログラミングの基本概念を理解することが、正しい解答への第一歩です。コードの各要素がどのように連携して動作するかを把握しましょう。

実装アプローチ

問題を解くための考え方を段階的に整理します:

  1. 問題文を読み、入力と出力の関係を理解する
  2. 必要な変数やデータ構造を特定する
  3. 処理の流れを組み立てる
  4. テストケースで動作を確認する

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方