回答編集履歴
1
追記
test
CHANGED
@@ -35,3 +35,25 @@
|
|
35
35
|
つまり,このタイミングで`System.out.print(method())`は,`System.out.print(1)`と解釈されます.
|
36
36
|
|
37
37
|
実際のメソッドでは何らかの処理を行わせ,その結果として出力したい数値を返すことになります.
|
38
|
+
|
39
|
+
---
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
貴方が勘違いしている点がわかりました.
|
44
|
+
|
45
|
+
結論から言うと,配列は"参照"なので,値を返す必要がありません.
|
46
|
+
|
47
|
+
今mainの中で作られた配列nがあります.
|
48
|
+
|
49
|
+
この"n"は,配列そのものを持っているのではなく,「配列が置かれているメモリ上の場所」を持っています.これがいわゆる"参照"です.この「場所」を通して,[]の中のインデックスによって値にアクセスしています.
|
50
|
+
|
51
|
+
そしてclearメソッドにはその「配列の場所」が渡されています.
|
52
|
+
|
53
|
+
clearメソッドから配列の各値に0を代入する際,mainで作成した配列と同じ場所を見ています.
|
54
|
+
|
55
|
+
なので,その後mainのnから配列を見ると,clearによって変更されたあとの値を見ることができるのです.
|
56
|
+
|
57
|
+
参照先の配列の中身を書き換えているので,値を返す必要がないのです.
|
58
|
+
|
59
|
+
あえて言うならint[]で返して,clearメソッドの中で`return a`なのですが,結局「同じ場所」をそのまま返しているだけなのであまり意味はありません.
|