When i run the following program it prints only
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 at least one of the following is true:
• Applying the method java.lang.Character.toUpperCase(char) to each character produces 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 is not printing
equalsIgnoreCase says they are equal
As in both operations upper case charcters are used.
You are using/comparing the german ß sign, its uppercase produce SS... so you need to use the Locale.German
if (string1.toUpperCase(Locale.GERMAN).equals(string2.toUpperCase(Locale.GERMAN)))
that will return true....