String replaceAll () método e caracteres de escape

A linha

System.out.println("\\");

imprime uma única barra invertida (\). E

System.out.println("\\\\");

imprime barras invertidas duplas (\\). Entendido!

Mas por que no seguinte código:

class ReplaceTest
{
    public static void main(String[] args)
    {
        String s = "hello.world";
        s = s.replaceAll("\\.", "\\\\");
        System.out.println(s);
    }
}

é a saída:

hello\world

ao invés de

hello\\world

Afinal, oreplaceAll() método está substituindo um ponto (\\.) com (\\\\).

Alguém pode explicar isso?

questionAnswers(7)

yourAnswerToTheQuestion