目录

什么是包装类?

 为什么提供包装类?

包装类的用法

自动装箱

自动拆箱

包装类特点

Integer和int的区别

如何比较相等(equals和==的区别)

什么是包装类?

包装类其实就是8种基本数据类型对应的引用类型。

java respon包装 java包装项目_jvm

 为什么提供包装类?

1、Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型。

基本类型的数值不是对象,不能调用对象的toString()、hashCode()、getClass()、equals()等方法。所以Java提供了针对每种基本类型的包装类型。

2、集合和泛型其实也只能支持包装类型,不支持基本数据类型。

包装类的用法

自动装箱

自动装箱:把基本类型用它们对于的引用类型包装起来。

如:

Integer  a=5;

这就是自动装箱,自动装箱是编译期底层调用了Integer.valueOf()这个方法。

Integer  a=5    👉   Integer  a=Integer.valueOf(5);

自动拆箱

自动拆箱:包装类型的变量可以直接赋值给基本数据类型的变量。

拆箱:跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。

如:

int b=a;//    底层是 int b=a.intValue

编译器底层会调用变量名.intValue()方法返回该Integer对象的int值

注意:自动装箱和拆箱是由编译器来完成的,编译器会在编译期根据语法决定是否进行装箱和拆箱动作。

包装类特点

包装类的变量的默认值可以是null,容错率更高。

Integer和int的区别

1、integer是int的包装类,int是Java的一种基本数据结构

2、integer变量必须实例化后才能使用,int变量不需要

3、integer实际是对象的引用,int是直接存储数据值

4、integer的默认值是null,int的默认值是0

如何比较相等(equals和==的区别)

如何比较相等,首先要明白equals和==的区别。

Equals通常用来比较两个对象的内容是否相等,

==用来比较两个对象的地址是否相等,

Object类中的equals方法定义为判断两个对象的地址是否相等(可以理解成是否是同一个对象),地址相等则认为是对象相等。这也就意味着,我们新建的所有类如果没有复写equals方法,那么判断两个对象是否相等时就等同于“==”,也就是两个对象的地址是否相等。但在我们的实际开发中,通常会认为两个对象的内容相等时,则两个对象相等,equals返回true。对象内容不同,则返回false。

所以可以总结为两种情况:

1、类未复写equals方法,则使用equals方法比较两个对象时,相当于==比较,即两个对象的地址是否相等。地址相等,返回true,地址不相等,返回false。

2、类复写equals方法,比较两个对象时,则走复写之后的判断方式。通常,我们会将equals复写成:当两个对象内容相同时,则equals返回true,内容不同时,返回false。