Oie Valquíria, tudo bem?
Ambas as formas funcionam de maneira igual e em situações normais tanto faz qual o jeito que você vai usar, entretanto existem diferenças e vou explicar melhor abaixo:
Instanciar o objeto fora do construtor:
Nessa situação sempre que essa classe for instanciada, esse objeto incluido como atributo também será instanciado não importando se ele é necessário ou não.
Instaciar dentro do construtor:
Nessa situação você ganha maior liberdade de "customização", ou seja, as vezes esse objeto não vai precisar se instanciado e ele estando dentro de um construtor, seria só você chamar outro construtor onde esse objeto não é instanciado já que é possível uma classe ter mais de um construtor. Você também ganha liberdade para decidir como esse objeto será instanciado, podendo ele ser instanciado de maneira direta dentro da classe ou dele receber o valor através dos parâmetros do construtor. Por exemplo:
1º Caso:
public class Pessoa {
Familia famiia;
public Pessoa() {
this.familia = new Familia();
}
}
2 º Caso:
public class Pessoa {
Famiia familia;
public Pessoa(Familia familia) {
this.familia = familia;
}
}
Além disso tudo, podem haver outras situações onde é preferivel instanciar o objeto dentro do construtor, mas isso irá depender do que você quer alcançar com seu código.
Espero ter conseguido ajudar, se houver qualquer outra dúvida é só mandar por aqui :)
Bons estudos!