一:包装类的分类

  • 针对八种基本数据类型相应的引用类型—包装类
  • 有了类的特点,就可以调用类中的方法 | 基本数据类型 | 包装类 | | —- | —- | | boolean | Boolean | | byte | Character | | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double |

image.png
image.png
image.png

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

  • jdk5前的手动装箱和拆箱方式,
    • 装箱 : 基本类型->包装类型
    • 拆箱 : 包装类型-> 基本类型
    • jdk5以后 ( 含jdk5 ) 的自动装箱和拆箱方式
  • 自动装箱底层调用的是 valueOf 方法,比如 Integer.valueof ( ) :::info valueOf() 方法用于返回给定参数的原生 Number 对象值,参数可以是原生数据类型, String等。__该方法是静态方法。该方法可以接收两个参数一个是字符串,一个是基数。 :::

    该方法有三种格式: static Integer valueOf(int i) static Integer valueOf(String s) static Integer valueOf(String s, int radix)

  1. public class Test {
  2. public static void main(String[] args) {
  3. //手动装箱:int -> Integer
  4. int n1 = 11;
  5. Integer integer = new Integer(n1);
  6. Integer integer1 = Integer.valueOf(n1);
  7. //手动拆箱:Integer -> int
  8. int i = integer.intValue();
  9. }
  10. }
  1. public class Test {
  2. public static void main(String[] args) {
  3. //自动装箱:int -> Integer
  4. int Num = 10;
  5. Integer integer =Num; //底层使用的是 Integer.valueOf(n2)
  6. //自动拆箱:Integer -> int
  7. int Sum = Num; //底层仍然使用的是 intValue()方法
  8. }
  9. }

三:包装类测试题(面试题)

1:

image.png

2:经典的面试题

image.png :::info 三元运算符是一个整体 :::

四:包装类型和String类型相互转换

  1. public class Test1 {
  2. public static void main(String[] args) {
  3. //包装类(Integer) -> String
  4. Integer n = 100;
  5. //方式一;
  6. String str = n +"";
  7. //方式二:
  8. String str2 = n.toString();
  9. String str3 = Integer.toString(n);
  10. //方式三:
  11. String str4 = String.valueOf(n);
  12. //String -> 包装类(Integer)
  13. String name ="123";
  14. int s = Integer.parseInt(name);
  15. int ss = new Integer(s);
  16. }
  17. }

五:Integer 类和Character 类的常用方法

  1. public class WrapperMethod {
  2. public static void main(String[] args) {
  3. System.out.println(Integer.MIN_VALUE); //返回最小值 S
  4. ystem.out.println(Integer.MAX_VALUE);//返回最大值
  5. System.out.println(Character.isDigit('a'));//判断是不是数字
  6. System.out.println(Character.isLetter('a'));//判断是不是字母
  7. System.out.println(Character.isUpperCase('a'));//判断是不是大写
  8. System.out.println(Character.isLowerCase('a'));//判断是不是小写
  9. System.out.println(Character.isWhitespace('a'));//判断是不是空格
  10. System.out.println(Character.toUpperCase('a'));//转成大写
  11. System.out.println(Character.toLowerCase('A'));//转成小写
  12. }
  13. }

六:Intege 类面试题总结

1:

  1. public static void main(String[] args) {
  2. Integer i = new Integer(1);
  3. Integer j = new Integer(1);
  4. System.out.println(i == j);//False
  5. //1. 如果 i 在 IntegerCache.low(-128)~IntegerCache.high(127),
  6. // 就直接从数组返回
  7. //2. 如果不在 -128~127,就直接 new Integer(i)
  8. Integer m = 1; //底层 Integer.valueOf(1); -> 阅读源码
  9. Integer n = 1;//底层 Integer.valueOf(1);
  10. System.out.println(m == n); //T
  11. Integer x = 128;//底层 Integer.valueOf(1);
  12. Integer y = 128;//底层 Integer.valueOf(1);
  13. System.out.println(x == y);//False
  14. }
  15. }

:::info 需要看源码,如果数在 -128~127 中, 直接return
因为catche数组中预先设置了 -128~127 ,所有在这个范围直接return
image.png
如果不在 ,创建一个Ingeter对象 ::: image.png

2:

image.png :::info 主要有基本数据类型,判断是值是否相同 :::