コース一覧
    Java入門:配列とコレクション
    配列の要素にアクセス

    Java入門:配列とコレクション

    配列とコレクションの扱いを学び、複数のデータを安全に整理・検索・集計できるようにします。

    1
    配列
    01. 配列の基本5分
    02. 配列の要素にアクセス5分
    03. 配列を for で走査5分
    04. Javaで配列の合計・平均を求める方法(forループ)5分
    05. 配列の平均5分
    06. 配列の最大値5分
    07. 配列の線形探索12分
    08. 拡張 for ループ5分
    09. 配列クイズ5分
    10. 第 6 章 まとめクイズ5分
    2
    コレクション基礎
    01. ArrayList を使う5分
    02. List を走査する5分
    03. 要素の削除と検索5分
    04. HashMap の基本5分
    05. Map を走査する5分
    06. Set で重複を排除5分
    07. Collections クラスの便利メソッド5分
    08. コレクション基礎 まとめクイズ5分

    配列の要素にアクセス

    配列とインデックス

    3 番目の点数は scores[3] ではない

    配列から値を取り出すときは、名前の後ろに [] を書いて、その中に 番号 を入れます。この番号を添字、またはインデックスと呼びます。

    厄介なのは、その番号が 0 から始まることです。

    Java

    int[] scores = {80, 65, 92};
    System.out.println(scores[0]);   // 80
    System.out.println(scores[1]);   // 65
    System.out.println(scores[2]);   // 92

    日常の数え方だと 92 は 3 番目ですが、配列では scores[2] です。番号は「何番目か」ではなく「先頭から何個ぶん離れているか」だと思うと腑に落ちます。先頭は 0 個ぶんしか離れていないので 0、その次は 1 個ぶんで 1 です。

    取り出すだけでなく、書き換えるのも同じ形です。scores[1] = 70; と書けば、2 つ目の値が 70 に変わります。

    末尾は arr.length - 1

    長さ 3 の配列で使える番号は 0 1 2 の 3 つです。個数は 3 なのに、最後の番号は 2 になります。

    書き方長さ 3 の配列で指すもの
    scores[0]先頭
    scores[scores.length - 1]末尾
    scores[scores.length]どこも指さない

    末尾を取りたいときは scores.length から 1 を引きます。長さがいくつでもこの形なら通用するので、末尾を触るコードでは決まり文句として出てきます。

    Java

    int[] scores = {80, 65, 92};
    int last = scores[scores.length - 1];   // 92

    範囲の外を読むと、その場で落ちる

    存在しない番号を指すと、Java はプログラムをその場で止めます。

    Java

    int[] scores = {80, 65, 92};
    System.out.println(scores[3]);   // ArrayIndexOutOfBoundsException

    エラーには Index 3 out of bounds for length 3 のように、指した番号と配列の長さが並んで出ます。長さ 3 の配列に対して 3 番を読もうとした、という意味です。負の番号も同じで、Python のように scores[-1] で末尾が取れる仕組みは Java にはありません。

    つまり安全に読める番号は、0 以上で、かつ長さより小さいものだけです。外から番号を受け取るメソッドでは、読みに行く前にこの範囲に収まっているかを自分で確かめる必要があります。渡された番号を信じて読むと、想定外の値が来た瞬間にプログラムごと止まります。

    解説

    落ちるのは不便に見えて、実は親切な設計です。C 言語では範囲外を読んでも止まらず、無関係なメモリの中身が返ってきて、原因の分からないバグになります。

    やってみよう

    今回は、配列と番号を受け取って、その位置の値を返すメソッドを書きます。範囲の外を指されたときは例外を起こさず、決められた値を返して切り抜けます。

    条件を書く前に、境界を数直線で確かめてください。長さ 3 なら 2 は内側で 3 は外側、0 は内側で -1 は外側です。ここをはっきりさせてから書けば、< と <= のどちらを使うかで迷いません。

    要件

    1. メソッド名は getAt、引数は int[] arr と int index の 2 つ、戻り値の型は int にすること
    2. index が 0 以上かつ arr.length 未満のとき、arr[index] を返すこと
    3. index が 0 未満、または arr.length 以上のときは -1 を返すこと (ArrayIndexOutOfBoundsException を発生させない)

    ヒント

    配列の長さは `arr.length` で取れます。`arr.length()` ではないので注意してください

    範囲チェックの条件は `index < 0 || index >= arr.length` です。`>` ではなく `>=` を使う点に気をつけましょう

    範囲外なら先に `return -1;` してしまい、それ以外で `return arr[index];` を書くと if 文がスッキリします

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • 配列を for で走査

      配列の全要素を for ループで走査し、`, ` (カンマ + 空白) で連結した文字列を組み立てる練習をします。

    • Javaで配列の合計・平均を求める方法(forループ)

      Javaで配列の合計値や平均値を求める方法を、for-each ループと累積パターンのコード付きで解説。sum を計算して要素数で割る平均の出し方まで初心者向けに紹介します。

    • 配列の平均

      配列の要素を全部足して、要素数で割って平均を求める。空配列のときの 0 除算を避けることと、整数除算ではなく小数として計算するキャストの考え方を身につけよう。

    • 配列の最大値

      配列の中から一番大きい値を探そう。仮の最大値を更新していくアルゴリズムを身につける。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 配列サイズ固定の同型データの集まり
    • インデックスDB 検索を速くする索引
    • メソッドクラスに属する関数
    • 設計何をどう作るかを決める前工程
    • メモリプログラムとデータを一時保持する高速領域
    • 引数位置引数=順番で渡す。
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    配列の要素にアクセス

    ⌘S で保存