Java常用类(3)- 包装类
2023-02-18 16:23:23 时间
包装类概述
什么是包装类
- 基本数据类型所对应的引用类型
- Object可统一所有数据,包装类的默认值是null
装箱和拆箱
- 基本类型转换为引用类型为装箱
- 引用类型转换为基本类型为拆箱
package commonclass.packingclass; public class Demo01 { public static void main(String[] args) { //类型转换:装箱,基本类型转成引用类型的过程 int age = 18; //int使用Integer类创建对象 //方式一: Integer integer = new Integer(age); //方式二: Integer integer1 = Integer.valueOf(age); //类型转换:拆箱,引用类型转换成基本类型 Integer integer2 = new Integer(100); int age1 = integer2.intValue(); //?jdk1.5之前,了解 //?jdk1.5之后,提供自动拆箱装箱 int num = 30; //自动装箱,把基本类型赋给引用类型 Integer integer3 = num; //自动拆箱,把引用类型赋给基本类型 int num1 = integer3; } }
基本类型和字符串转换
8种包装类提供不同的类型间转换方式:
- Number父类中提供的6个共性方法
- parseXXX()静态方法
- valueOf()静态方法,把基本类型转换为引用类型
package commonclass.packingclass; public class Demo01 { public static void main(String[] args) { //基本类型和字符串之间转换 //1 基本类型转成字符串 int n1 = 100; //1.1 使用+号 String s1 = n1 + "aa"; System.out.println(s1); //1.2 之后使用Integer中的toString()方法 String s2 = Integer.toString(n1); System.out.println(s2); //2 字符串转换为基本类型 String str = "150"; int n2 = Integer.parseInt(str); System.out.println(str); //3 补充:boolean字符串形式转换成基本类型。“true”---->true 非“true”---->false String str2 = "true"; boolean b1 = Boolean.parseBoolean(str2); System.out.println(b1); String str3 = "qwert"; boolean b2 = Boolean.parseBoolean(str3); System.out.println(b2); } }
整数/Integer缓冲区
- Java预先创建了256个常用的整数包装类型对象
package commonclass.packingclass; public class Demo02 { public static void main(String[] args) { //面试题 Integer integer = new Integer(100); Integer integer1 = new Integer(100); System.out.println(integer==integer1); //false :比较的是栈中的地址;调用的是构造方法 Integer integer2 = 100;//自动装箱 Integer integer3 = 100; System.out.println(integer2==integer3); //true :将基本类型赋给引用类型,自动装箱;栈中的integer访问的都是堆中的100;调用的是valueOf()方法存放在堆中的缓冲区 /*?过程 Integer integer2 = 100----->Integer integer2 = Integer.valueOf(100) Integer integer3 = 100----->Integer integer3 = Integer.valueOf(100) */ Integer integer4 = 200;//自动装箱 Integer integer5 = 200; System.out.println(integer4==integer5); //false :valueOf的范围是-128到127,不在范围之内的会重新new一个,因此比较的是栈中的地址 } }
相关文章
- SPI:Java的高可扩展利器
- Java反射机制清空字符串导致业务异常分析
- 7000+字图文并茂解带你深入理解java锁升级的每个细节
- 全文手敲代码,教你用Java实现扫雷小游戏
- 4种方法教你如何查看java对象所占内存大小
- 手绘图解java类加载原理
- Java中的线程到底有哪些安全策略
- Java中观察者模式与委托,还在傻傻分不清
- 一图详解java-class类文件原理
- Java遇上SPL:架构优势和开发效率,一个不放过
- 长篇图解java反射机制及其应用场景
- [java并发编程]基于信号量semaphore实现限流器
- java并发编程-StampedLock高性能读写锁
- 【java并发编程】ReentrantLock 可重入读写锁
- 【java并发编程】Lock & Condition 协调同步生产消费
- Java synchronized对象级别与类级别的同步锁
- java并发编程JUC第十二篇:AtomicInteger原子整型
- java并发编程JUC第十一篇:如何在线程之间进行对等数据交换
- java并发编程JUC第十篇:CyclicBarrier线程同步
- java并发编程JUC第九篇:CountDownLatch线程同步