Java 八大包装类(超详细!)

article/2025/8/19 1:43:16

一、8种基本数据类型对应的包装类型名

基本数据类型包装类型
bytejava.lang.Byte(父类Number)
shortjava.lang.Short(父类Number)
intjava.lang.Integer(父类Number)
longjava.lang.Long(父类Number)
floatjava.lang.Float(父类Number)
doublejava.lang.Double(父类Number)
booleanjava.lang.Boolean(父类Object)
charjava.lang.Character(父类Object)

注意: 8种包装类属于 引用数据类型

二、父类Number方法

方法名作用
byte byteValue()byte 形式返回指定的数值
abstract double doubleValue()double 形式返回指定的数值
abstract float floatValue()float 形式返回指定的数值
abstract int intValue()int形式返回指定的数值
abstract long longValue()long形式返回指定的数值
short shortValue()short形式返回指定的数值

注意: 这些方法所有的数字包装类的子类都有,这些方法是负责 拆箱 的。

三、手动装箱/手动拆箱

public class IntegerTest02 {public static void main(String[] args) {// 123这个基本数据类型,进行构造方法的包装达到了:基本数据类型向引用数据类型的转换。// 基本数据类型 -(转换为)->引用数据类型(装箱)Integer i = new Integer(123);// 将引用数据类型--(转换为)-> 基本数据类型float f = i.floatValue();System.out.println(f); //123.0// 将引用数据类型--(转换为)-> 基本数据类型(拆箱)int retValue = i.intValue();System.out.println(retValue); //123}
}

四、构造方法(Java9后过时)

Integer构造方法名
Integer(int value)
Integer(String s)

注意:

  • Byte、Short、Long、Float、Double、Boolean的构造方法和Integer的构造方法一样。
  • Character只有一个构造方法
Character构造方法名
Character(char value)

注意: Float比Integer多一个

Float构造方法名
Float(double value)

eg.

public class IntegerTest03 {public static void main(String[] args) {// Java9之后不建议使用这个构造方法了。出现横线表示已过时。// 将数字100转换成Integer包装类型(int --> Integer)Integer x = new Integer(100);System.out.println(x);// 将String类型的数字,转换成Integer包装类型。(String --> Integer)Integer y = new Integer("123");System.out.println(y);// double -->DoubleDouble d = new Double(1.23);System.out.println(d);// String --> DoubleDouble e = new Double("3.14");System.out.println(e);}
}

五、包装类常量

常量属性
MAX_VALUE
MIN_VALUE

注意: Byte、Short、Integer、Long、Float、Double都有。

eg.

public class IntegerTest04 {public static void main(String[] args) {// 通过访问包装类的常量,来获取最大值和最小值System.out.println("int的最大值:" + Integer.MAX_VALUE);System.out.println("int的最小值:" + Integer.MIN_VALUE);System.out.println("byte的最大值:" + Byte.MAX_VALUE);System.out.println("byte的最小值:" + Byte.MIN_VALUE);}
}

六、自动装箱/自动拆箱(java5新特性)

1.什么是自动装箱和自动拆箱?

  • 自动装箱:基本数据类型自动转换成包装类
  • 自动拆箱:包装类自动转换成基本数据类型

2.自动装箱和自动拆箱的好处?

  • 方便编程
  • 有了自动拆箱之后,Number类中的方法就用不着了

eg.

public class IntegerTest05 {public static void main(String[] args) {// 900是基本数据类型// x是包装类型// 基本数据类型 --(自动转换)--> 包装类型:自动装箱Integer x = 900; // 等同于:Integer z = new Integer(900);System.out.println(x);// x是包装类型// y是基本数据类型// 包装类型 --(自动转换)--> 基本数据类型:自动拆箱int y = x;System.out.println(y);}
}

注意:自动装箱底层实际上还是new对象了。

public class IntegerTest05 {public static void main(String[] args) {// z是一个引用,z是一个变量,z还是保存了一个对象的内存地址。Integer z = 1000; // 等同于:Integer z = new Integer(1000);// 分析为什么这个没有报错呢?// +两边要求是基本数据类型的数字,z是包装类,不属于基本数据类型,这里会进行自动拆箱。将z转换成基本数据类型// 在java5之前你这样写肯定编译器报错。System.out.println(z + 1);//1001Integer a = 1000; // Integer a = new Integer(1000); a是个引用,保存内存地址指向对象。Integer b = 1000; // Integer b = new Integer(1000); b是个引用,保存内存地址指向对象。System.out.println(a == b); //false}
}

注意:

