【Java】WrapperClass 包装类
2024-10-09 00:30:08
什么是包装类?
写写我的想法
就是对于对象和基本类型的无法匹配和强转,基本类型在面向对象的实例类型中,反而成了个特殊的数据类型的存在
在一些特定的情况,我们希望通过对象的方式去处理数据,但是基本类型的数据没有像Object的方法可以使用
所以设计者对所有的基本数据类型进行了封装处理,可以说包装类也称为封装类
父类Number
基本类型 对应的封装类
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double
有了类的特点,就可以像对象一样操作了
基本类型 -> 引用类型
@Test
public void test1(){
// 基本数据类型 转换 包装类 int i = 20;
Integer integer = new Integer(i); // 默认自动装箱 自动封装 // 或者直接入参
Integer integer1 = new Integer(100); // 支持了字符串入参 如果格式不符合,抛出 NumberFormatException 数值格式异常
Integer integer2 = new Integer("23134");
}
引用类型 -> 基本类型
@Test
public void test1(){
// 包装类 转换 基本数据类型 Integer integer = new Integer(100); // intValue(); 转换返回基本类型值
int value = integer.intValue(); // 已经自动拆箱处理了
}
现在已经是自动装箱拆箱了
@Test
public void test1(){
Integer integer = 100; // 自动装
int value = integer ; // 自动拆
}
对String的处理
@Test
public void test1(){
int i = 100;
String str = i + ""; // 直接拼接即可
String str2 = String.valueOf(10.03); // String.valueOf()方法 int anInt = Integer.parseInt(str); // 拆箱
double v = Double.parseDouble(str2); // 拆箱
}
关于包装类在三元运算会提升数据类型
@Test
public void test1(){
Object object = true ? new Integer(10) : new Double(20);
System.out.println(object); // 10.0 Object o2;
if (true) o2 = new Integer(1);
else o2 = new Double(2);
System.out.println(o2); //
}
比较判断
@Test
public void test1(){
Integer i = new Integer(10);
Integer j = new Integer(10);
System.out.println(i == j); // false Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true Integer c = 128;
Integer d = 128;
System.out.println(c == d); // false
}
为什么128 就False
- Integer内部定义了一个IntegerCache结构,IntegerCache定义了Integer[]数组,称为预加载池
保存了-128 到 127的字面值 可以直接使用,如果调用超出池范围的字面值,就需要扩容了,所以大于127的都是new的,地址自然不一样
最新文章
- SAX解析技术
- HTML5+CSS3实现图片可倾斜摆放的动画相册效果
- <;停车卫>; 产品需求说明书 version 2.0
- 异步dcfifo的读写
- 【BZOJ-1924】所驼门王的宝藏 Tarjan缩点(+拓扑排序) + 拓扑图DP
- HP P1008打印机如何打印特殊纸张
- js控制只能输入数字
- c++builder 代码输入助手
- 1023: [SHOI2008]cactus仙人掌图 - BZOJ
- Windows10搭建PHP7开发环境
- iOS10新增Api详解
- Linux 下防火墙端口设置
- 最流行的Node.js应用开发框架简介
- Nginx 和 IIS 实现动静分离【转载】
- Android中使用开源框架citypickerview实现省市区三级联动选择
- px转vw和vh的工具(对前端同学有用)
- Servlet 笔记-生命周期
- php写一个简洁的登录页面
- mysql 8.0~MGR多成员读一致性
- 自适应XAML布局经验总结 (四)区域布局设计模式
热门文章
- jupyter之配置自己喜欢的python环境
- Mac下 eclipse target runtime com.genuitec.runtime 解决方法
- 报错:Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column &#39;gender&#39; at row 1
- 刷oj之类的题时java Scanner读取太慢解决之道
- deepin 系统 ssh,samba,redis,取消开机密码等相关配置
- CF 631C report
- Serpent.AI - 游戏代理框架(Python)
- Tensorboard详解(下篇)
- Linux/CentOS7搭建Anaconda运行环境
- redis++:Redis持久化 rdb &; aof 工作原理及流程图 (三)