Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Começando com Orientação a objetos - Exercicio 4 - Duvidas.

class Funcionario4{ String nome; String depto; double salario; String datEntradaBanco; String rg;

void mostra() { System.out.println("Nome: " + this.nome); System.out.println("Depto: " + this.depto); System.out.println("Salario:" + this.salario); System.out.println("DatEntradaBanco: " + this.datEntradaBanco); System.out.println("RG: " + this.rg); System.out.println("Ganho Anual: " + this.calculaGanhoAnual()); }

public double calculaGanhoAnual () { double ganhoAnual = 0; return ganhoAnual = this.salario * 12; } }

class TesteFuncionario4 { public static void main(String[] args) { Funcionario4 f1= new Funcionario4(); f1.nome = "Ricardo Toma"; f1.salario = 10000.0;

Funcionario4 f2 = new Funcionario4(); f2.nome = "Ricardo Toma"; f2.salario = 10000.0;

if (f1 == f2) { System.out.println("iguais"); } else { System.out.println("diferentes"); }

} }

O Resultado mostra que os funcionários são diferentes.

Foi instanciado dois objetos, mas com os mesmos valores. A comparação feita não é do valor atribuído ao objeto ? Se precisar compara o conteúdo do objeto como deve ser feito ?

4 respostas

Oi Ricardo A comparação sempre será diferente, pois, mesmo que os objetos tenham atributos iguais, cada um referência um lugar diferente na memória. Portanto na comparação

f1 == f2

compara se os dois objetos estão comparando os mesmos lugares de memória.

Mas se eu tiver que comparar o conteúdo do objeto, os dois objetos tem o mesmo valor. Como faria para que o valor desse igual ?

solução!

mais para a frente vai ser ensinado o equals, é ele que vai ser utilizado para fazer esse tipo de comparação.

para esta comparação o correto seria como abaixo?

if ((f1.getNome == f2.getNome) && (f1.getSalario == f2.getSalario)) { System.out.println("Iguais"); } else { System.out.println("Diferentes"); :