Java – when comparing two equal integers in a while loop, does the equal operator fail?

I post two examples below

Example 1:

Integer myVar1 = 42985;
  Integer myVar2 = 1;
  while (true)
  {
     if (myVar2 == myVar1)
     {
     break;
     }

  ++ myVar2;
  }

Example 2:

Integer myVar1 = 42985;
  Integer myVar2 = 1;
  while (true)
  {
     if (myVar2 >= myVar1)
     {
     break;
     }

  ++ myVar2;
  }

Editor: Thank you for the good news! I now fully understand this problem. This new information explains some strange behaviors I encounter in my application I hope I can choose more than one best answer

Solution

This is one of the unpleasant effects of automatic boxing

In the first example, the = = operator indicates identity Equality: if two objects are the same instance, they will be equal

In the second example, the '> =' operator represents a numeric comparison: the two objects are automatically unboxed and then compared

To make things more confusing, there is a series of "small" integers (- 128 < = x < = 127, IIRC) JVM caches integer values, so the = = operator sometimes works Bottom line: use Equals() and compareTo().

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>