Почему метод Java StringLatin1.regionMatchesCI выполняет toUpperCase(), а затем toLowerCase() при сравнении символов?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему метод Java StringLatin1.regionMatchesCI выполняет toUpperCase(), а затем toLowerCase() при сравнении символов?

Сообщение Anonymous »

Я изучал метод String.euqalsIgnoreCase и обнаружил, что в конце он вызывает метод StringLatin1.regionMatchesCI.
Однако код этого метода мне кажется странным, вот оно:

Код: Выделить всё

public static boolean regionMatchesCI(byte[] value, int toffset,
byte[] other, int ooffset, int len) {
int last = toffset + len;
while (toffset < last) {
char c1 = (char)(value[toffset++] & 0xff);
char c2 = (char)(other[ooffset++] & 0xff);
if (c1 == c2) {
continue;
}
char u1 = Character.toUpperCase(c1);
char u2 = Character.toUpperCase(c2);
if (u1 == u2) {
continue;
}
if (Character.toLowerCase(u1) == Character.toLowerCase(u2)) {
continue;
}
return false;
}
return true;
}
Зачем проверять верхний регистр, а затем нижний? Разве строчные буквы всегда не будут работать, если верхняя проверка не совпадает? Я что-то упустил?

Подробнее здесь: https://stackoverflow.com/questions/631 ... e-and-then
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»