Bizarre Entier de boxe en Java

J'ai juste vu le code de similaire à ceci:

public class Scratch
{
    public static void main(String[] args)
    {
        Integer a = 1000, b = 1000;
        System.out.println(a == b);

        Integer c = 100, d = 100;
        System.out.println(c == d);
    }
}

Quand couru, ce bloc de code affiche:

false
true

Je comprends pourquoi le premier est false: parce que les deux objets sont des objets distincts, de sorte que le == compare les références. Mais je ne peux pas comprendre, pourquoi est le deuxième énoncé de retour true? Est-il étrange de l'autoboxing règle qui entre en jeu lors d'un Entier de valeur est dans une certaine gamme? Ce qui se passe ici?

  • Ressemble à un dupe de stackoverflow.com/questions/1514910/...
  • Pas tout à fait dupe, mais une situation similaire est discutée. Merci pour la mention bien.
  • c'est horrible. c'est pourquoi je n'ai jamais compris le point de l'ensemble de primitives, mais de l'objet, mais à la fois, mais l'auto-encadrées, mais dépend, mais aaaaaaaaargh.
  • Le mot "l'autoboxing" n'est pas un code, afin de ne pas le formater comme ça.
InformationsquelleAutor Joel | 2010-06-28