@Diego.Souza , vou te explicar o que é uma referência.
Referência é um nome que se dá a algo para ser identificado. Por exemplo:
Teu nome é Diego. Posso dizer que Diego é um nome que te referencia. Porém, existe milhares de Diego. Uma referência mais precisa seria o teu CPF. Pois ele é único. Então, o teu CPF é uma referência única para a pessoa que você é.
Agora imagina só: Eu tenho um objeto(não do java, mas sim da vida real) que ainda não tem nome; pois foi inventado agora. Esse objeto vou chamar de lurana. Então, a partir de hoje, lurana é uma referência para esse objeto que foi inventado.
Vamos para a tua dúvida agora.
No java, existe a referência e a instância, que quase sempre estão juntas.
Referência eu já te expliquei o que é. Porém, no mundo java, precisamos de uma instância para utilizar essa referência - suponha que essa afirmativa seja verdadeira.
Se a referência é o nome, o objeto é a virtualização, criação etc do que foi referenciado.
Por exemplo: Pense no seu CPF, que faz referência a você. Você existe no mundo, logo, você é uma instância. O dia que tu virar pó a referência ainda vai existir, mas não o referenciado (que é você).
Se você conseguiu entender esse conceito de referência e instância, parabéns. Pois isso é um dos primeiros passos para se aprender uma linguagem OO.
No caso do teu problema, temos o seguinte erro: Você criou uma referência, que o nome é funcionario. Essa referência tem o formato de Funcionario[]. Porém, ela não está apontando pra ninguém.
Faça assim:
public class Funcionario {
String nome;
}
public class Empresa {
public static void main(String[] args) {
Funcionario[] funcionarios = new Funcionario[10];
Funcionario funcionario = new Funcionario();
funcionario.nome = "teste";
funcionario[0] = funcionario;
}
}
Explicando. Você criou uma referência para um array de funcionários e disse que ele vai suportar 10 funcionários.
É como se fosse uma gaveta onde só entra funcionário e nada mais.
Depois você criou um funcionário e colocou nessa gaveta.
Sacou?!