当前位置: 首页 > news >正文

【Java学习笔记】包装类

包装类(Wrapper)

1. 介绍

2. 分类和继承关系

基本数据类型包装类父类
booleanBooleanObject
charCharacterObject
byteByteNumber
shortShortNumber
intIntegerNumber
longLongNumber
floatFloatNumber
doubleDoubleNumber

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


一、包装类和基本数据类型的相互转换(装箱和拆箱

(1)jdk5 前手动装箱和拆箱方式, 装箱:基本类型->包装类型,反之,拆箱

(2)jdk5 以后(含 jdk5)的自动装箱和拆箱方式

(3)底层调用的方法

(4)下面以Integer举例,其他包装类的方法类似,不一一举例

1. 装箱(int --> Integer)

int n = 10;// 方式一
Integer integer = Integer.valueOf(n);// 方式二
Integer integer1 = new Integer(n);

2. 拆箱(Integer --> int)

int n = 10;// 装箱
Integer integer = Integer.valueOf(n);// 拆箱
int n1 = integer.intValue();

3. 自动装箱和插箱

int n = 10;// 自动装箱
Integer integer = n; // 底层调用 valueOf() 方法// 自动拆箱
int n1 = integer; // 底层调用 intValue() 方法

实现自动的原理:在底层会调用相应的方法


二、包装类和String 类的相互转换

1. Integer --> String的三种方法

  • (1)使用字符串串拼接

  • (2)使用Integer.toString()方法

  • (3)使用String.valueOf()方法

    • String.valueOf()方法在底层接收的是一个对象,而Integer刚好就是一个对象

代码示例

Integer integer = 5; // 自动装箱// Integer --> String// 方法一
String str1 = integer + "";// 方法二
String str2 = integer.toString();// 方法三
String str3 = String.valueOf(integer);

2. String --> Integer

两种方法

代码示例

String str = "123";Integer integer1 = Integer.parseInt(str); // 使用自动装箱Integer integer2 = new Integer(str); // 使用构造器

三、Integer类和Character类的一些常用方法

说明:下面举例说明,对于其他类型的大同小异

方法描述
Integer.MIN_VALUE返回整数的最小值
Integer.MAX_VALUE返回整数的最大值
Character.isDigit(char)判断字符是否为数字
Character.isLetter(char)判断字符是否为字母
Character.isUpperCase(char)判断字符是否为大写字母
Character.isLowerCase(char)判断字符是否为小写字母
Character.isWhitespace(char)判断字符是否为空格
Character.toUpperCase(char)将字符转换为大写字母
Character.toLowerCase(char)将字符转换为小写字母

代码示例

public class Test {public static void main(String[] args) {System.out.println(Integer.MIN_VALUE); // 返回最小值System.out.println(Integer.MAX_VALUE); // 返回最大值System.out.println(Character.isDigit('a')); // 判断是不是数字System.out.println(Character.isLetter('a')); // 判断是不是字母System.out.println(Character.isUpperCase('a')); // 判断是不是大写System.out.println(Character.isLowerCase('a')); // 判断是不是小写System.out.println(Character.isWhitespace('a')); // 判断是不是空格System.out.println(Character.toUpperCase('a')); // 转成大写System.out.println(Character.toLowerCase('A')); // 转成小写}
}// 运行结果
-2147483648 // 返回最小值
2147483647 // 返回最大值
false // 判断是不是数字
true // 判断是不是字母
false // 判断是不是大写
true // 判断是不是小写
false // 判断是不是空格
A // 转成大写
a // 转成小写

四、Integer的创建机制底层源码探究

源码如下

public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

继续追源码,可以得到:low:-127、high:128

int --> Integer底层机制的解释

代码示例

(1)数据在范围内:引用相同的缓存对象

Integer integer1 = 1;
Integer integer2 = 1;
System.out.println(integer1 == integer2);// 输出结果
true

(2)数据不再范围内:创建Integer对象

Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2);// 输出结果
false

五、题目练习

1. 易错题

(1)第一题

Object obj1 = true ? new Integer(1) : new Double(2.0);
System.out.println(obj1);

输出:1.0

解释:三元运算符看成一个整体double优先级最高,所以输出double(遵循自动类型转换中的自动提升原则

自动提升原则:表达式结果的类型自动提升为操作数中最大的类型

int result = true ? 1 : 2.5;
System.out.println(result);

输出:1.0

(2)第二题

Object obj2;
if (true) {obj2 = new Integer(1);
} else {obj2 = new Double(2.0);
}
System.out.println(obj2);

输出:1

2. 综合题

在这里插入图片描述

在这里插入图片描述

答案

在这里插入图片描述

总结

(1)如果是在范围内:是同一个对象

(2)如果超出范围或者new:只要是创建了对象就不是同一个对象

(3)intInteger只要有基本数据类型,判断的是值是否相等

相关文章:

  • python版若依框架开发:后端开发规范
  • 快速部署和启动Vue3项目
  • C++:用 libcurl 发送一封带有附件的邮件
  • 让DeepSeek写2025年高考作文
  • CANoe trace里面显示的Time 具体是什么意思
  • 在C语言中使用UUID作为AES加密密钥
  • 通过nohup命令,实现将指定文件快速上传到KS3
  • JAVA-springboot log日志
  • 打卡第38天:早停策略和模型权重的保存
  • C++图书管理
  • 使用 Redisson 实现分布式锁—解决方案详解
  • MySQL复杂SQL(多表联查/子查询)详细讲解
  • 安达发|装饰材料行业APS生产排程软件:破解生产困局,智造升级新引擎
  • Redis:List类型
  • Go爬虫开发学习记录
  • Canal环境搭建并实现和ES数据同步
  • 分享下量化快速选股和回测的方法
  • MIT 6.S081 Lab10 mmap
  • 智能手表供应链与采购清单(Aurora Watch S1)
  • 基于Python学习《Head First设计模式》第六章 命令模式
  • 开发者模式一直开着有危害吗/长沙网站seo
  • 如何自己做网站发布到服务器上面/福建百度代理公司
  • 北京网站建设降龙/东莞网络推广营销公司
  • 北京大兴专业网站建设公司/今日头条网站推广
  • 县城服务网站如何做/百度指数教程
  • 站长工具最近查询/网站备案查询官网