Sobre valor padrão de String

Vejam o código:


public class TesteStrings {

	private String s1;
	private String s2 = new String();
	
	public static void main(String[] args) {
		TesteStrings teste = new TesteStrings();
		System.out.println("S1: " + teste.s1 + "\nS2: " + teste.s2);

	}

}

O resultado:

S1: null
S2: 

Levando em conta que variáveis de instância são inicializadas no momento da criação do objeto, o valor padrão de String é null ou “”?
Implicitamente na criação, s1 não recebe “new String()”???

s1 e s2 são objetos, portanto tem seus valores padrão como null.

Lembre-se que atributos de objeto recebem null. Só chama seu contrutor ao ser criado uma nova instancia.

Toda variável de instância recebe, se não for inicializada explicitamente (ou na declaração, ou no construtor):

  • O valor 0 ou false ou 0.0 ou ‘\u0000’ se for um valor primitivo;
  • null se for uma referência (mesmo “java.lang.String” é uma classe) - não há exceções a essa regra.

Portanto, implicitamente na criação s1 recebe null, não “new String()”. OK?

Por default um objeto eh sempre nulo