JDK5.0新特性系列---1.自动装箱和拆箱

/**

 * 基本类型的数据值可以直接赋给基本数据对象,基本数据的对象也可以直接赋给基本数据变量

 * 在表达式中,基本类型的数据值可以和基本数据对象进行运算

 * 基本数据类型的数组不能实现自动装箱和拆箱,即int[]不能当成Integer[]使用

 */

/**

 * 演示基本数据类型的自动拆箱和装箱

 */

public class AutoBox {

       /**整数类型的自动拆箱和装箱*/

       public static void intAutoBox(){

              //可以装基本数字类型赋给数字对象

              //在J2SE之前,必须用iObj = new Integer(200);

              int i = 100;

              Integer iObj = 200; //将200装箱

              System.out.println("开始时: i = " + i + "; iObj = " + iObj);

             

              //将数字对象赋给基本数字类型

              //在J2SE5.0之前,必须使用i = tempObj.intValue();

              Integer tempObj = iObj;

              iObj = i;

              i = tempObj;  //将对象拆封

              System.out.println("将i与iObj的值互换后: " + "i = " + i + "; iObj = " + iObj);

             

              //在表达式内可以自动拆箱和装箱

              iObj += i + tempObj;

              i *= iObj + tempObj;

              System.out.println("i = " + i +"; iObj = " + iObj);

       }

      

       /**boolean类型的自动拆箱与装箱*/

       public static void booleanAutoBox(){

              boolean b = false;

              Boolean bObj = true; //装箱

              if(bObj){//拆箱

                     System.out.println("bObj = " + true);

              }

              if(b || bObj){

                     b = bObj; //拆箱

                     System.out.println("bObj = " + bObj +"; b = " + b);

              }

       }

      

       /**字符类型的自动拆箱与装箱*/

       public static void charAutoBox(){

              char ch = 'A';

              Character chObj = 'B';

              System.out.println("ch = " + ch + "; chObj = " + chObj);

              if(ch != chObj){ //拆箱

                     ch = chObj; //拆箱

                     System.out.println("ch = " + ch + "; chObj = " + chObj);

              }

       }

      

       public static void main(String[] args){

              intAutoBox();

              booleanAutoBox();

              charAutoBox();

              //注意,支持基本数据类型的自动拆箱和装箱,但是不支持基本类型数组的自动拆箱和装箱

              int[] is = {12,34,56};

              //Integer[] iObj = is; //error!!!

             

       }

}

 

 

 

 

时间: 2024-08-17 12:53:11

JDK5.0新特性系列---1.自动装箱和拆箱的相关文章

JDK5.0新特性系列---目录

  JDK5.0新特性系列---目录   JDK5.0新特性系列---1.自动装箱和拆箱   JDK5.0新特性系列---2.新的for循环 JDK5.0新特性系列---3.枚举类型 JDK5.0新特性系列---4.静态导入 JDK5.0新特性系列---5.可变长参数Varargs JDK5.0新特性系列---6.格式化输出 JDK5.0新特性系列---7.使用ProcessBuilder执行本地命令 JDK5.0新特性系列---8.泛型编程 JDK5.0新特性系列---9.注释功能Annota

JDK5.0新特性系列---11.6线程 BlockingQueue

  importjava.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;   /**     本例介绍一个特殊的队列:BlockingQueue,如果BlockQueue是空的,从BlockingQueue取东西的操作将会

JDK5.0新特性系列---11.3线程 锁Lock

  import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.Reent

JDK5.0新特性系列---11.1线程 Callable和Future

  import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future;   /**     从本节开始,主要介绍J2SE5.0与线程相关的新特性,新的线程类主要集中在java.util.concurrent 包中,本节实例将介绍如何使用java.uti

JDK5.0新特性系列---11.2线程 任务执行架构

  import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecu

JDK5.0新特性系列---10.监控与管理虚拟机

  import java.lang.management.ClassLoadingMXBean; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCollectorMXBean; import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.

JDK5.0新特性系列---11.5.1线程 同步装置之Semaphore

    import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock;   /**

JDK5.0新特性系列---2.新的for循环

  import java.util.ArrayList; import java.util.List;   /**  * 新的for循环,格式为for(type x:type y)  * 表示遍历数组或集合y的元素,把元素值赋给x  */ public class ForEach {        /**对整数数组求和*/        public static long getSum(int[] nums) throws Exception{               if(nums =

JDK5.0新特性系列---5.可变长参数Varargs

      /**  * 在J2SE5.0之前,当传入到方法的参数个数不固定时,经常采用数组的方式传递参数  * 在J2SE5.0之后,可以使用可变长参数的我给方法传递参数  */ /**  * 在参数类型和参数名之间使用"..."(三个英文的点),表示该参数为可变长的  * 通过新的for循环读取可变长参数中的值  * 一个方法里最多只能有一个变长参数,而且这个变长参数一定要放在参数表的最后一个参数 */ import static java.lang.System.*; publi