Dúvida básica de Array vs Referência

Galera estudando aqui um pouco e eis que me surgiu uma dúvida enquanto eu fazia um código de teste.

Minha dúvida é referente a criação de uma Array, digamos por exemplo que eu tenho duas classes, uma chamada Empresa e outra Funcionario, na classe Empresa eu criei uma Array: Funcionario[] funcionario.

Dessa forma seria criado automaticamente uma referência para a classe Funcionario? Ou eu ainda teria que referenciar explicitamente também fazendo: Funcionario funcionario?

Cria a referência automaticamente sim!

Eu fiz um teste aqui, mas não funcionou,

public class Funcionario {
    
    String nome;
    
}
public class Empresa {
    
    public static void main(String[] args) {
        
        Funcionario[] funcionario;
        
        funcionario.nome = "teste";
         
    }

}

@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?!

2 curtidas

funcionarios[0] = funcionario;

Galera, obrigado pelas respostas.

Minha dúvida era bem simples: Uma Array então pode criar referência para uma classe?
Resposta: NÃO, certo? Pois uma Array cria apenas espaços em memória (variáveis) para armazenamento de dados.

Só fiquei com essa dúvida por que eu havia colocado o mesmo nome da classe, por isso surgiu a dúvida. Mas o nome não importa, pois uma Array é uma coisa e criar uma referência ou um objeto de classe é outra, não é verdade?

Sim. Eu expliquei isso na minha resposta. Um array é apenas um armário que armazena um tipo.

2 curtidas

Show Thiago (y)