区別の基本的な考え方
1、整数ラッパークラスintで、int型は、基本データ型のJavaの一種であります
2、整数変数は、使用前にインスタンス化しなければならない、とint型の変数を必要としません
3、新しい整数は、実際にオブジェクトへのポインタを生成するときIntegerオブジェクトは、実際には、参照されている;そしてintデータ値が直接格納されています
4、整数デフォルトがnullの場合、デフォルト値は0 intです
整数、新しい整数()とint型の比較
1、二つの新しい整数()変数の比較は常にfalseです
その異なるメモリアドレス2つのオブジェクトの新しい世代のため、
2、整数変数とされた新しいInteger()変数の比較は、常にfalseです。
Javaオブジェクトのような整数変数は定数プールを指摘し、ヒープ内の新しいオブジェクトに新しい新しい整数()可変点、メモリ内の2つの異なるアドレス。
-128〜127の間の2つの変数の間隔は、比較結果が真である場合、2つの変数の値がこの範囲内にない場合図3は、2つの整数の変数の比較は、比較結果が偽です。
分析:
整数I =コンパイル時100は、整数I = Integer.valueOf(100)に翻訳され、タイプ整数のJavaのvalueOfの定義は次のとおり
-128〜127の数とJavaは、キャッシュされています。
したがって、整数I = 127は、127がキャッシュされるとき、次の書き込み整数j = 127は、キャッシュから直接取得されます場合は、新しいものではないでしょう。
真次いで、限り二つの値が等しくなるように、新たな整数と比較4、INT整数変数()
パッケージや基本データ型がIntegerの比較をint型なので、Javaのintは自動的に解凍され、その後、比較、実際には、2つの比較変数int型になります。
例1:
答えは
例2:
例3:
次の出力は偽です。
解像度:
I01 == I02。5959 i01.intValue()I02 2つの値を比較 - >はtrue。
I01 == I03。59 127 -128の間にあるので、したがって、I01及びI03代入演算子は、同じオブジェクトを返します。同じオブジェクトがchche、真の同じオブジェクトのアドレスから返されます。
I03 == I04。キャッシュ値からI03、I04は、新しい新しいオブジェクトである、2つが同じオブジェクトではありません、それは偽です。
I02 == I04。そして、同様の真。
答えはCです。
例4:
実施例3の唯一の違いは、すべての128の値を変更することです。
次の出力は偽です。
答え:
最後に、
私たちは、ヨーヨーは、物品、支援への感謝を覚えている賞賛のポイントのように、交換を歓迎します!