zoukankan      html  css  js  c++  java
  • 基本数据类型的包装类

    基本数据类型的包装类

    一:使用规范和特性
      01.集合中的泛型类型<T> 不允许出现基本数据类型
      02.定义了一个基本数据类型的变量,变量名不能点出来东西, 包装类可以
      03.基本数据类型不能转换成对象, 包装类可以
      04.所有的包装类都是由final修饰的, 不允许被继承
      05.在基本数据类型需要转换成对象的时候 使用包装类
      06.jdk1.5以后,允许基本数据类型和包装类进行混合运算,底层有装箱和拆箱操作

      基本数据类型   包装类
        byte      Byte
        short     Short
        int      Integer
        long      Long
        float      Float
        double       Double
      上面的六种都是数值类型!都是 extends Number implements Comparable<T>
      Number抽象类:
        public abstract class Number implements java.io.Serializable 支持 序列化

      基本数据类型   包装类
         char      Character
       boolean     Boolean
      上面两种都是 implements java.io.Serializable, Comparable<T>

    二:自动装箱,拆箱的机制
       装箱和拆箱 ===》包装类和对应基本数据类型的转换
       装箱: 把基本数据类型转换成对应的包装类 Integer num=1;
       拆箱: 把包装类转换成对应的基本数据类型 int num2=num;

     1 /**
     2      * 01.所有的包装类 都有将对应的基本数据类型作为参数 来构造自己的实例
     3      * 02.除了Character以外的7种包装类 都有将  String作为参数 来构建自己的实例
     4      * 6种数值类型的包装类都继承了Number
     5      * 所以在用String作为参数来创建自己实例的时候,
     6      * 如果参数不能转换成数值 则抛出 NumberFormatException
     7      */
     8     public void test01() {
     9         //基本数据类型创建对象
    10         Byte b = new Byte((byte) 1);//类型强制转换
    11         Short s = new Short((short) 1);//类型强制转换
    12         Integer i = new Integer(1);
    13         Long l = new Long(1);
    14 
    15         //Float有三种实例化的方法  参数分别是double   float  和 String
    16         Float f = new Float(1.0);
    17         Double d = new Double(5.2);
    18 
    19         Character c = new Character('1'); 
    20         Character c2 = new Character((char) 50);// char的数值取值范围  0-65535
    21         Boolean bo = new Boolean(true);
    22         
    23     }
     1 /**
     2      * 03.除了Character以外的7种包装类 都有parseXxx(String s),
     3      *      用于将字符串封装成相应的包装类,该方法是静态方法。 
     4      *      001. 四种整型对应的包装类 都是 parseXxx(String s,int radix)//radix 进制转换
     5      *      002. 其他的四种都没有 parseXxx(String s,int radix)
     6      *      003. Character压根没有parseXxx()
     7      */
     8  9     public void test03() {
    10         Byte b = new Byte("1");
    11         Short s = new Short("1");
    12         Integer i = new Integer("1");
    13         Long l = new Long("1");
    15         Float f = new Float("1");
    16         Double d = new Double("1");
    17         Character c = new Character('1'); // 没有parseXxx
    18         Boolean bo = new Boolean("TRUE");
    19     }

      装箱和拆箱的操作:

     1 /**
     2      * 04.      valueOf()===》装箱
     3      *      把基本数据类型转换成对应的包装类  
     4      *      除了Character没有参数是String类型的方法
     5      *       xxxValue()方法===》拆箱 
     6      *      把xxx类型转换成对应的基本数据类型  
     7      */
     8     public void test05() {
     9         int num = 5;
    10         Integer i = Integer.valueOf(num); // 装箱
    11         num = i.intValue(); // 拆箱
    12     }        

      进制转换:

    /**
         * 05.进制转换  需要学习 位运算
         */
        @Test
        public void test04() {
            System.out.println("2进制的10对应的数据===》" + Integer.toBinaryString(10));
            System.out.println("8进制的10对应的数据===》" + Integer.toOctalString(10));
            System.out.println("16进制的10对应的数据===》" + Integer.toHexString(10));
        }

      面试题:

    /**
         * 经典的面试题
         *  因为Integer.valueOf() 会缓存  -128 到  127 之间的数据!
         *  如果我们的数字在这个区间,不会去创建新的对象,而是从缓存池中获取!
         *  否则就new  Integer();
         */
        public void test06() {
            int num1 = 127;
            int num2 = 127;
            System.out.println(num1 == num2); // true
            Integer a1 = new Integer(127);
            Integer b1 = new Integer(127);
            System.out.println(a1 == b1);// false
            Integer a = 127;
            Integer b = 127;
            System.out.println(a == b);// true
            Integer c = 128;
            Integer d = 128;
            System.out.println(c == d); // false
        }
        public void test07() {
            System.out.println("1" + 1 + 1);// 111
            System.out.println(1 + 1 + "1" + 1);// 211
        }
  • 相关阅读:
    iOS适配 旧项目工程在iOS9下不能正常显示
    字典的操作
    均摊时间复杂度
    C++基础
    机器学习入门学习线路
    C\C++对文件的读写操作
    python 函数基础
    关于string的练习题目
    C++之STL之string
    C++STL库之set的用法
  • 原文地址:https://www.cnblogs.com/ak666/p/8109110.html
Copyright © 2011-2022 走看看