ホームページ  >  記事  >  Java  >  Java チュートリアル - Int と Integer の違い

Java チュートリアル - Int と Integer の違い

高洛峰
高洛峰オリジナル
2016-12-02 16:22:391925ブラウズ

まず、int と Integer の違いについて話しましょう:

int は基本的なデータ型で、Integer は int のラッパー クラスです。注: 後者のタイプは「クラス」です。たとえば、ジェネリックを使用すると、Listc0f559cc8d56b43654fcbe4aa9df7b4a numList;

int の初期値は 0 になり、integer は null になります。

以下の具体的な例を見てください:

package syswar.cc;

public class IntegerCompare {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Integer a1 = 2;
        Integer a2 = 2;

        Integer b1 = 150;
        Integer b2 = 150;

        Integer c1 = new Integer(2);
        Integer c2 = new Integer(2);

        Integer d1 = new Integer(150);
        Integer d2 = new Integer(150);

        System.out.println("a1==a2?" + (a1==a2));
        System.out.println("b1==b2?" + (b1==b2));
        System.out.println("c1==c2?" + (c1==c2));
        System.out.println("d1==d2?" + (d1==d2));
    }

}

実行結果:

a1==a2?true
b1==b2?false
c1==c2?false
d1==d2?false>

この結果はなぜですか?まず、2 つのグループ a と b を比較してみましょう。 Integer が初期化されると、これらの Integer オブジェクトに対応する int 値は [-128,127] のバイト範囲内にキャッシュされます。

int 値を Integer に直接割り当てる場合、値の範囲が [-128,127] の場合、Integer はキャッシュから Integer オブジェクトを直接取得します。したがって、直接割り当てられた int 値が [-128,127] にある場合、Integer オブジェクトは次のようになります。同じオブジェクトです。

newメソッドで取得したIntegerオブジェクトはヒープから直接割り当てられたオブジェクトであるため、具体的なint値が何であっても==判定の結果は偽となります


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。