Java, exercício de análise
assunto: arraylist, equals
pergunta: qual o output do seguinte:
package recursopa2; import java.util.ArrayList; import java.util.List; class Inteiro { private int i; public Inteiro(int i) { this.i = i; } public void setVal(int i) { this.i = i; } public int getVal() { return i; } public String toString() { return "" + i; } //extra public boolean equals(Object ob) { if (ob == null) { return false; } if (getClass() != ob.getClass()) { return false; } //se chego aqui já posso comparar o i //return (i==ob.i); //dá erro, porque ob não conhece i, então Inteiro a = (Inteiro) ob; //fazemos um cast return (i == a.i); } //e desta forma o System.out.println(i.equals(j)); //dá true } class main { public static void main(String[] args) { List<Inteiro> listaInteiros = new ArrayList<>(); //criado um arraylist de listaInteiros Inteiro i = new Inteiro(10); Inteiro j = new Inteiro(10); System.out.println(i == j); //saida: falso //porque estão em referências diferentes System.out.println(i.equals(j)); //saida: falso //o equals faz a comparação que nos programamos lá dentro //por exemplo comparar conteudos //mas o equals não foi definido, e não dá erro porque //está a usar a do object, class Inteiro extends object //e a equals no object considera dois objetos iguais //se tiverem o mesmo endereço listaInteiros.add(i); listaInteiros.add(j); j = i; //j refere o i j.setVal(2); //o primeiro elemento do array list fica 2 System.out.println(i); //saida: 2 System.out.println(j); //saida: 2 System.out.println(listaInteiros.get(0)); //saida: 2 System.out.println(listaInteiros.get(1)); //saida: 10 } }
Tags : java, Programação avançada
0 thoughts on “Java, exercício de análise”