次のルーチンは、WIN XP x32、JAVA バージョン 7 Update 9 と WIN7 x64、JAVA バージョン 6 Update 32 では動作が異なります。
private int getNrOfMatches(String temp, String regex) {
String prev;
int nrOfIterations = -1;
do {
nrOfIterations++;
prev = temp;
temp = temp.replaceFirst(regex, " ");
} while (temp != prev);
return nrOfIterations;
}
replaceFirst() は、何も変更せず、ループが WIN XP で終了する場合、同じオブジェクトを返します。!=
Win7 では、ルーチンは何も変更していなくても新しいオブジェクトを返すため、常に false を返すため、無限ループに陥ります。.equals()
代わりに使用すると!=
この問題は解決しますが、私の質問は誰でもこの動作を説明できますか?