Dois objetos diferentes (f1 e f2, no exmplo) geram false mesmo que suas informações sejam iguais.
Mas é possível criar, por exemplo, um new dentro de um loop? Algo como:
for(int i =4;i>0;i--){ Funcionario f1 = new Funcionario();
}
Seriam criados 4 funcionários com a mesma designação (f1). Nesse caso, estou criando 4 objetos diferentes com o mesmo nome, quando eu fizesse f1.nome = "Alan"; como identificar qual dos 4 funcionários está sendo alterado?