  • == 这个运算符不会触发自动拆箱机制
  • == 永远判断的都是两个对象的内存地址是否相同。
  • 只有 + - * / 等运算的时候才会触发自动拆箱机制

七、(方法区)整数型常量池

public class IntegerTest06 {public static void main(String[] args) {Integer a = 128;Integer b = 128;System.out.println(a == b); //false//原理:x变量中保存的对象的内存地址和y变量中保存的对象的内存地址是一样的。Integer x = 127;Integer y = 127;// == 永远判断的都是两个对象的内存地址是否相同。System.out.println(x == y); //true}
}

java中为了提高程序的执行效率,将 [-128 ~ 127] 之间所有的包装对象提前创建好, 放到了一个方法区的“整数型常量池”当中了。

目的是:只要用这个区间的数据不需要再new了,直接从整数型常量池当中取出来。

在这里插入图片描述

八、Integer方法

方法名作用
static Integer decode(String nm)将String转成Integer
static int compare(int x, int y)比较两个数是否相等;相等返回0;前大后小返回1;后大前小返回-1
static int signum(int i)符号函数;负数返回-1;正数返回1;0返回0
static String toBinaryString(int i)将i转成二进制
static String toHexString(int i)将i转成十六进制
static String toOctalString(int i )将i转成八进制
常用方法
static int parseInt(String s)字符串转int
static Integer valueOf(String s)字符串转Integer
String toString()Integer转String
boolean equals(Object obj)判断两个Integer是否相等

注意: Byte、Short、Long、Float、Double、Boolean照葫芦画瓢,方法差不多相同。

eg.

class IntegerTest{public static void main(String[] args) {Integer d = Integer.decode("123");System.out.println(d);//自动拆箱 123Integer a = 100;Integer b = 100;int res1 = Integer.compare(a, b);System.out.println(res1);//0res1 = Integer.compare(-a, b);System.out.println(res1);//-1res1 = Integer.compare(a, -b);System.out.println(res1);//1System.out.println(a.equals(b));//trueint i = Integer.parseInt("123");System.out.println(i);//123System.out.println(Integer.signum(-123));//-1System.out.println(Integer.signum(123));//1System.out.println(Integer.signum(0));//0System.out.println(Integer.toBinaryString(10));//1010System.out.println(Integer.toOctalString(10));//12System.out.println(Integer.toHexString(10));//aString s = Integer.toString(123);System.out.println(s);//123Integer int1 = Integer.valueOf("123");System.out.println(int1);//123}
}

九、Character方法

方法名作用
char charValue()将Character转成char
int compareTo(Character anotherCharacter)判断两个Character是否相等;相等返回0;前大后小返回1;后大前小返回-1
常用方法
boolean equals(Object obj)判断两个Character是否相等
String toString()将Character转成String
static boolean isDigit(char ch)判断ch是不是数字
static boolean isLetter(char ch)判断ch是不是字母
static boolean isLetterOrDigit(char ch)判断ch是不是字母或数字
static boolean isLowerCase(char ch)判断ch是不是小写字母
static boolean isUpperCase(char ch)判断ch是不是大写字母
static boolean isSpaceChar(char ch)判断ch是不是空格
static Character valueOf(char c)将char转成Character

eg.

class CharacterTest{public static void main(String[] args) {Character c = 'a';char res1 = c.charValue();System.out.println(res1);//aCharacter a = 'a';Character b = 'b';System.out.println(a.compareTo(b));//-1System.out.println(a.equals(b));//falseSystem.out.println(Character.isDigit('1'));//trueSystem.out.println(Character.isLetter('a'));//trueSystem.out.println(Character.isLetterOrDigit('1'));//trueSystem.out.println(Character.isLetterOrDigit('a'));//trueSystem.out.println(Character.isLowerCase('a'));//trueSystem.out.println(Character.isUpperCase('A'));//trueSystem.out.println(Character.isSpaceChar(' '));//trueSystem.out.println(c.toString());//"a"System.out.println(Character.valueOf('c'));//c}
}

http://chatgpt.dhexx.cn/article/6IiF4ppT.shtml

相关文章

关于InnoDB的读写锁类型以及加锁方式

(本文为了方便,英文关键词都都采用小写方式,相关知识点会简单介绍,争取做到可以独立阅读) 文章开始我会先介绍本文需要的知识点如下: innodb的主键索引(一级索引)和二级索引&#x…

C++线程中的几类锁

C线程中的几类锁 多线程中的锁主要有五类:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,所得功能与性能成反比。而且我们一般不使用递归锁(C提供std::recursive_mutex),这里不做介绍。 互斥锁 互斥锁用于控制多…

Oracle - 锁

锁概念 锁出现在数据共享的环境中,它是一种机制,在访问相同资源时,可以防止事务之间的破坏性交互。例如,在多个会话同时操作某表时,优先操作的会话需要对其锁定。 事务的分离性要求当前事务不能影响其他的事务&#…

用友数据库错误“未能读取并闩锁页(1:3355)(用闩锁类型SH)”修复

客户硬盘无法识别,检测后,硬盘有坏道,由于数据库正在坏道上,所以恢复出来的用友数据库无法附加。 通过无日志附加后,做DBCC检测数据库出现以下错误: “消息8966,级别16,状态1&#x…

Mysql中锁的类型有哪些?

Mysql中锁的类型有哪些? 1. 基于锁的属性分类:共享锁、排他锁2. 基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎)、记录锁、间隙锁、临键锁。…

mysql 常见锁的类型(一)

文章目录 一、锁的分类1.1 加锁的目的1.2 锁的类别 二、乐观锁和悲观锁2.1. 乐观锁2.2. 悲观锁: 三、共享锁与排他锁四、表锁五、意向锁六、行级锁七、记录锁(Record Locks)八、间隙锁(Gap Locks)九、临键锁&#xff0…

MySQL-InnoDB常用锁类型解析

Shared(乐观锁) and Exclusive Locks(互斥锁): InnoDB有两种锁类型,Shared(s) and Exclusive(x) Locks(乐观锁和互斥锁)。 Shared&…

MySql InnoDB锁类型

MySql InnoDB锁类型 从类型上来分类,InnoDB存储引擎实现了两种标准的锁 共享锁(S-Lock):允许事务读一行数据 排它锁(X-Lock):允许事务删除或者更新一行数据 如果一个事务获取了S锁,那么其他事务也可以立即获得S锁,…

锁的分类总结

锁的分类是从不同角度去看的。同一个锁也可以同时属于多种类型。 一、乐观锁与悲观锁 1. 互斥同步锁的劣势 阻塞和唤醒会带来性能的劣势 用户态和核心态切换上下文切换检查是否有被阻塞线程需要被唤醒等等 可能出现永久阻塞的问题:持有锁的线程永久阻塞了&#…

锁的介绍和分类(轻量级锁 重量级锁 偏向锁 自旋锁 互斥锁)

目录 公平锁 非公平锁 非公平锁 公平锁 可重入锁 不可重入锁 可重入锁(递归锁) 不可重入锁 轻量级锁 重量级锁 偏向锁 重量级锁 自旋锁(循环上锁) 轻量级锁 轻量级锁的释放 偏向锁 自旋锁和互斥锁 自旋锁 互斥锁 为何要使用自旋锁 自旋…

最全锁种类

你可能听说过很多锁,也看到过很多文章讲解锁,这篇我在这里将对锁的不同分类进行描述锁的设计 互斥锁–共享锁 互斥锁:顾名思义,就是互斥的,意思就是当前同步代码块只能被一个线程访问,sync、reentrantlock、…

锁的类型有哪些

锁的类型有哪些 基于锁的属性分类:共享锁、排他锁。 基于锁的粒度分类:行级锁(INNODB)、表级锁(INNODB、MYISAM)、页级锁(BDB引擎 )、记录锁、间隙锁、临键锁。 基于锁的状态分类:意向共享锁、意向排它锁 共享锁(Share Lock) 共享锁又称读锁&…

Kettle使用教程之Job使用

1、Kettle的Job使用十分简单,这里也只是演示比较简单的操作,创建Job 2、点击转换,然后点击浏览,选择转换对象 3、执行按钮,运行该转换 4、如果需要长期的进行定时转换,可以在Job中的start控件进行配置 转载…

Kettle使用教程之数据同步

Kettle使用教程之数据同步 数据模型原型如下: 1、表输入,针对最新的数据输入的表 2、目标表,需要更新的表 3、两个表都需要进行排序操作 4、合并,根据id进行合并 5、数据同步(包括更新、插入、删除) 6、点击运行,就可…

ETL开发工具KETTLE使用教程

Kettle的建立数据库连接、使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录。若存在,则更新。 Kettle简介:Kettle是一款国外开源的ETL工具&#xff0…

ETL工具Kettle使用教程

Kettle使用教程之数据同步 数据同步标识字段 标志字段的值有4种,分别是: “Identical” : 关键字段在新旧数据源中都存在,且域值相同 “changed” : 关键字段在新旧数据源中都存在,但域值不同 “new” : 旧数据源中没有找到该…

Kettle使用教程(一)—— 在MacOS系统中安装 Kettle

Kettle使用教程(一)—— 在MacOS系统中安装 Kettle 一、环境准备二、下载并启动Kettle二、初始化资源库 一、环境准备 Kettle 9.2JDK 1.8 (安装指引)Mysql(安装指引) 二、下载并启动Kettle 首先到官网下…

Kettle使用教程(问题)

关于kettle的介绍此文不做介绍 笔者电脑环境 winoraclejdk1.8kettle7.1 1. 考虑到在在官网下载速度比较慢,在这里可以使用国内的镜像 国内镜像 2. 配置java环境 (1) kettle需要以来java环境,因为没有安装java环境的朋友请移步配置java环境&#xff…

R-P-Faster R-CNN day65 读论文:高分辨率遥感影像综合地理空间目标检测框架

An Efficient and Robust Integrated Geospatial Object Detection Framework for High Spatial Resolution Remote Sensing Imagery 1. Introduction3. Overview of the Proposed R-P-Faster R-CNN Framework3.1. 有效集成区域建议网络与目标检测Faster R-CNN框架3.1.2. RPN与…

多特征融合的高分辨率遥感图像海陆分离——刘思彤

论文阅读笔记 摘要 为解决目前大多数海陆分离方法仅利用单一特征对图像进行处理,从而导致误分割或存在大量孤立区域,造成后续处理工作难度大或无法开展的问题,提出一种联合灰度、梯度和纹理等多特征的海陆分离方法。针对不同的陆地类型选用…