更新時(shí)間:2022-04-13 11:15:37 來源:動力節(jié)點(diǎn) 瀏覽1253次
Java包裝類是什么?動力節(jié)點(diǎn)小編來告訴大家。Wrapper 類是其對象包裝或包含原始數(shù)據(jù)類型的類。當(dāng)我們?yōu)榘b類創(chuàng)建一個(gè)對象時(shí),它包含一個(gè)字段,在這個(gè)字段中,我們可以存儲原始數(shù)據(jù)類型。換句話說,我們可以將原始值包裝到包裝類對象中。
1.它們將原始數(shù)據(jù)類型轉(zhuǎn)換為對象。如果我們希望修改傳遞給方法的參數(shù)(因?yàn)樵碱愋褪前粗祩鬟f的),則需要對象。
2.java.util 包中的類只處理對象,因此包裝類在這種情況下也有幫助。
3.Collection 框架中的數(shù)據(jù)結(jié)構(gòu),例如ArrayList和Vector,只存儲對象(引用類型)而不是原始類型。
4.需要一個(gè)對象來支持多線程中的同步。
自動裝箱:將原始類型自動轉(zhuǎn)換為其相應(yīng)包裝類的對象稱為自動裝箱。例如 – 將 int 轉(zhuǎn)換為 Integer,將 long 轉(zhuǎn)換為 Long,將 double 轉(zhuǎn)換為 Double 等。
示例:
// Java program to demonstrate Autoboxing
import java.util.ArrayList;
class Autoboxing
{
public static void main(String[] args)
{
char ch = 'a';
// Autoboxing- primitive to Character object conversion
Character a = ch;
ArrayList<Integer> arrayList = new ArrayList<Integer>();
// Autoboxing because ArrayList stores only objects
arrayList.add(25);
// printing the values from object
System.out.println(arrayList.get(0));
}
}
輸出:
25
拆箱:這只是自動裝箱的逆過程。將包裝類的對象自動轉(zhuǎn)換為其相應(yīng)的原始類型稱為拆箱。例如 – 將 Integer 轉(zhuǎn)換為 int、Long 轉(zhuǎn)換為 long、Double 轉(zhuǎn)換為 double 等。
// Java program to demonstrate Unboxing
import java.util.ArrayList;
class Unboxing
{
public static void main(String[] args)
{
Character ch = 'a';
// unboxing - Character object to primitive conversion
char a = ch;
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(24);
// unboxing because get method returns an Integer object
int num = arrayList.get(0);
// printing the values from primitive data types
System.out.println(num);
}
}
輸出:
24
// Java program to demonstrate Wrapping and UnWrapping
// in Java Classes
class WrappingUnwrapping
{
public static void main(String args[])
{
// byte data type
byte a = 1;
// wrapping around Byte object
Byte byteobj = new Byte(a);
// int data type
int b = 10;
//wrapping around Integer object
Integer intobj = new Integer(b);
// float data type
float c = 18.6f;
// wrapping around Float object
Float floatobj = new Float(c);
// double data type
double d = 250.5;
// Wrapping around Double object
Double doubleobj = new Double(d);
// char data type
char e='a';
// wrapping around Character object
Character charobj=e;
// printing the values from objects
System.out.println("Values of Wrapper objects (printing as objects)");
System.out.println("Byte object byteobj: " + byteobj);
System.out.println("Integer object intobj: " + intobj);
System.out.println("Float object floatobj: " + floatobj);
System.out.println("Double object doubleobj: " + doubleobj);
System.out.println("Character object charobj: " + charobj);
// objects to data types (retrieving data types from objects)
// unwrapping objects to primitive data types
byte bv = byteobj;
int iv = intobj;
float fv = floatobj;
double dv = doubleobj;
char cv = charobj;
// printing the values from data types
System.out.println("Unwrapped values (printing as data types)");
System.out.println("byte value, bv: " + bv);
System.out.println("int value, iv: " + iv);
System.out.println("float value, fv: " + fv);
System.out.println("double value, dv: " + dv);
System.out.println("char value, cv: " + cv);
}
}
輸出:
Wrapper 對象的值(作為對象打印)
字節(jié)對象 byteobj: 1
整數(shù)對象 intobj:10
浮動對象 floatobj:18.6
雙對象doubleobj:250.5
字符對象 charobj: a
展開的值(作為數(shù)據(jù)類型打印)
字節(jié)值,bv:1
整數(shù)值,iv:10
浮點(diǎn)值,fv:18.6
雙倍值,dv:250.5
字符值,cv:a
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743