2

コードは次のようになります

public void option() {
    seeTasks = tasks.getTasks();
        for (int i = 0; i < seeTasks.size(); i++) {
            for (int b = 0; b < seeBoxes.size(); b++) {
               System.out.println("see Tasks: " + seeTasks.get(i) + 
                           " see Boxes " + seeBoxes.get(b));
            if(seeTasks.get(i) == seeBoxes.get(b)) {
                option.add(seeTasks.get(i));
            }
        }
    }
    System.out.println(option);
}

の値が150未満の場合、「しない」ifというステートメントは実行され ます。これはどのようになりますか?以下に示すように、370は含まれていません。110から150に変更しても通過しません。seeTaks.get(i)seeTasks.get(i)

println'sの出力は次のとおりです。

see Tasks: 50 see Boxes 50
see Tasks: 50 see Boxes 110
see Tasks: 50 see Boxes 150
see Tasks: 50 see Boxes 210
see Tasks: 50 see Boxes 270
see Tasks: 50 see Boxes 310
see Tasks: 50 see Boxes 370
see Tasks: 50 see Boxes 430
see Tasks: 110 see Boxes 50 
see Tasks: 110 see Boxes 110
see Tasks: 110 see Boxes 150
see Tasks: 110 see Boxes 210
see Tasks: 110 see Boxes 270
see Tasks: 110 see Boxes 310
see Tasks: 110 see Boxes 370
see Tasks: 110 see Boxes 430
see Tasks: 370 see Boxes 50
see Tasks: 370 see Boxes 110
see Tasks: 370 see Boxes 150
see Tasks: 370 see Boxes 210
see Tasks: 370 see Boxes 270
see Tasks: 370 see Boxes 310
see Tasks: 370 see Boxes 370
see Tasks: 370 see Boxes 430
[50, 110]
4

1 に答える 1

5

疑わしい

seeTasks.get(i)

seeBoxes.get(b)

両方とも。を返しますInteger。次に、128未満の値の場合、Integerキャッシュは同じインスタンスを返しますが、それより大きい値の場合、新しいインスタンスを返します。を使用しequals()ます。

于 2013-01-16T00:01:15.297 に答える