Erro ao importar dados de txt para array

Ao executar, só é exibido caracteres aleatórios, imagino que seja o endereço de memória, eu precisaria que fossem exibidos os elementos. Segue o código:

package pqp;

import java.awt.List;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class CarregaAlunos2 {

	protected static Aluno constroiAluno(String linha){
		String atributos[] = linha.split(",");
		Aluno a = new Aluno(atributos[0], atributos[1], atributos[2]);
		return a;
	}

	public static Aluno[] carregaArquivo(String arquivo) throws IOException{
		Aluno alunos[] = new Aluno[5];
		FileReader fr = new FileReader(arquivo);
		BufferedReader br = new BufferedReader(fr);

		String linha;
		int cont = 0;
		while ((linha = br.readLine()) != null)
		{
			Aluno a = constroiAluno(linha);
			alunos[cont] = a;
			cont++;
		}
		br.close();
		return alunos;
	}

	
	public static void main(String[] args) {
		try{
			Aluno a[] = carregaArquivo("notas.txt");
			for (int i=0; i < a.length; i++){
				System.out.println(a[i]);
			}
		}
		catch(IOException e){
			e.printStackTrace();
		}
	}
}

Retorno no console

pqp.Aluno@15db9742
pqp.Aluno@6d06d69c
pqp.Aluno@7852e922
pqp.Aluno@4e25154f
pqp.Aluno@70dea4e

Colocando “.toString()”

Quando você faz um println de um objeto diferente de null, o Java vai invocar o método toString() daquele objeto.

A implementação padrão do método toString() retorna <nome da classe>@<identity hashcode do objeto>.

Ou você imprime exatamente as propriedades que quer, por exemplo System.out.println(a[i].getNome()).

Ou você sobrescreve o método toString() da classe Aluno para trazer a informação que você quer.