2012-03-06 9 views
1

これはおそらく以前に尋ねられたことは知っていますが、私の特定の質問に対する具体的な回答は見つかりません。私はすでにJavaの参照の処理を把握しようとしましたが、これはまだ私を困惑させます。考えてみましょう以下:Java - リスト内のアイテムを変更すると、リスト内のオブジェクトも変更されますか?

public class Question 
{ 
    private boolean isCorrect; 

    public void setCorrect (boolean _isCorrect) { 
     isCorrect = _isCorrect; 
    } 
} 

今、別のファイルでは、どこかのコードで:

/** 
* questionList is List<Question> questionList = new ArrayList<Question>(); 
* With various Question's added already with various isCorrect values. 
*/ 
for (int i = 0; i < questionList.size(); i++) { 
    Question q = (Question) questionList.get(i); 
    q.setCorrect(true); 
} 

ウィルこのセットの各質問のisCorrectquestionListに本当で?私がJavaを理解しているので(私はそうは思わない)、それはすべきである。しかし、それは?

ありがとうございました

答えて

2

はい、そうです。それは2つの場所で参照される同じオブジェクトです。

0

はい。ポインターとリファレンスについては、Javaチュートリアルから学習する必要があります。リストには、質問が格納されているメモリ内のスロットへのポインタが含まれています。だから、ポインタ上で行動を起こし、メモリ自体の中で何かの行動を取っています。

0

はい、そうです。この

Question q = (Question) questionList.get(i); 
q

は単にgetによって返された基礎となるオブジェクトを指すタイプQuestionの基準であることを理解。暗黙的にオブジェクトのコピーは作成されません。

0

はい、変数qは、メモリ内のリスト内のオブジェクトを指しているからです。したがって、qで呼び出すメソッドは、メモリ内のオブジェクトに対して呼び出されています。

-1

これをtrueに変更しましたが、スピードのために、なぜする必要があります。

for(int loop = 0; i < questionList.size(); loop++){ 
     questionList.get(loop).setCorrect(true); 
    } 
関連する問題