Java 包装类

Java 基本数据的包装类

 

基本数据类型包装类的定义:

Java在设计之初的设计原则就是:“一切皆对象”,一切的操作都要求用对象的形式进行表述。

 

class MyInt { // 一个类

         private int num ; //类包装的基本数据

         public MyInt(int num) {

                   this.num = num ;

         }

         public int intValue() { //将类包装的数据内容返回 >>> [拆包]

                   return this.num ;

         }

}

public class TestDemo {

         public static void main(String [] args) {

                   MyInt mi = new MyInt(10) ; // 将 int 包装为类

                   int temp = mi.intValue() ; // 将类对象中包装的数据取出

                   System.out.println( temp * 2 ) ;

         }

}

 

Java为了方便用户使用,专门提供了一组包装类;

基本类型:byde(Byte)   short(Short)     int(Integer)      long(Long)        float(Float)       double(Double)         char(Character)         Boolean(Boolean)

对象型包装类(Object直接子类):Character , Boolean

数值型包装类(Number直接子类):Byte ,  Short , Integer , Long , Float

Number是一个抽象类,里面一共定义了六个操作方法:

IntValue() , doubleValue() , floatValue() , longValue() , byteValue() , shortValue()

 

 

装箱与拆箱操作

····【JDK 1.5版本】

         ·装箱操作:将基本数据类型变为包装类的形式;

                   每个包装类的构造方法,都可以接收各自的数据类型的变量

         ·拆箱操作:从包装类当中取出被包装的数据;

                   利用Number类中提供的一系列: xxxValue()方法完成

public class TestDemo {

         public static void main(String [] args) {

                   Integer obj = new Integer(10) ; //将基本类型装箱

                   int temp = obj.intValue() ; // 将基本数据类型拆箱

                   System.out.println( temp * 2 ) ;

         }

}//将上一个MyInt类,变为了Integer系统包装类

 

public class TestDemo {

         public static void main(String [] args) {

                   Boolean obj = new Boolean(10) ; //将基本类型装箱

                   boolean temp = obj.Boolean() ; // 将基本数据类型拆箱

                   System.out.println( temp ) ;

         }

}// 即使不是Number子类的方法,但是也在Object中沿用了这个 装箱和拆箱的形式

 

···【JDK 1.5+版本】

         Java在1.5+后加入了自动装箱和自动拆箱的机制,并且可以直接使用包装类的对象进行数学计算。

public class TestDemo {

         public static void main(String [] args) {

                   Integer obj = 10 ; //自动装箱

                   int temp = obj ; // 自动拆箱

                   obj ++ ; // 包装类直接进行数学计算

                   System.out.println( temp * obj ) ;

         }

}//使用自动装箱、拆箱和数学计算,就省去了手工拆箱的部分

两者不同:

public class TestDemo {

         public static void main(String [] args) {

                   Integer obja = 10 ;

                   Integer objb = 10 ;

                   Integer objc = new Integer(10) ;

                   System.out.println(obja == objb) ;   // true

                   System.out.println(obja == objc) ;  // falue

                   System.out.println(objb == objc) ;   // falue

System.out.println(obja.equals(objc)) ;   // true

         }

}

~

         在使用包装类的时候,很少使用构造方法完成,几乎全部使用直接赋值(与String相同),但是在判断内容是否相等的时侯,一定要使用.equals()方法。

         Object可以接收一切的引用数据类型……

public class TestDemo {

         public static void main(String [] args) {

                   Object obj = 10 ; //先包装再转换

                   //Object不可以直接向下转型为int

                   int temp = (Integer) obj ;  //向下变为Integer后,再执行自动拆箱

                   System.out.println( temp * 2 ) ;

         }

}

基本数据类型 —— 自动装箱(成为对象) —— 向上转型为Object

 

数据类型转换(核心):

在包装类中提供将String类转换为普通数据类型的方法

·Integer类:public static int parseInt(String s)

·Double类:public static double parseDouble(String s)

·Boolean类:public static boolean  parseBoolean(String s)

~~Character类中并不存在String变为字符的方法,因为String中有一个chatAt()的方法根据索引取出字符内容。

public class TestDemo {

         public static void main(String [] args) {

                   String str = "123" ; //字符串型

                   int temp = Integer.parseInt(str) ;    //使用parseInt将str转为int型

                   System.out.println( temp * 2 ) ;

         }

}

 

posted @ 2019-05-12 10:50  Mirror王宇阳  阅读(106)  评论(0编辑  收藏  举报