Como instancio Objetos automaticamente com Array?

Pessoal, eu criei uma classe Aluno com 3 propriedades e coloquei set e get para os mesmo, estou tentando instanciar um quantidade de objetos definida pelo usuário porém a forma como eu acredito estar certa está me compilando erro, o que estou fazendo de errado?

public class SysAluno {
    
    public static void main(String[] args){
        
        Scanner scan = new Scanner(System.in);
        
        System.out.print(" Digite a quantidade de Alunos na Turma: ");
        int numAlunos = scan.nextInt();    
        
        Aluno[] alunos = new Aluno[numAlunos];
        
        for(int i = 0; i <= numAlunos ; i++){
            System.out.print("Informe o nome do "+ (i+1) + "º aluno: ");
            alunos[i].setNome(scan.nextLine());
            System.out.print("Informe a nota AV1 do "+ (i+1) + "º aluno: ");
            alunos[i].setAv1(scan.nextDouble());
            System.out.print("Informe a nota AV2 do "+ (i+1) + "º aluno: ");
            alunos[i].setAv2(scan.nextDouble());
        }
    }
}

A princípio não tem erro de compilação, mas se você tentar executar esse código você vai obter NullPointerException. Coloque a seguinte linha dentro do for:

alunos[i] = new Aluno();

1 curtida