基本数据类型的包装类
List <Integer> list = new ArrayList();
01.集合中的泛型类型<int> ,不允许出现基本数据类型
02.定义了一个基本数据类型的变量,变量名能点出来东西 int num = 5; num.???? 包装类可以
03.基本和数据类型不能装换成对象,包装类可以
04.所有的包装类都是由final修饰的,不允许被继承
05.在基本数据类型需要转换成对象的时候,使用包装类
06.在jdk1.5之后,允许基本数据类型和包装类进行混合运算,底层有装箱和拆箱操作
基本数据了类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
上面的六都是数值类型!都是 extends Number inplements Comparable<T> ,Numbe类实现了Serializable 接口 ,支持序列化和反序列化
char Character
boolean Boolean
上面两种都是 implements java.io.Serializable ,Comparable<T>
比如说:
public Serializable getNum(Serializable s){
}
我们调用getNum(参数可以是8种包装类中的任何一个),返回值也可以是8种包装类的任何一个。
装箱和拆箱 =====》包装类和对应基本数据类型的转换
装箱: 把基本数据类型转换成对应的包装类 Integer num = 1;
拆箱: 把包装类转换成对应的基本数据类型 int num2 = num;
/** * 01.所有的包装类 都有将对应的基本数据类型作为参数 来构造自己的实例 */ @Test public void test01() { Byte b = new Byte((byte) 1); Short s = new Short((short) 1); Integer i = new Integer(1); Long l = new Long(1); Float f = new Float(1.0); Double d = new Double(5.2); Character c = new Character('1'); // char的数值取值范围 0-65535 Character c2 = new Character((char) 50); Boolean bo = new Boolean(true); /** * 01.Float有三种实例化的方法 参数分别是double float 和 String * 02.除了Character以外的7种包装类 都有将 String作为参数 来构建自己的实例 */ } /** * 02.除了Character以外的7种包装类 都有将 String作为参数 来构建自己的实例 * * 6中数值类型的包装类都继承了Number * 所以在用String作为参数来创建自己实例的时候, * 如果参数不能转换成数值 则抛出 NumberFormatException */ @Test public void test02() { Byte b = new Byte("1"); Short s = new Short("1"); Integer i = new Integer("1"); Long l = new Long("1"); Float f = new Float("1"); Double d = new Double("1"); // Character c = new Character("1"); 编译报错 Boolean bo = new Boolean("TRUE"); // 除了 大小写的true 返回 true 其余全部是false System.out.println(bo); } /** * 03.除了Character以外的7种包装类 都有parseXxx(String s) * * 比如说Byte b = new Byte("1"); * b.parseByte(String) * 001. 四种整型对应的包装类 都是 parseXxx(String s,int radix)radix 进制转换 * 002. 其他的四种都没有 parseXxx(String s,int radix) * 003. Character压根没有parseXxx() */ @Test public void test03() { Byte b = new Byte("1"); Short s = new Short("1"); Integer i = new Integer("1"); Long l = new Long("1"); Float f = new Float("1"); Double d = new Double("1"); Character c = new Character('1'); // 没有parseXxx Boolean bo = new Boolean("TRUE"); } /** * 04.进制转换 需要学习 位运算 */ @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)); } /** * 05.valueOf * 把基本数据类型转换成对应的包装类 ===》装箱 * 除了Character没有参数是String类型的方法 * * xxxValue 8中保证类型都有 * 把xxx类型转换成对应的基本数据类型 ===》拆箱 */ @Test public void test05() { int num = 5; Integer i = Integer.valueOf(num); // 装箱 num = i.intValue(); // 拆箱 } /** * 06.经典的面试题 * 因为Integer.valueOf() 会缓存 -128 到 127 之间的数据! * 如果我们的数字在这个区间,不会去创建新的对象,而是从缓存池中获取! * 否则就new Integer(); */ @Test 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 } @Test public void test07() { System.out.println("1" + 1 + 1);// 111 System.out.println(1 + 1 + "1" + 1);// 211 } }
posted on 2017-12-25 17:24 天天xiangshang 阅读(222) 评论(0) 编辑 收藏 举报