强哥说Java--包装类

简介: 强哥说Java--包装类

前言


  • 8.26
  • 编程学习没有停止
  • 成为高级人才,编程和运维哪个都不能少
  • 都给我学!!!
  • 奥里给


目标


我们将了解到什么是包装类

为什么需要包装类

Java 提供的包装类有哪些

各种包装类的常用方法和常量介绍

什么是装箱操作以及什么是拆箱操作等内容


1. 什么是包装类


Java 有 8 种基本数据类型,Java 中的每个基本类型都被包装成了一个类,这些类被称为包装类。

包装类可以分为 3 类:NumberCharacterBoolean,包装类的架构图如下所示:


image.png


2. 为什么需要包装类


我们知道 Java 是面向对象的编程语言,但为了便于开发者上手,Java 沿用了 C 语言的基本数据类型,因此 Java 数据类型被分为了基本数据类型和引用数据类型。

对于简单的运算,开发者可以直接使用基本数据类型。但对于需要对象化交互的场景(例如将基本数据类型存入集合中),就需要将基本数据类型封装成 Java 对象,这是因为基本数据类型不具备对象的一些特征,没有对象的属性和方法,也不能使用面向对象的编程思想来组织代码。出于这个原因,包装类就产生了。

包装类就是一个类,因此它有属性、方法,可以对象化交互。


3. 基本数据类型与包装类


下表列出了基本数据类型对应的包装类。这些包装类都位于 java.lang 包下,因此使用包装类时,我们不需要手动引入。

image.png

除了 int 对应的包装类名称为 Integer 以及 char 对应的包装类名称 Character,其他 6 种数据类型对应的包装类,命名都为其基本数据类型的首字母的大写。


4. 包装类常用方法


4.1 Number 类


Number 类是所有数值类型包装类的父类,这里以其中一个子类 Integer 类为例,介绍其构造方法、常用方法以及常量。


4.1.1 构造方法


Integer 类提供两个构造方法:

  1. Integer(int value):以 int 型变量作为参数创建 Integer 对象;
  2. Integer(String s):以 String 型变量作为参数创建 Integer 对象。

实例如下:

package com.caq.exception;
public class Test2 {
    public static void main(String[] args) {
        //以int变量为参数创建对象
        Integer integer = new Integer(3);
        //以字符串类型作为参数创建对象
        Integer integer1 = new Integer("5");
    }
}


4.1.2 常用方法


  • byte byteValue():以 byte 类型返回该 Integer 的值;
  • int compareTo(Integer1 Integer2):在数值上比较两个 Integer 对象。如果这两个值相等,则返回 0;如果调用对象的数值小于 Integer2 的数值,则返回负值;如果调用对象的数值大于 Integer2的数值,则返回正值;
  • boolean equals(Object obj):比较此对象与指定对象是否相等;
  • int intValue():以 int 类型返回此 Integer 对象;
  • int shortValue():以 short 类型返回此 Integer 对象;
  • toString():返回一个表示该 Integer 值的 String 对象;
  • static Integer valueOf(String str):返回保存指定的 String 值的 Integer 对 象;
  • int parseInt(String str):返回包含在由 str 指定的字符串中的数字的等价整数值。


4.1.3 常用常量


  1. MAX_VALUE: 表示 int 型可取的最大值;
  2. MIN_VALUE: 表示 int 型可取的最小值;
  3. SIZE:表示以二进制补码形式表示 int 值的位数;
  4. TYPE: 表示基本类型 Class 实例。
package com.caq.exception;
public class Test2 {
    public static void main(String[] args) {
        int a = Integer.MAX_VALUE;
        int b = Integer.MIN_VALUE;
        int c = Integer.SIZE;
        System.out.println("int类型可取的MAX_VALUE是"+a);
        System.out.println("int类型可取的MIN_VALUE是"+b);
        System.out.println("int类型可取的二进制位数是"+c);
    }
}

运行结果:

int类型可取的MAX_VALUE是2147483647
int类型可取的MIN_VALUE是-2147483648
int类型可取的二进制位数是32


4.2 Character 类


Character 类在对象中包装一个基本类型为 char 的值。一个 Character 对象包含类型为 char 的单个字段。


4.2.1 构造方法


Character 类提供了一个构造方法:

Character(char value):很少使用。


4.2.2 常用方法


  • char charValue():返回此 Character 对象的值;
  • int compareTo(Character anotherCharacter):返回此 Character 对象的值,根据数字比较两个 Character 对象,若这两个对象相等则返回 0 ;
  • boolean equals(Object obj):将调用该方法的对象与指定的对象相比较;
  • char toUpperCase(char ch):将字符参数转换为大写;
  • char toLowerCase(char ch):将字符参数转换为小写;
  • String toString():返回一个表示指定 char 值的 String 对象;
  • char charValue():返回此 Character 对象的值;
  • boolean isUpperCase(char ch):判断指定字符是否是大写字符;
  • boolean isLowerCase(char ch):判断指定字符是否是小写字符。


4.3 Boolean 类


