个性化阅读
专注于IT技术分析

Java自动装箱和拆箱

将原始数据类型自动转换为其等效的包装器类型的操作称为装箱, 而相反的操作称为拆箱。这是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
赞(0)
未经允许不得转载:srcmini » Java自动装箱和拆箱

评论 抢沙发

评论前必须登录!