包装类

作者: Yanl__ | 来源:发表于2019-12-04 14:10 被阅读0次

    介绍

    我们经常用到的基本数据类型就不是对象。但是我们在实际应用中经常需要将基本数据转化成对象,以便于操作。比如:将基本数据类型存储到Object[]数组或集合中的操作等等。
    为了解决这个不足,Java在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

    WrapperClass.png
    public class WrapperClass {
    
        public static void main(String[] args) {
            Integer i = new Integer(10);
            Integer j = new Integer(50);
            System.out.println(i);
            int k = 10;
            System.out.println(k);
        }
    }
    

    注意事项⚠️:
    1.除了Character和Boolean以外,其他的类都是“数字型”,“数字型”都是java.lang.Number的子类。Number类是抽象类,因此它的抽象方法,所有子类都需要提供实现。Number类提供了抽象方法:intValue()、longValue()、floatValue()、doubleValue(),意味着所有的“数字型”包装类都可以互相转型。

    用途

    1. 作为和基本数据类型对应的类型存在,方便涉及到对象的操作,如Object[]、集合等的操作。
    2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本数据类型、包装类对象、字符串之间提供相互之间的转化!)。
    public class TestInteger {
        void testInteger(){
            // 基本类型转化称Integer对象 的两种方式
            Integer int1 = new Integer(10);
            Integer int2 = Integer.valueOf(20);
            // Integer对象转化称int
            int a = int1.intValue();
            System.out.println(a);
            // 字符串转化成Integer对象
            Integer int3 = Integer.parseInt("334");
            Integer int4 = new Integer("335");
            // Integer对象转化成字符串
            String str1 = int3.toString();
            // 一些常见的int类型相关的常量
            System.out.println("int能表示的最大整数:"+Integer.MAX_VALUE);
            System.out.println("int能表示的最小整数:"+Integer.MIN_VALUE);
    
    
        }
    
        public static void main(String[] args) {
            TestInteger test = new TestInteger();
            test.testInteger();
        }
    }
    

    自动装箱/自动拆箱

    JDK1.5以后才有的功能,编译器在编译时自动帮我们做的

    1. 自动装箱
      自动装箱过程是通过调用包装类的valueOf()方法实现的
    2. 自动拆箱
      与装箱同理,帮我们调用intValue 或者其他xxxValue()方法(xxx代表对应的基本数据类型,如intValue()、doubleValue()等)
    public class TestAutoboxing {
        public static void main(String[] args) {
            // 自动装箱
            // 相当于编译器自动帮我们执行了valuesOf方法
            Integer i = 5;
            System.out.println(i);
            Integer j = Integer.valueOf(6);
            System.out.println(j);
    
            // 自动拆箱
            int k = i;
            System.out.println(k);
            int l = j.intValue();
            System.out.println(l);
        }
    }
    
    

    包装类的缓存

    包装类在自动装箱时为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值的比较,而是使用equals方法

    相关文章

      网友评论

          本文标题:包装类

          本文链接:https://www.haomeiwen.com/subject/pnwkgctx.html