Diferença entre String Java nula e vazia (“”)

Qual é a diferença entre nulle a ""(string vazia)? Eu escrevi um código simples: String a = ""; String b = null; System.out.println(a == b); // false System.out.println(a.equals(b)); // false As duas instruções retornam false. Parece que não consigo encontrar qual é a diferença real entre...