Java常用类-包装类
包装类
Java中的基本类型功能简单,不具备对象的特性,为了使基本类型具备对象的特性,所以出现了包装类,就可以像操作对象一样操作基本类型数据;包装类不是为了取代基本数据类型,而是在数据类型需要使用对象表示的时候,才使用包装类;
1.包装类的继承关系

2.基本数据类型和包装类的关系
| 基本数据类型 | 包装类 |
|---|---|
| byte | Byte |
| char | Character |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
提示:所有的包装类+String类都是final修饰的,代表不可以被继承;
3.包装类对应的属性定义(以Integer为例)
System.out.println(Integer.SIZE); //位数 32位
System.out.println(Integer.BYTES); //字节数 4字节
System.out.println(Integer.MAX_VALUE); //最大值 2^32-1 2147483647
System.out.println(Integer.MIN_VALUE); //最小值 -2^32 -2147483648
4.包装类型的基本操作
基本类型,包装类型,String类型的相互转换

| 序号 | 类型转换 | 方法 |
|---|---|---|
| 1 | int->Integer | new Integer(primitive) |
| 2 | Integer->int | Integer 对象.xxxValue() |
| 3 | Integer->String | Integer 对象.toString() |
| 4 | String->Integer | new Integer(String str) |
| 5 | int->String | String.valueOf(primitive) |
| 6 | String->int | Integer.paseXxx(String str) |
4.1 int->Integer new Integer(primitive)
所有包装类都可以与之对应的基本数据类型作为参数,来构造他们的实例
//1基本数据类型 ->包装类
//1.1byte->Byte
byte b = 1;
Byte byte1 = new Byte(b);
//1.2 char->Character
Character character1 = new Character('a');
//1.3 short->Short
short s = 2;
Short short1 = new Short(s);
//1.4 int Integer
Integer integer1 = new Integer(4);
//1.5 long->Long
Long long1 = new Long(8);
//1.6 float->Float
Float float1 = new Float((float) 4.0);
//1.7 double->Double
Double double1 = new Double(8.0);
//1.8 boolean->Boolean
Boolean boolean1 = new Boolean(true);
注意:类型一定要对应;
Integer.valueOf(int a)
Integer integer5 = Integer.valueOf(200);
System.out.println(integer5);
源码
//也是new 的对象 跟new Integer(primitive)一样
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
4.2 Integer->int Integer 对象.xxxValue()
对象.xxxValue(),将包装类转换为对应的基本数据类型值,所有包装类都有
Integer integer2 = new Integer(4);
int int2 = integer2.intValue();
System.out.println(int2); //4
4.3 Integer->String Integer 对象.toString()
对象.toString() 将基本数据烈性转换为String类型
Integer integer3 = new Integer(4);
String string3 = integer3.toString();
System.out.println(string3); //4
4.4 String->Integer new Integer(String str)
除Character类外,其他包装类可将一个字符作为参数构造他们的实例,前提:字符串内容必须跟对应包装类匹配
Integer integer4 = new Integer("4");
System.out.println(integer4);
Character类型 没有支持字符串的构造方法,因为字符串包含多个字符,Character只包含一个字符
Character a = new Character("aa"); //会报错
Integer.valueOf(String s)
源码
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
//先匹配数字,再调用new Integer
}
4.5 int->String String.valueOf(primitive)
基本类型转String类型
String string5 = String.valueOf(100);
System.out.println(string5); //100
String类的valueOf方法

