When I run the following program, it only prints
equals says they are equal
However, from equalsIgnoreCase docs in java 8 we have:
Two characters c1 and c2 are considered the same ignoring case if one of the following conditions is true:
โข Applying the java.lang.Character.toUpperCase (char) method to each character gives the same result
public class Test { public static void main(String[] args) { String string1 = "abc\u00DF"; String string2 = string1.toUpperCase(); if (string1.equalsIgnoreCase(string2)) System.out.println("equalsIgnoreCase says they are equal"); if (string1.toUpperCase().equals(string2.toUpperCase())) System.out.println("equals says they are equal"); } }
So my question is why this program does not print
equalsIgnoreCase says they are equal
As in both operations, uppercase characters are used.
java string case-sensitive locale
Show stopper
source share