Boolean 类将基本类型为 boolean 的值包装在一个对象中。一个 Boolean 类型的对象只包含一个类型为 boolean 的字段。此外,此类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法。


4.3.1 构造方法


Boolean 类提供了如下两个构造方法:

  1. Boolean(boolean value):创建一个表示 value 参数的 boolean 对象(很少使用);
  2. Boolean(String s):以 String 变量作为参数,创建 boolean 对象。此时,如果传入的字符串不为 null,且忽略大小写后的内容等于 “true”,则生成 Boolean 对象值为 true,反之为 false。(很少使用)。


4.3.2 常用方法


  • boolean booleanValue():将 Boolean 对象的值以对应的 boolean 值返回;
  • boolean equals(Object obj):判断调用该方法的对象与 obj 是否相等,当且仅当参数不是 null,而且与调用该方法的对象一样都表示同一个 boolean 值的 Boolean 对象时, 才返回 true;
  • boolean parseBoolean(Sting):将字符串参数解析为 boolean 值;
  • String toString():返回表示该 boolean 值的 String 对象;
  • boolean valueOf(String s):返回一个用指定的字符串表示值的 boolean 值。


4.3.3 常用常量


  • TRUE:对应基值 true 的 Boolean 对象;
  • FALSR:对应基值 false 的 Boolean 对象;
  • TYPE:表示基本类型 Class 实例。


5. 装箱和拆箱


  1. 装箱就是基本数据类型向包装类转换;
  2. 拆箱就是包装类向基本数据类型转换。
  3. 装箱和拆箱又有自动和手动之分。

package com.caq.exception;
//java.lang包是java语言的核心,它提供了java中的基础类。
// 包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。
//lang包中的类的应用不需要手动import。
public class Test2 {
    public static void main(String[] args) {
        //自动装箱
        int num1 = 10;
        Integer num2 = num1;
        System.out.println(num2);
        //手动装箱
        Integer num3 = new Integer(10);
        System.out.println(num3);
    }
}

10
10
  • 自动装箱就是直接将一个基本数据类型的变量,赋值给对应包装类型的变量;
  • 手动装箱就是调用包装类的构造方法(不推荐这样的操作)

拆箱

package com.caq.exception;
//java.lang包是java语言的核心,它提供了java中的基础类。
// 包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。
//lang包中的类的应用不需要手动import。
public class Test2 {
    public static void main(String[] args) {
        //自动插箱
        Integer num1 = 20;
        int num2 = num1;
        System.out.println(num2);
        //手动拆箱
        int num3 = num1.intValue();
        System.out.println(num3);
    }
}

20
20

手动拆箱通过调用对应包装类下的 xxxValue() 方法来实现。


6. 小结


  1. 包装类就是将基本数据类型包装成的类,它有属性、方法,可以对象化交互。
  2. 除了 int 对应的包装类名称为 Integer 以及 char 对应的包装类名称 Character,其他 6 种数据类型对应的包装类,命名都为其基本数据类型的首字母的大写。
  3. 装箱就是基本数据类型向包装类转换,拆箱就是包装类向基本数据类型转换。

相关文章
|
6月前
|
JavaScript Java 编译器
Java包装类和泛型的知识点详解
Java包装类和泛型的知识点的深度理解
|
17天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
41 4
|
2月前
|
Java 编译器 容器
Java——包装类和泛型
包装类是Java中一种特殊类,用于将基本数据类型(如 `int`、`double`、`char` 等)封装成对象。这样做可以利用对象的特性和方法。Java 提供了八种基本数据类型的包装类:`Integer` (`int`)、`Double` (`double`)、`Byte` (`byte`)、`Short` (`short`)、`Long` (`long`)、`Float` (`float`)、`Character` (`char`) 和 `Boolean` (`boolean`)。包装类可以通过 `valueOf()` 方法或自动装箱/拆箱机制创建。
37 9
Java——包装类和泛型
|
1月前
|
Java
【Java】什么是泛型?什么是包装类
【Java】什么是泛型?什么是包装类
18 0
|
3月前
|
Java 程序员
【Java基础面试八】、为啥要有包装类?
这篇文章解释了Java中存在包装类的原因:为了让基本数据类型具备对象的特性,使得它们可以被用作对象,以符合Java"一切皆对象"的设计理念,并简化将基本数据类型作为Object类型参数传递的问题。
【Java基础面试八】、为啥要有包装类?
|
2月前
|
存储 Java 测试技术
Java零基础教学(10):包装类
【9月更文挑战第1天】Java零基础教学篇,手把手实践教学!
43 1
|
3月前
|
前端开发 Java
【前端学java】java中的包装类(12)
【8月更文挑战第10天】java中的包装类
23 1
|
3月前
|
存储 Java 测试技术
Java零基础(11) - 包装类详解
【8月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
51 1
|
3月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
37 5
|
4月前
|
存储 Java 测试技术
day18:Java零基础 - 包装类
【7月更文挑战第18天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
40 9
下一篇
无影云桌面