question2024
@question2024 (step1engineer)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

java silver 変数への値の代入?について

わからないこと

17行目のコードについて聞きたいです。
17行目のコードでは「3」が出力されます。
解説によると、
5行目でmethodB()を呼び出しで制御が8行目に移り、
9行目でインスタンス変数numに3が代入されているから。
ということなのですが、
2行目のnumに3を代入するためには
9行目は、
this.num=3;
のようにthisを使わないといけないのでは?と理解して
しまっている点で、躓いています。

問題コードと実行結果

問題
1   public class Main {
2     int num;
3     void methodA(){
4      int num = 2;
5      methodB();
6      System.out.print(num);
7     }
8      void methodB(){
9      num= 3;
10     }
11     public static void main(String[] args){
12       Main obj = new Main();
13       int num =1;
14       System.out.print(obj.num);
15       obj.methodA();
16       System.out.print(num);
17       System.out.print(obj.num); //こちらが質問対象のコードです
18     }
19  }

実行結果
0213

理解するためのアドバイスをいただきたいです。
または、ここを復習したほうが良い!などあれば
教えていただきたいです。

よろしくお願いいたします。

0

1Answer

同名の変数がスコープにない場合は,インスタンスメソッドから自身のインスタンスメンバーを指定する際にthisを省略することができます.よって9行目のnumはthis.numと等価です.

1Like

Comments

  1. @question2024

    Questioner

    Verclene 様
    早速ありがとうございます!!
    ご説明していただいた点、理解できていませんでしたm(_ _)m
    助かります。ありがとうございます!!

Your answer might help someone💌