2017-12-24 20 views
-1

私はJavaを初めて使用しています。 このコードスニペットでは、オブジェクトが参照を保存していて、既存の値を上書きしない場合、なぜ - if(t.canRecord == true) - がtrueになります。静的なmainメソッドでJavaでのオブジェクトの参照

class TapeDeck 
{ 
    boolean canRecord = false; 

    void playTape() 
    { 
    System.out.println("tape playing"); 
    } 

    void recordTape() 
    { 
    System.out.println("tape recording"); 
    } 
} 

class TapeDeckTestDrive 
{ 
    public static void main(String [] args) 
    { 
    TapeDeck t=new TapeDeck(); 
    t.canRecord = true; 
    t.playTape(); 
    if (t.canRecord == true) 
    { 
     t.recordTape(); 
    } 
    } 
} 
+2

あなたが 't.canRecord = true; 'に' true'を割り当てているのは事実です。 – Eran

+4

正直言って、これがあなたにとって紛らわしいことは不明です。詳細を教えてください。あなたは何が起こると思いますか、なぜですか? –

答えて

2
  • 、あなたはTapeDeckの新しいインスタンスを作成します。この場合、canRecordの値はfalseに設定されます。
  • canRecordはプライベートな表示に設定されていないため、t.canRecordで直接アクセスできます。 t.canRecord = trueによって、はをオーバーライドしていませんが、はの既存値trueを上書きします。
  • ザIF-条件は、(i)t.canRecordtruetruetrueにおける結果と(ii)の比較としてtrueに評価されます。
関連する問題