StringのcontainsメソッドとreplaceAllメソッドを使って少し調べました。
char c = '*';
String str = "1220"+c+""+c+""+c+""+c+""+c+"23";
System.out.println(str.contains(c+""));
System.out.println(str.contains("["+c+"]"));
System.out.println(str.contains("\\"+c));
System.out.println(str.replaceAll("["+c+"]", "X"));
System.out.println(str.replaceAll("\\"+c, "X"));
System.out.println(str.replaceAll(c+"", "X"));
結果:c='*'または'^'または'+'の場合
true
false
false
1220XXXXX23
1220XXXXX23
java.util.regex.PatternSyntaxException
c ='#'または'〜'または'%'または'<'または'>'または'='または'&'または'@'または'-'または'!'の場合
true
false
false
1220XXXXX23
1220XXXXX23
1220XXXXX23
c='$'の場合
true
false
false
1220XXXXX23
1220XXXXX23
1220$$$$$23X
c='|'の場合
true
false
false
1220XXXXX23
1220XXXXX23
X1X2X2X0X|X|X|X|X|X2X3X
この背後にある理論/ルールは何ですか?