Comparando objetos inteiros vs int – java

Eu fixo um loop interminável alterando o inteiro para int_

Qual é a razão certa para isso? Eu pensei que inteiro não compararia nenhum problema.

Obrigado.

respostas:

17 para a resposta № 1

Porque quando você faz! = Comparando no objeto, compare as referências. E as referências entre dois objetos em geral são diferentes.

Quando as entradas são comparadas, os primitivos são sempre comparados, digamos nenhuma referências (sem objetos), mas valores.

Portanto, se você quiser trabalhar com inteiro, você deve Use iguais () neles.

Além disso, se seus valores forem entre 0 e 255, a comparação entre inteiros funciona bem, devido ao cache.

Você pode ler Aqui: http://download.oracle.com/javase/tutorial/java/data/numberclasses.html

6 para a resposta № 2

Integer é um Object, e os objetos são comparados com .equals(..)

são apenas primitivos comparados com ==

Essa é a regra, além de alguns casos excepcionais, onde == pode ser usado para comparar objetos. Mas mesmo assim, não é aconselhável.

2 para a resposta № 3

O problema é que o inteiro é uma classe e, portanto, até mesmo a comparação é feita como para qualquer outra classe, usando o método .Equals (). (). Se você compará-lo com ==, compare as referências sempre diferentes para duas instâncias diferentes. O tipo primitivo int não é uma classe, mas um tipo Java embutido e a comparação é tratada especialmente pelo compilador e funciona como esperado.

2 para a resposta № 4

Você pode usar integer.intvalue () para obter o valor int para a comparação, se você realmente precisar usar o inteiro.

1 para a resposta № 5

inteiro é um envelope de classe em torno do java tipo primitivo int. Eles não são a mesma coisa. Você deve usar int em vez de inteiro, a menos que você tenha um motivo válido (como ArrayList<Integer> list;

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *