1、包装类
包装类 Wrapper
-
针对八种基本数据类型相应的引用类型——包装类
-
后六个父类是 Number
基本数据类型 包装类 boolean Boolean char Character byte Byte short Short int Integer long Long float Float double Double -
包装类和基本数据的转换
//jdk5以前是手动装箱和拆箱 //手动装箱 int -> Integer int n1 = 100; Integer integer = new Integer(n1); Integer integer1 = Integer.valueOf(n1); //手动拆箱 Integer -> int int i = integer.intValue(); //jdk5以后,就可以自动装箱和自动拆箱 int n2 = 100; //自动装箱 int -> Integer Integer integer2 = n2; //底层使用的是 Integer.valueOf(n2) //自动拆箱 Integer -> int int n3 = integer2; //底层仍然使用的是 intValue()方法
-
练习
Object obj1 = true ? new Integer(1) : new Double(2.0); //三元运算符是一个整体 System.out.println(obj1); /* 运行结果: 1.0 */
-
包装类型和String类型的相互转换
//包装类(Integer) -> String Integer i = 100;//自动装箱 //方式1 String str1 = i + ""; //方式2 String str2 = i.toString(); //方式3 String str3 = String.valueOf(i); //String -> 包装类(Integer) String str4 = "1234"; Integer i2 = Integer.parseInt(str4); //使用到自动装箱 Integer i3 = new Integer(str4); //构造器
-
Integer类和Character类的常用方法
System.out.println(Integer.MIN_VALUE); //返回最小值 System.out.println(Integer.MAX_VALUE); //返回最大值 System.out.println(Character.isDigit('a')); //判断是不是数字 System.out.println(Character.isLetter('a')); //判断是不是字母 System.out.println(Character.isUpperCase('a')); //判断是不是大写 System.out.println(Character.isLowerCase('a')); //判断是不是小写 System.out.println(Character.isWhitespace('a')); //判断是不是空格 System.out.println(Character.toUpperCase('a')); //转成大写 System.out.println(Character.toLowerCase('A')); //转成大写
-
面试题
//这里主要是看范围 -128 ~ 127 就是直接返回,否则就 new Integer(i) Integer m = 1; //底层Integer.valueOf(1) Integer n = 1; //底层Integer.valueOf(1) System.out.println(m == n); //true Integer x = 128; Integer y = 128; System.out.println(x == y); //false /* //1. 如果 i 在 IntegerCache.low(-128) ~ IntegerCache.high(127),就直接从数组返回 //2. 如果不在 -128 ~ 127,就直接 new Integer(i) public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } */ //只要有基本数据类型,判断的是值是否相同 Integer i11 = 127; int i12 = 127; System.out.println(i11 == i12); //true