いわゆるボクシング (Boxing) は、実際には基本型をパッケージ クラスに変換します。 double を Double に変換するなど。ボックス化には手動ボックス化と自動ボックス化 (Auto Boxing) があり、パッケージング クラスを手動でインスタンス化する場合は手動ボックス化になります。 JDK 1.5 より前は、手動でボックス化を実行する必要がありましたが、JDK 1.5 以降は、手動操作なしで自動ボックス化を実行できるため、開発が簡素化され、利便性が向上します。
次のケースは、手動ボックス化と自動ボックス化の実装プロセスです。 JDK 1.5 の前後では、ボクシングは手動ボクシングと自動ボクシングに分けられるため、誰もが注目する必要があります。
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆装箱过程--手动拆装箱 byte b = 10; //手动装箱 Byte b1 = Byte.valueOf(b); System.out.println("手动装箱后的结果,b1="+b1); //手动装箱的另一种形式 int m = 100; Integer obj = new Integer(m); //手动拆箱的另一种形式 int n = obj.intValue(); System.out.println("n = " + n); //JDK 1.5之后的拆装箱过程--自动拆装箱 int i = 10; //自动装箱 Integer i001 = i; System.out.println("自动装箱后的结果,i001="+i001); } }
いわゆるアンボックス化 (Unboxing) とは、実際には、Double を double に変換するなど、パッケージ化タイプを基本タイプに変換することです。 。同様に、アンボックス化も手動アンボックス化と自動アンボックス化(Auto Boxing)に分かれており、パッケージングクラスの手動インスタンス化は手動アンボックス化となります。 JDK 1.5 より前では、ボックス化を手動で行う必要がありましたが、JDK 1.5 以降では、ボックス化を自動的に行うことができます。
次のケースは、手動開封と自動開封の実装プロセスです。 JDK 1.5 の前後では、アンボックス化は手動アンボックス化と自動アンボックス化に分けられるため、誰もが注意を払う必要があります。
public class BoxTest { public static void main(String[] args) { //JDK 1.5之前的拆装箱过程--手动拆装箱 byte b = 10; //手动装箱 Byte b1 = Byte.valueOf(b); System.out.println("手动装箱后的结果,b1="+b1); //手动拆箱 byte b2 = b1.byteValue(); System.out.println("手动拆箱后的结果="+b2); //JDK 1.5之后的拆装箱过程--自动拆装箱 int i = 10; //自动装箱 Integer i001 = i; System.out.println("自动装箱后的结果,i001="+i001); //自动拆箱 int i002 = i001; System.out.println("自动拆箱后的结果,i002="+i002); } }
自動ボックス化と自動アンボックス化はコンパイル段階でのみ発生し、その目的はコードの記述を減らすことであることに注意してください。パフォーマンスの観点から見ると、ボックス化とボックス化解除のプロセスはコードの実行効率に影響します。コンパイルされたクラス コードは基本型と参照型を厳密に区別するため、コンパイル フェーズでもボックス化とボックス化解除を実行する必要があります。コンパイル後は元に戻ります。さらに、自動アンボックス化中に、割り当てが不適切な場合、以下に示すように NullPointerException が発生する可能性があります。
以上がJavaでラッパークラスのボックス化とボックス化解除を正しく行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。