day15

       因为Java是面向对象的语言,所以很多API或新特性都是针对“对象”来设计的,但是Java设计之初时,
       是C语言很盛行的时候,所以Java保留了C语言中的8种基本数据类型,保留它们有好处,速度快,计算方便,
       每一种数据类型都有固定的大小...
       如果我们的数据使用了8种基本数据类型的变量来保存,后面有想使用Java中只针对“对象”来设计的很多API或新特性时,怎么办?
       Java就为8种基本数据类型设计它们的包装类。
      只针对“对象”来设计的很多API或新特性
       例如:集合,泛型只针对引用数据类型

包装类:为了包装基本数据类型的数据为“对象”。
    byte->Byte
   short->Short
   int->Integer
   long->Long
   float->Float
   double->Double
   char->Character
   boolean->Boolean

  装箱与拆箱:
     装箱:把基本数据类型的数据“包装”为对象,称为装箱    装的目的是为了使用只针对“对象”来设计的很多API或新特性
     拆箱:把包装类的对象“拆开”为基本数据类型的数据,称为拆箱  拆的目的是为了计算简便,高效
 装箱:
     手动装箱:
     Integer i = new Integer(num);
     自动装箱
     Integer j = int的值或变量;
 拆箱:
    手动拆箱:
     int num = Integer的对象.intValue();
   自动拆箱:
     int num = Integer的对象;
    说明:不管是拆箱还是装箱都是对应类型之间的,即
    int -> Integer
    double -> Double
     ....

 数据类型的转换:
   1、基本数据类型之间的转换:自动类型转换与强制类型转换
   2、父子类之间转换:向上转型与向下转型
   3、包装类与基本数据类型之间:装箱与拆箱

基本数据类型之间的比较:
    ==  比较的是数据值

 包装类之间的比较:
    ==  比较的是地址值
    equals:推荐使用这个
    原因是包装类对象,有一部分是缓存对象,(常量对象)
      Byte:-128~127
      Short:-128~127
      Integer:-128~127
      Long:-128~127
    没有缓存对象:
      Float
      Double
      Character:0~127  最早ASCII码的范围128个字符
      Boolean:true,false

以:Integer为例
   1、常量
      Integer.MAX_VALUE
      Integer.MIN_VALUE
   2、方法
    (1)比较包装类对象的大小
             int compareTo(xx)
    (2)和String类型的转换
            A:从String的对象 -> 包装类的对象
                 "123" -> Integer
                Integer Integer.valueOf(字符串)
           B:从String的对象 -> 基本数据类型
                "123" -> 123
                 int  Integer.parseInt(字符串) 

           C:把包装类的对象->字符串
                 toString()
           D:把基本数据类型 -》字符串
                    + ""
   (3)转成各种进制的形式

posted @ 2019-09-29 21:42  zzz222zzz  阅读(185)  评论(0编辑  收藏  举报