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

回答編集履歴

2

追加

2021/03/16 05:57

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -1,4 +1,4 @@
1
- ※以下の方法を行っても、x=5にはなりません。それはクラスBの保存の問題とは別の問題になります。
1
+ ※以下の方法を行っても、x=5にはなりません。それはクラスBの保存の問題とは別の問題になります。(最後に補足しました)
2
2
 
3
3
 
4
4
  `B b;`
@@ -82,4 +82,10 @@
82
82
  public static void main(String args[]) {
83
83
  System.out.println(a.A_Method(b,x));
84
84
  }
85
- ```
85
+ ```
86
+
87
+ ---
88
+ `x = 5`にならないのは、`x+=2`を行っている場所での`x`とは、
89
+ `B1_Method(int x)`という風に定義された仮引数なので、そのメソッドの内部でしか有効ではないからです。
90
+ メソッドの中で`3+2`は確かに行われますが、メソッドの終了と共にその結果はそのまま消えてなくなります。
91
+ それを外部に伝えたい場合は、消えない場所の変数に保存するか、返り値等で伝える必要があります。

1

追加

2021/03/16 05:57

投稿

amiya
amiya

スコア1218

answer CHANGED
@@ -1,3 +1,6 @@
1
+ ※以下の方法を行っても、x=5にはなりません。それはクラスBの保存の問題とは別の問題になります。
2
+
3
+
1
4
  `B b;`
2
5
  これだけでは、クラスBを入れることのできる箱(変数)を用意したにすぎません。
3
6
  この中身は空っぽで、クラスBの本体、インスタンスは入っていません。