包装类

一、简介

针对八种基本数据类型相应的引用类型

基本数据类型 包装类
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
上面几个父类都是Number

111.jpg
22.jpg
33.jpg

二、包装类和基本数据的转换

例:int和Integer

装箱:基本数据类型->包装类型

拆箱:包装类型->基本数据类型

jdk5以前手动装箱和拆箱

jdk5以后自动装箱和拆箱

  1. public class Integer01 {
  2. public static void main(String[] args) {
  3. //jdk5以前手动
  4. //手动装箱
  5. int n1 = 100;
  6. Integer integer = new Integer(n1);
  7. Integer integer1 = Integer.valueOf(n1);
  8. //手动拆箱
  9. int i = integer.intValue();
  10. //jdk5后,自动装箱拆箱
  11. int n2 = 200;
  12. Integer integer2 = n2; // 底层Integer.valueOf(n2)
  13. int n3 = integer2; //底层integer.intValue();
  14. }
  15. }

三、包装类型和String类型的相互转换

例:Integer和String转换

  1. public class WrapperVSString {
  2. public static void main(String[] args) {
  3. //包装类——>String
  4. Integer i = 100;
  5. //方式1
  6. String str1 = i + "";
  7. //方式2
  8. String str2 = i.toString();
  9. //方式3
  10. String str3 = String.valueOf(i);
  11. //String -> 包装类(Integer)
  12. String str4 = "123456";
  13. Integer i1 = Integer.parseInt(str4);//使用到自动装箱
  14. Integer integer = new Integer(str4);//构造器
  15. }
  16. }

四、包装类的常用方法

Integer类和Character类的常用方法

  1. System.out.println(Integer.MIN_VALUE);//返回最小值
  2. System.out.println(Integer.MAX_VALUE);//返回最大值
  3. System.out.println(Character.isDigit('a'));//判断是不是数字
  4. System.out.println(Character.isLetter('a'));//判断是不是字母
  5. System.out.println(Character.isUpperCase('a'));//判断是不是大写
  6. System.out.println(Character.isLowerCase('a'));//判断是不是小写
  7. System.out.println(Character.isWhitespace('a'));//判断是不是空格
  8. System.out.println(Character.toUpperCase('a'));//转成大写
  9. System.out.println(Character.toLowerCase('A'));//转成小写

五、Integer创建机制

  1. public class WrapperExercise02 {
  2. public static void main(String[] args) {
  3. // 如果i在IntegerCache.low(-128)~IntegerCache.high(127),之直接从数组返回
  4. // 不在-128~127,直接new Integer(i)
  5. /*
  6. 源码
  7. public static Integer valueOf(int i) {
  8. if (i >= IntegerCache.low && i <= IntegerCache.high)
  9. return IntegerCache.cache[i + (-IntegerCache.low)];
  10. return new Integer(i);
  11. }
  12. */
  13. Integer m = 1;
  14. Integer n = 1;
  15. System.out.println(m == n); // true 在范围内,直接返回
  16. Integer x = 128;
  17. Integer y = 128;
  18. System.out.println(x == y); // false 不在范围内,new
  19. Integer i1 = new Integer(127);
  20. Integer i2 = new Integer(127);
  21. System.out.println(i1 == i2); // false new的对象,不相等
  22. Integer i11 = 127;
  23. int i12 = 127;
  24. // 只有有基本数据类型,判断的是值是否相同
  25. System.out.println(i11 == i12); // true
  26. Integer i13 = 128;
  27. int i14 = 128;
  28. System.out.println(i13 == i14); // true
  29. }
  30. }