4.6 String->int Integer.paseXxx
直接将字符串转换为对应的基本数据类型Character除外
int int6 = Integer.parseInt("123");
System.out.println(int6); //123
5.装箱,拆箱
5.1装箱
自动装箱,底层就是自动调用valuesOf方法实现
Integer integer5_1_1 = 400;
//实际上,系统执行了Integer obj = Integer.valueOf(400);
System.out.println(integer5_1_1); //400
5.2拆箱
Integer integer5_2_1 = new Integer(500);
System.out.println(integer5_2_1+integer5_2_1); //1000
//实际上执行了integer5_2_1.intValue()+integer5_2_1.intValue();
6.包装类的缓存
6.1包装类的缓存范围
| 包装类 | 缓存范围 |
|---|---|
| Byte | 全部缓存(-128—127) |
| Character | <=127缓存 |
| Short | -128—127缓存 |
| Integer | -128—127缓存 |
| Long | -128—127缓存 |
| Float | 没有缓存 |
| Double | 没有缓存 |
| Boolean | 全部缓存(true,false) |
6.2案例
Integer integer8_1 = 120;
Integer integer8_2 = 120;
System.out.println(integer8_1 == integer8_2); //true
Integer integer9_1 = 130;
Integer integer9_2 = 130;
System.out.println(integer9_1 == integer9_2); //false
//Integer类中有一个静态内部类IntegerCache,缓存了-128到127之间所有int数字的Integer对象
//120 在-128-127之间 ,产出的对象是从IntegerCache中取出来的
//其他包装类也是一样
6.3垃圾回收相关
Integer integer6_3_1 = 100;
integer6_3_1 = null; //integer6_3_1 不会被垃圾回收器回收
//这里虽然integer6_3_1被赋予null,但它之前指向的是cache中的Integer对象,而cache没有被赋null,所以Integer(100)这个对象还是存在
Integer integer6_3_2 = 128;
integer6_3_2 = null;//integer6_3_2 会被垃圾回收器回收
//integer6_3_2不是缓存中的对象,被赋予null后会被垃圾回收器回收
Java常用类-包装类的更多相关文章
- Java常用类:包装类,String,日期类,Math,File,枚举类
Java常用类:包装类,String,日期类,Math,File,枚举类
- java常用类——包装类
八种基本数据类型对应八种包装类和它们的继承关系 基本数据类型 对应的包装类 boolean Boolean byte Byte short Short int Integer long Long ch ...
- Java常用类学习笔记总结
Java常用类 java.lang.String类的使用 1.概述 String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String ...
- Java 常用类总结(SE基础)
本篇博客对java常用类相关知识进行了归纳总结,比较详细,适用于学习和复习. 1. 字符串相关的类 1.1 String String是一个final类,代表不可变的字符序列.不可被继承. Strin ...
- Java基础 —— Java常用类
Java常用类: java.lang包: java.lang.Object类: hashcode()方法:返回一段整型的哈希码,代表地址. toString()方法:返回父类名+"@&quo ...
- Java常用类之要点总结
Java常用类之要点总结
- Java工具类—包装类
Java工具类--包装类 我们都知道,JDK 其实给我们提供了很多很多 Java 开发者已经写好的现成的类,他们其实都可以理解成工具类,比如我们常见的集合类,日期相关的类,数学相关的类等等,有了这些工 ...
- Java常用类的使用
Java常用类 1. Optional 在我们的开发中,NullPointerException可谓是随时随处可见,为了避免空指针异常,我们常常需要进行 一 些防御式的检查,所以在代码中常常可见if( ...
- java常用类-上
一,常用类之一包装类 java开发中习惯把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型. 包装类的出现并不是用于取代基本数据类型,也取代不了. 包装类位于java.lan ...
随机推荐
- Java安全之Commons Collections6分析
Java安全之Commons Collections6分析 0x00 前言 其实在分析的几条链中都大致相同,都是基于前面一些链的变形,在本文的CC6链中,就和前面的有点小小的区别.在CC6链中也和CC ...
- 更改docker默认的data,metadata存储大小(实操)
为什么要更改 data,metadata呢?我们运行环境中涉及大量数据操作,数据增长有时候很快,由于之前规划不足,所以磁盘很快达到瓶颈需要进行重新部署.这就需要调整原来的一些docker配置.操作系统 ...
- 基于 Redis 分布式锁
1.主流分布式锁实现方案 基于数据库实现分布式锁 基于缓存(redis 等) 基于 Zookeeper 2.根据实现方式分类 : 类 CAS 自旋式分布式锁:询问的方式,类似 java 并发编程中的线 ...
- Python获取文件夹下的所有文件名
1 #获取文件夹内的图片 2 import os 3 def get_imlist(path): 4 return [os.path.join(path,f) for f in os.listdir( ...
- python跑机器学习时报错:Process finished with exit code -1073740791 (0xC0000409)
emmm...第二次遇到这个错误了,好好的好好的卷积神经网络突然就跑不起了.就弹出一堆信息也不报那行代码错了... 记录一下: 两次解决方法相同,删h5py包 Process finished wit ...
- win10屏幕亮度无法调节,已解决
一.问题背景 最近遇到了屏幕亮度无法调节的问题,屏幕特别亮,亮瞎眼的那种,安装各种驱动和修改注册表都不起作用,右键显示器设置根本找不到亮度调节,有时候可以找到但是调节不起作用. 二.发现原因 经过各种 ...
- [AcWing 768] 忽略大小写比较字符串大小
点击查看代码 #include<iostream> using namespace std; string a, b; int main() { getline(cin, a); getl ...
- 在windows上安装elasticsearch7.6
在windows上安装elasticsearch7.6 安装Java1.8 下载Java1.8 提取码:yi0c 链接:https://pan.baidu.com/s/1mNd2Yg-k6ob91bO ...
- 【干货】BIOS、UEFI、MBR、GPT、GRUB 到底是什么意思?
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 01 前言 在学习 Linux 系统启动原理之前,我们先了解下与操作系统启动相关的几个概念. 02 与操作系统启动相关的几个 ...
- 哈工大软件构造Lab1(2022)
目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 ...