teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

iの値が間違っていたので修正。

2017/04/26 00:19

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  Integerなどのラッパークラスであっても、コンストラクタで決めた値を書き換えることは不可能です。
2
2
 
3
- 戻り値を持たないメソッドから何らかの結果を受け取るテクニックとして、渡した引数の中身を書き換えるものに「長さ1の配列として渡して、配列の中身を書き換える」という方法があります。しかし、この方法では```i```自体が書き換わっているわけではないので、funcを呼び出したあとでも```i```は1のままです。気をつけてください。
3
+ 戻り値を持たないメソッドから何らかの結果を受け取るテクニックとして、渡した引数の中身を書き換えるものに「長さ1の配列として渡して、配列の中身を書き換える」という方法があります。しかし、この方法では```i```自体が書き換わっているわけではないので、funcを呼び出したあとでも```i```は0のままです。気をつけてください。
4
4
  ```Java
5
5
  public static void main(String[] args) {
6
6
  Integer i = new Integer(0);
@@ -8,7 +8,7 @@
8
8
  a[0] = i;
9
9
  func(a);
10
10
  System.out.println(a[0]);// 2
11
- System.out.println(i); // 1
11
+ System.out.println(i); // 0
12
12
  }
13
13
  static void func(Integer[] a){
14
14
  a[0] = new Integer(2);