回答編集履歴

1

追記

2015/09/08 04:19

投稿

swordone
swordone

スコア20651

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`なのですが,結局「同じ場所」をそのまま返しているだけなのであまり意味はありません.