java メソッドの戻り値に配列を用いたコードの質問


Javaを勉強中の初心者です。  
下の【コード1】と【コード2】はどちらも同じ結果を表示します。

例題では【コード1】の方が掲載されていたのですが、【コード1】のnewArray[]の配列変数をわざわざ用意する理由は何かわかる方いらっしゃいませんか。  
【コード2】だとarray[]の配列だけで済むので分かりやすいと思うのですが。

【コード1】

[code]

        public static int[] makeArray(int size) {
    
            int[] newArray = new int[size];
            for(int i=0; i<newArray.length; i++) {
                newArray[i] = i;
            }
            return newArray;
    }
    
        public static void main(String[] args) {
            int[] array = makeArray(3);
            for (int i : array) {
                System.out.println(i);
            }
        }
    }
    
[/code]

【コード2】

[code]

        public static int[] makeArray(int size) {
    
            int[] array = new int[size];
            for(int i=0; i<array.length; i++) {
                array[i] = i;
            }
            return array;
    }
    
        public static void main(String[] args) {
            int[] array = makeArray(3);
            for (int i : array) {
                System.out.println(i);
            }
        }
    }
    
[/code]




【コード1】【コード2】の違いは, ローカル変数の変数名が異なるだけで, 内容は同じであり  
「`newArray[]` の配列変数をわざわざ用意」というわけではありません

【コード2】では `makeArray()` 内で使用したローカル変数名が, `main()` で使用するローカル変数名と,
(たまたま？)同じ変数名というだけです

処理内容は以下の通り

`makeArray()` で配列を作成する。  
使用する際に名前が必要 (名前は(扱えれば)何でもよい, 他所からのアクセスは(この時点では)できない)  
作成されたオブジェクトを返す

`main()` は `makeArray()` で作成されたオブジェクトを得て  
`array[]` と名付けて, アクセスする

* * *

**少し追記** update

  * `makeArray()` 内の `newArray[]`
  * `main()` 内の `array[]`

これらは, 名称(ローカル名)が異なるだけで, 実体は同じ(オブジェクト)です  
`new int[size]` で生成しているソースコードの箇所は一箇所

別のローカル名だからといって, 別物になるわけではありません  
(2つの存在になったり, ひとつになったりする訳ではない)

* * *

(個人的には)  
先に動くプログラムを作り  
大きくなってきたら関数に分割する, ような手順を踏むときには  
そのように変数名を `array` など(もともとの名前)で統一してしまうことはあります




【コード1】【コード2】の違いは, ローカル変数の変数名が異なるだけで, 内容は同じであり  
「`newArray[]` の配列変数をわざわざ用意」というわけではありません

【コード2】では `makeArray()` 内で使用したローカル変数名が, `main()` で使用するローカル変数名と,
(たまたま？)同じ変数名というだけです

処理内容は以下の通り

`makeArray()` で配列を作成する。  
使用する際に名前が必要 (名前は(扱えれば)何でもよい, 他所からのアクセスは(この時点では)できない)  
作成されたオブジェクトを返す

`main()` は `makeArray()` で作成されたオブジェクトを得て  
`array[]` と名付けて, アクセスする

* * *

**少し追記** update

  * `makeArray()` 内の `newArray[]`
  * `main()` 内の `array[]`

これらは, 名称(ローカル名)が異なるだけで, 実体は同じ(オブジェクト)です  
`new int[size]` で生成しているソースコードの箇所は一箇所

別のローカル名だからといって, 別物になるわけではありません  
(2つの存在になったり, ひとつになったりする訳ではない)

* * *

(個人的には)  
先に動くプログラムを作り  
大きくなってきたら関数に分割する, ような手順を踏むときには  
そのように変数名を `array` など(もともとの名前)で統一してしまうことはあります

