omportamento estranho em expressões regular

Havia uma pergunta sobre regex e, tentando responder, encontrei outras coisas estranha

String x = "X";
System.out.println(x.replaceAll("X*", "Y"));

Isso imprime YY. porque?

String x = "X";
System.out.println(x.replaceAll("X*?", "Y"));

E isso imprime YXY

Por que o regex relutante não corresponde ao caractere 'X'? Há sim"noting"X"nothing" mas por que primeiro não corresponde a três símbolos e corresponde a dois e depois a um em vez de três? e o segundo regex corresponde apenas a"nothing"s e nãoX?

questionAnswers(6)

yourAnswerToTheQuestion