Java八大常用类(二) 包装类
2023-03-07 09:11:47 时间
常用类 1 包装类 引入 包装类均位于java.lang 包
基本数据类型 包装类 byte Byte boolean Boolean short Short char Character int Integer long Long float Float double Double 优点:
(1)某些方法的参数必须是对象,为了让基本数据类型的数据作为参数,提供包装类
(2)包装类还可以提供更多功能
(3)其他的特别重要的功能:比如可以实现字符串和基本数据类型之间的转换
package oop2.demo05;
/*
包装类的作用
*/
public class TestA {
public static void main(String[] args) {
String a = "10";
int aa = 10; //基本数据的类型
Integer bb = new Integer(10); //包装类表示的数据
int i = Integer.parseInt(a); //把String类型的数据转成int类型,a被转成int类型并存入i中
int c = i * aa; //
// Integer.parseInt() 常用:转化为int型
// Double.parseDouble() 转为为double型,其他的以此类推
System.out.println(i);
System.out.println(c);
System.out.println(Integer.SIZE); //32
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
} 自动装箱、自动拆箱 自动装箱 基本数据类型 ---> 包装类 自动拆箱 包装类---> 基本数据类型
package oop2.demo05;
//基本类型的数据和包装类之间的相互转化 public class TestB {
public static void main(String[] args) {
int aa = 10;
Integer bb = new Integer(aa); //把基本的数据类型转为包装类
int cc = bb.intValue(); //把包装类转成基本类型
/*
自动装箱 基本数据类型 ---> 包装类
自动拆箱 包装类---> 基本数据类型
*/
int a = 10;
Integer b = a; // 这是JDK的自动装箱 底层使用的是Integer.valueOf() 完成自动装箱过程
int c = b; //自动拆箱
// 底层使用intValue()完成自动拆箱的过程
}
} 自动装箱、自动拆箱的使用 注意:
JDK1.5 以后,增加了自动装箱和自动拆箱的功能。 自动装箱调用valueOf() 方法,而不是new Integer()方法 自动拆箱调用xxxValue() 方法 包装类在自动装箱时,为了提高效率,对于-128~127之间的值会进行缓存处理。超过范围后,对象之间不能再使用==进行数值比较,而是使用equals方法 package oop2.demo05;
public class TestC {
public static void main(String[] args) {
int a = 10;
Integer b = 10; //自动装箱
System.out.println(a==b); //自动拆箱 ture b拆箱
System.out.println(b.equals(a)); //自动装箱 ture a装箱,判断a的值是否与b的值相同
//==================================================================================
Integer aa = new Integer(10);
Integer bb = new Integer(10);
System.out.println(aa == bb); //False aa与bb同一类型,不发生拆箱装箱。new两次Integer 缓存的物理地址不一样
System.out.println(aa.equals(bb)); //true
//======================================================================================
Integer aaa = 122; //自动装箱 在-128~127之内
Integer bbb = 122; //自动装箱
System.out.println(aaa == bbb); //true aaa和bbb在-128~127之内,,此种写法,他们是同一类型,同一对象
System.out.println(aaa.equals(bbb)); //true
//======================================================================================
Integer aaaa = 233; //在-127~128之外,同一类型,同一对象
Integer bbbb = 233;
System.out.println(aaaa==bbbb); //false aaa和bbb在-128~127之外,相当于new两次Integer,导致了他们的物理地址不一致
System.out.println(aaaa.equals(bbbb)); //这种情况下,只比较值大小是否相等,只能用equals方法
}
}
相关文章
- java 根据经纬度计算圆周
- Java学习之路
- Java 执行 Postgresql Jdbc 类型异常时,复杂sql难定位的解决方案
- Java 关于split 的一些思考和应用(常见数据处理情况)
- Java常用对象后缀命名随记
- 【高并发】浅谈AQS中的ReentrantLock、ReentrantReadWriteLock、StampedLock与Condition
- 【高并发】浅谈AQS中的CountDownLatch、Semaphore与CyclicBarrier
- 【高并发】由InterruptedException异常引发的思考
- Java应用构建并部署ECS
- 【高并发】深度解析ScheduledThreadPoolExecutor类的源代码
- Java——发送消息到企业微信中
- maven 打包详解
- Java 概要
- Java 捕鱼达人简化版
- Java单元测试|阿里云产品内容精选(四十三)
- 使用 Jenkins 创建微服务应用的持续集成
- 《Tomcat安装与使用》
- 云原生应用持续交付入门:基于云效部署java应用到kubernetes集群
- Java基础应用及实用技巧 | 开发者社区精选文章合集(四十二)
- Golang高并发:生产者消费者模型