意識低い系会社員

意識低い系会社員の日常

【スポンサーリンク】

Javaで配列を返すメソッドの後ろにはインデックスを付けられる

【スポンサーリンク】

こんにちは。

ちょっとした発見をしたのでメモとして残しておきます。

 

Javaで配列を返すメソッドの後ろにはインデックスを付けられる

例えば以下のようなプログラムがあります。

public class TestArray1{
    public static void main(String[] args){
        // 一旦変数に代入
        int[] array = getIntArray(3);
        // 変数にインデックスをつけて表示
        System.out.println(array[2]);
    }

    // int配列を返すメソッド
    static int[] getIntArray(int num){
        int[] intArray = new int[num];
        for(int i = 0; i < num; i++){
            intArray[i] = i;
        }
        return intArray;
    }
}

 

getIntArray()メソッドの戻り値を一旦ローカル変数に入れてから、ローカル変数にインデックス指定をしてprintln()していますが、この処理は実は以下のように書くことができます。

 

public class TestArray2{
    public static void main(String[] args){
        // メソッドに直接インデックス指定
        System.out.println(getIntArray(3)[2]);
    }

    // int配列を返すメソッド
    static int[] getIntArray(int num){
        int[] intArray = new int[num];
        for(int i = 0; i < num; i++){
            intArray[i] = i;
        }
        return intArray;
    }
}

 

変更したのは赤字の部分です。

さっきのプログラムではgetIntArray()メソッドの返り値を一旦変数に入れていたのをやめて、メソッドを叩く時に直接インデックスを指定しています。

配列全てが欲しいわけではなく特定の要素だけ抜き出したいとき限定になってしまいますが、こうすればちょっとだけプログラムを簡潔にすることができます。

知らなかった。

 

考察?

よく考えてみたら、もとのプログラムで

int[] array = getIntArray(3);

と書いている部分も代入演算子(=)が評価されているときには右辺は配列としてみなされています。

なので、特に目新しいことはないのかもしれません。

もしかしたら一部の人にとっては当たり前ですらあるのかもしれません。

 

まとめ

本当に些細なことですが、今さらこんな基本的なところでちょっとした発見があったのでメモとして残しておきます。

まあ正直知っていたところで使いどころはあまりない気がします。

代入の行が1行減るだけだし実はそんなにメリットもない。

 

おわり。

【スポンサーリンク】