目录一. Java中的八种基本数据类型是哪八种二. 什么是包装类三. 包装类的常见用法四. 包装类的缓存值五. 自动装箱和自动拆箱一. Java中的八种基本数据类型是哪八种答在Java中数据类型主要分为基本数据类型和引用数据类型用下面这幅图大家就可以非常清楚这里我在顺便把基本数据类型的大小也给展示出来在这里需要补充一点关于 float 和 doublefloat 是单精度浮点数而 double 是双精度浮点数所以 double 比 float 更加精确。float 为了和 double 做区分通常会在声明变量的时候在末尾加上小写的 ‘ f ’ 。二. 什么是包装类我们知道Java是一个面向对象编程的语言但是 Java 中的八种基本数据类型不能作为对象来使用为了解决这个不足之处同时也为了使用的方便我们就为这八种基本数据类型分别设计了对应的类进行代表这八种基本数据类型对应的类就被我们称为是包装类。八种基本数据类型对应的包装类列举出来如下boolean -- Booleanchar -- Character;byte -- Byte;short -- Short;long -- Long;int -- Integer;float -- Float;double -- Double;三. 包装类的常见用法第一对基本数据类型进行包装之后我们就可以把它看成是一个对象方便我们涉及到对象的操作。例如 int 型的数字无法变为 String 类型但如果我们将 int 包装成对象 Integer 类型就可以调用 toString 方法转换成字符串类型第二包装类每种基本数据类型的相关属性如最大值最小值等以及相关的操作方法。四. 包装类的缓存值我们先看下图运行上面的代码得出结果我们可以在控制台得到 num1num2 为 false而 num3num4 为 true。这是为什么呢明明它们的值都是相等的啊为什么一个为 true 一个为 false 这里就要说到包装类的缓存了。Integer 包装类对象是有缓存的缓存范围是 -127~128 之间。所以当我们进行比较的数字在 -127~128 之间时我们实际上是直接从缓存中获取已有的对象并不会去创建新的对象。因为 200 并不在-127~128之间所以在比较 num1 和 num2 时底层会创建 num1 和 num2 两个对象而 判断的是对象在内存中的地址num1和num2为两个对象所以内存地址也不相同故判断结果自然不相同所以为false。而100在-127~128之间所以 num3 和 num4 都会引用缓存中已经存在的100地址值不会创建新的对象结果为true。在八个包装类中float 和 double 是没有缓存值的其余六个均有缓存值我们可以简单记一下。五. 自动装箱和自动拆箱自动装箱将基本数据类型封装为Java对象类型来符合我们Java面向对象的思想。自动拆箱将Java对象重新转化为基本数据类型。在jdk 1.5之后就引入了自动拆箱的语法也就是基本数据类型和包装类型进行转换的时候系统将自动进行这样也大大的方便了程序员的书写。如下图所示可以看到我们定义了一个String 类型的字符串由于我们将num1封装成了一个对象所以我们就可以调用它的toString方法可以看到打印出来的结果为200但其实是一个字符串200再看下面我们直接定义一个int类型的a来接收Integer类型的num1的值仍然可以正常打印输出就是因为自动拆箱的缘故将对象类型的num1转换成了int类型又赋值给了a。
Java中包装类有什么用?
目录一. Java中的八种基本数据类型是哪八种二. 什么是包装类三. 包装类的常见用法四. 包装类的缓存值五. 自动装箱和自动拆箱一. Java中的八种基本数据类型是哪八种答在Java中数据类型主要分为基本数据类型和引用数据类型用下面这幅图大家就可以非常清楚这里我在顺便把基本数据类型的大小也给展示出来在这里需要补充一点关于 float 和 doublefloat 是单精度浮点数而 double 是双精度浮点数所以 double 比 float 更加精确。float 为了和 double 做区分通常会在声明变量的时候在末尾加上小写的 ‘ f ’ 。二. 什么是包装类我们知道Java是一个面向对象编程的语言但是 Java 中的八种基本数据类型不能作为对象来使用为了解决这个不足之处同时也为了使用的方便我们就为这八种基本数据类型分别设计了对应的类进行代表这八种基本数据类型对应的类就被我们称为是包装类。八种基本数据类型对应的包装类列举出来如下boolean -- Booleanchar -- Character;byte -- Byte;short -- Short;long -- Long;int -- Integer;float -- Float;double -- Double;三. 包装类的常见用法第一对基本数据类型进行包装之后我们就可以把它看成是一个对象方便我们涉及到对象的操作。例如 int 型的数字无法变为 String 类型但如果我们将 int 包装成对象 Integer 类型就可以调用 toString 方法转换成字符串类型第二包装类每种基本数据类型的相关属性如最大值最小值等以及相关的操作方法。四. 包装类的缓存值我们先看下图运行上面的代码得出结果我们可以在控制台得到 num1num2 为 false而 num3num4 为 true。这是为什么呢明明它们的值都是相等的啊为什么一个为 true 一个为 false 这里就要说到包装类的缓存了。Integer 包装类对象是有缓存的缓存范围是 -127~128 之间。所以当我们进行比较的数字在 -127~128 之间时我们实际上是直接从缓存中获取已有的对象并不会去创建新的对象。因为 200 并不在-127~128之间所以在比较 num1 和 num2 时底层会创建 num1 和 num2 两个对象而 判断的是对象在内存中的地址num1和num2为两个对象所以内存地址也不相同故判断结果自然不相同所以为false。而100在-127~128之间所以 num3 和 num4 都会引用缓存中已经存在的100地址值不会创建新的对象结果为true。在八个包装类中float 和 double 是没有缓存值的其余六个均有缓存值我们可以简单记一下。五. 自动装箱和自动拆箱自动装箱将基本数据类型封装为Java对象类型来符合我们Java面向对象的思想。自动拆箱将Java对象重新转化为基本数据类型。在jdk 1.5之后就引入了自动拆箱的语法也就是基本数据类型和包装类型进行转换的时候系统将自动进行这样也大大的方便了程序员的书写。如下图所示可以看到我们定义了一个String 类型的字符串由于我们将num1封装成了一个对象所以我们就可以调用它的toString方法可以看到打印出来的结果为200但其实是一个字符串200再看下面我们直接定义一个int类型的a来接收Integer类型的num1的值仍然可以正常打印输出就是因为自动拆箱的缘故将对象类型的num1转换成了int类型又赋值给了a。