1、包装类

包装类 Wrapper

  1. 针对八种基本数据类型相应的引用类型——包装类

  2. 后六个父类是 Number

    基本数据类型 包装类
    boolean Boolean
    char Character
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double
  3. 包装类和基本数据的转换

    //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()方法
    
  4. 练习

    Object obj1 = true ? new Integer(1) : new Double(2.0); //三元运算符是一个整体
    System.out.println(obj1);
    
    /*
    	运行结果:
    		1.0
    */
    
  5. 包装类型和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); //构造器
    
  6. 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')); //转成大写
    
  7. 面试题

    		//这里主要是看范围 -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
    
posted @ 2022-09-17 22:53  花er公子  阅读(20)  评论(0编辑  收藏  举报