Erro ao exibir objeto em Vetor

Codigo abaixo tenho de criar um vetor para armazenar o nome dos usuario e endereço. Contudo não consigo exibir o cep dos usuarios.

Codigo Endereco

public class Endereco {
    private String logradouro;
    private int numero;
    private String complemento;
    private String bairro;
    private String cidade;
    private String estado;
    private int CEP;

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public int getCEP() {
        return CEP;
    }

    public void setCEP(int CEP) {
        this.CEP = CEP;
    }
}

Codigo Pessoa

public class Pessoa {

    private String nome;
    private int idade;
    private char sexo;
    private long CPF;
    private Endereco residencial;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public char getSexo() {
        return sexo;
    }

    public void setSexo(char sexo) {
        this.sexo = sexo;
    }

    public long getCPF() {
        return CPF;
    }

    public void setCPF(long CPF) {
        this.CPF = CPF;
    }

    public Endereco getResidencial() {
        return residencial;
    }

    public void setResidencial(Endereco residencial) {
        this.residencial = residencial;
    }
}

Código do main

public class Principal {
    public static void main(String[] args){
        
        Pessoa[] vetor = new Pessoa[5];
        
        for(int i=0; i<vetor.length; i++){
            vetor[i]=new Pessoa();
            vetor[i].setNome("Nome do fulanox "+i);
            vetor[i].setCPF(1234567890);
            vetor[i].setIdade(23);

            // Declarar e Cria um endereço
            Endereco e = new Endereco();
            e.setCidade("São Paulo");
            e.setCEP(01023040);

            // Atribui o endereço à pessoa
            vetor[i].setResidencial(e);
            
            // Exibir
            System.out.println("Nome: "+vetor[i].getNome());
            System.out.println("Cep:  "+vetor[i].getResidencial());

        }
    }

}

linha :

 System.out.println("Cep:  "+vetor[i].getResidencial());

Codigo em execução:

Apenas o uso de conceito de orientação de objeto.

System.out.println("Cep:  "+vetor[i].getResidencial().getCEP());
System.out.println("Cep:  "+vetor[i].getResidencial().getCidade());

boa noite, bom qnd vc tenta imprimir o getresidencial().getcidade() ele vai mostrar o endereço de memoria, na classe endereço é so voce adicionar um toString. se estiver usando o eclipse ele pode fazer isso automaticamente pra vc, exemplo:
@Override
public String toString() {
return “Endereco [logradouro=” + logradouro + “, numero=” + numero + “, complemento=” + complemento + “, bairro=” + bairro + “, cidade=” + cidade + “, estado=” + estado + “, CEP=” + CEP +"]";}
Na classe principal, use um for melhorado pra imprimir os dados do vetor:
for (Pessoa vect : vetor) {
System.out.println("Nome: "+vect.getNome());
System.out.println("Cep: "+vect.getResidencial().getCidade());
}
e acho que isso resolve