将原始数据类型自动转换为其等效的包装器类型的操作称为装箱, 而相反的操作称为拆箱。这是Java5的新功能。因此, java程序员无需编写转换代码。
自动装箱和拆箱的优势
不需要手动在原语和包装器之间进行转换, 因此需要的编码量更少。 |
Java自动装箱的简单示例:
class BoxingExample1{
public static void main(String args[]){
int a=50;
Integer a2=new Integer(a);//Boxing
Integer a3=5;//Boxing
System.out.println(a2+" "+a3);
}
}
立即测试
Output:50 5
Java中取消装箱的简单示例:
包装器类类型自动转换为相应的原始类型, 称为拆箱。让我们看一下拆箱的例子:
class UnboxingExample1{
public static void main(String args[]){
Integer i=new Integer(50);
int a=i;
System.out.println(a);
}
}
立即测试
输出:
50
使用比较运算符自动装箱和拆箱
可以使用比较运算符执行自动装箱。让我们看一下使用比较运算符进行装箱的示例: |
class UnboxingExample2{
public static void main(String args[]){
Integer i=new Integer(50);
if(i<100){ //unboxing internally
System.out.println(i);
}
}
}
立即测试
Output:50
具有方法重载的自动装箱和拆箱
在方法重载中, 可以执行装箱和拆箱。对于拳击方法重载, 有一些规则:扩展节拍拳击扩展节拍varargs拳击节拍varargs |
1)自动装箱示例, 其中加宽击败拳击
如果有加宽和拳击的可能性, 加宽会击败拳击。 |
class Boxing1{
static void m(int i){System.out.println("int");}
static void m(Integer i){System.out.println("Integer");}
public static void main(String args[]){
short s=30;
m(s);
}
}
立即测试
Output:int
2)自动装箱示例, 变宽击败可变参数
如果有可能扩大和varargs, 扩大击败var-args。 |
class Boxing2{
static void m(int i, int i2){System.out.println("int int");}
static void m(Integer... i){System.out.println("Integer...");}
public static void main(String args[]){
short s1=30, s2=40;
m(s1, s2);
}
}
立即测试
Output:int int
3)自动拳击的例子, 其中拳击胜过可变参数
让我们看一下拳击胜过可变参数的程序: |
class Boxing3{
static void m(Integer i){System.out.println("Integer");}
static void m(Integer... i){System.out.println("Integer...");}
public static void main(String args[]){
int a=30;
m(a);
}
}
立即测试
Output:Integer
方法重载与加宽和装箱
不能按照以下说明进行加宽和装箱: |
class Boxing4{
static void m(Long l){System.out.println("Long");}
public static void main(String args[]){
int a=30;
m(a);
}
}
立即测试
Output:Compile Time Error
评论前必须登录!
注册