Classes Wrapper et clarifications génériques en Java

Shalin Fernando:

Dans le code ci - dessous, la ligne System.out.println(sumInteger(bigs) == sumInteger(bigs));affiche en tant que faux. Mais quand on compare à nouveau les autres classes d'emballage entiers System.out.println(bc == ab);, il retourne vrai. Pourquoi la comparaison des classes d'emballage faux dans le premier cas et vrai dans le second cas?

import java.util.Arrays;
import java.util.List;

public class Arrays {

    public void array1() {

        List<Integer> bigs = Arrays.asList(100,200,300);
        System.out.println(sumInteger(bigs) == sum(bigs)); // 1. Output: true
        System.out.println(sumInteger(bigs) == sumInteger(bigs)); //2. Output: false

        Integer ab = 10;
        System.out.println(ab == 10); //3. Output: true
        Integer bc = 10;
        System.out.println(bc == ab); //4. Output: true
    }

    public static int sum (List<Integer> ints) {
        int s = 0;
        for (int n : ints) { s += n; }
        return s;
    }

    public static Integer sumInteger(List<Integer> ints) {
        Integer s = 0;
        for (Integer n : ints) { s += n; }
        return s;
    }

    public static void main(String[] args) {
        Array tm = new Array();
        tm.array1();
    }
}
Dumidu Udayanga:
   System.out.println(sumInteger(bigs) == sum(bigs)); // 1. ***Output: true
   System.out.println(sumInteger(bigs) == sumInteger(bigs)); //2. ***Output: false

sumInteger () retourne un entier et la somme () retourne un entier, de sorte que vous testez l'égalité d'un nombre entier avec un int, ce qui provoque l'entier d'être auto-Unboxed, vous finissez par la comparaison d'un int avec un int. Les deux ints ont maintenant la même valeur, donc « vrai ».

sumInteger () retourne un entier, appelant sumInteger () retourne à nouveau un nombre entier. Ces deux objets sont créés Entiers séparément, mais les deux détiennent la même valeur interne. Lorsque vous utilisez « == » » les comparer compare les références et de voir la façon dont chaque objet a été créé de façon indépendante les références ne sont pas égaux, donc « faux ». Si vous aviez voulu tester la valeur pour vous l'égalité auriez besoin d'utiliser la méthode equals ().

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=180618&siteId=1
conseillé
Classement