Uma referência é uma variável que aponta para um objeto. Em Java, variáveis de tipos de classe não armazenam o objeto em si, mas sim uma referência para a região de memória onde o objeto foi criado. É por meio dessa referência que métodos são chamados e campos são acessados.
Exemplo conceitual
User user = new User("Alice");
User sameUser = user;
Explicação linha a linha
User user = new User("Alice");
Cria um objeto da classe User e armazena, na variável user, uma referência para esse objeto.
User sameUser = user;
Cria uma segunda variável que aponta para o mesmo objeto. Nenhum novo objeto é criado; ambas as referências apontam para a mesma instância em memória.
Esse conceito é fundamental para compreender comportamento compartilhado, mutabilidade e efeitos colaterais em Java.