1. Java の基本データ型とそのカプセル化クラス
javaデータ型には基本データ型と参照データ型があり、基本データ型をオブジェクトとして処理しやすくするために、Java では基本データ型に対応するカプセル化クラスが導入されています。たとえば、int カプセル化クラスは Integer です。
オンライン教育ビデオ共有: java 教育ビデオ
2. Java の自動開梱と自動梱包
# #1 . 自動ボックス化
#自動ボックス化は、実際には基本データ型を参照データ型 (オブジェクト) に変換することです#2. 自動ボックス化解除自動ボックス化解除実際には、参照データ型を基本データ型に変換しています
コードは次のとおりです:
public static void main(String[] args) { Integer a = 1;//这里就用到了自动装箱;等同于Integer a = new Integer(1); int b = a - 1;//对象不能直接进行计算,所以这里有自动拆箱的操作,将a对象转换成基本数据类型,然后-1 System.out.println(a); System.out.println(b); }
印刷結果:
1 03. int と Interger の違い
上記のことから、int と Interger の違いがわかります。
int は基本データ型で、Integer は参照データ型です。
## デフォルト#int の値は 0、Integer のデフォルト値は null です。int 型は値を直接格納し、Integer はオブジェクトをインスタンス化し、オブジェクトのアドレスを指す必要があります。 そういえば、それだけだと思いませんか?実は、両者には次のような細かい違いがあります:public static void main(String[] args) { Integer a = new Integer(1); Integer b = new Integer(1); int c = 1; int d = 1; Integer e = 1; Integer f = 1; Integer g = 130; Integer h = 130; Integer i = new Integer(130); int j = 130; }1: a == b?ナンセンス、絶対に平等ではない。 2 つの新しいオブジェクトのアドレスは異なります。 2: c == d?これもナンセンスで、基本データ型の値は等しくなければなりません。 3: ここでの重要な質問は、e == f? です。 g == h? 答えは、e == f; g != hです。 なぜこのようなことが起こるのでしょうか? ava がコンパイルされると、Integer g = 130 は Integer.valueOf(130) にコンパイルされるため、これはクラス ファイルを逆コンパイルすることで確認できます。 Integer ソース コードから、Integer.valueOf() メソッドは値 -128 ~ 127 の間の整数をキャッシュし、新しい整数を作成しないため、値 2 が のとき e==f; であると結論付けることができます。 127 より大きいか小さい - 128 で新しいものが作成されるため、g != h になります。
Integer の valueOf メソッドは次のとおりです:
public static Integer valueOf(int i) { //IntegerCache.low == -128 ;IntegerCache.high == 127 //当数值大于-128小于127时,进行缓存;否则重新new一个。 if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }4: c == e, i == j ですか? 答えはすべて等しいです。なぜなら、カプセル化されたクラスと基本的なデータ型を比較するとき、Java は自動的にそれらをボックスから取り出して、値が等しいかどうかを比較するからです。 概要: 1. これらはすべてカプセル化されたクラスであり、すべて new から派生しているため、まったく同じではありません。オブジェクトのメモリアドレスが異なるためです。 2. これらはすべてカプセル化されたクラスであり、new から派生したものではありません。値が -128 ~ 127 の場合は等しく、それ以外の場合は等しくありません。 3. カプセル化されたクラスと基本型を比較する場合、値が等しい限りは等しく、そうでない場合は等しくありません。カプセル化されたクラスと基本データ型を比較するときに、自動的にボックス化解除操作が行われるためです。 4. これらはすべて基本的なデータ型であり、値が等しい場合は等しい、そうでない場合は等しくありません。 さらに関連するチュートリアルについては、次のサイトを参照してください:
Java 入門
以上がJavaのintとintegerの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。