Java包装类 学习

思维导图

在这里插入图片描述

导学

Java是一门面向对象的语言,但是在Java中却存在几个异类,它们没有属性,没有方法,也不能实现对象的交互,它们就是八大基本数据类型。而且在之前的学习中,我们也发现基本数据类型作为类的属性,存在默认值,有些时候,这些默认值则会干扰我们的判断。
那么,作为与基本数据类型对应的包装类,则能很好的应对这些问题。

包装类与基本数据类型

包装类与基本数据类型是一一对应的,作为引用数据类型,包装类拥有属性、方法、能达成对象的交互,也就意味着我们可以通过这些属性方法来实现之前一些没有办法对基本数据类型数据完成的操作。
在这里插入图片描述

包装类属性方法和构造器简介

jdk 1.8 中文在线API地址:http://www.matools.com/api/java8
本章节的内容需要同学们,借助jdk文档学习。
总结:

  1. 包装类没有子类
  2. 基本数据类型继承Number
  3. 字符型char和布尔型boolean继承自Object
  4. java中所有的包装类都存放在java.lang包中
  5. 包装类的方法大部分都是static方法:静态方法既可以通过类名调用也可以通过对象名调用
  6. 包装类中一般会提供两种构造器用于构建对象
    使用基本数据类型的参数;
    使用字符串类型的参数:对于此类参数,在实际创建对象的时候要注意输入的值要满足条件;

包装类与基本数据类型的转换

包装类与基本数据类型之间的转换,非常的简单,因为在Java中提供了装箱与拆箱的技术。Java中,装箱是把基本数据类型的值转换为对应包装类的对象,拆箱就是把包装类对象转换为对应基本数据类型的值。
从基本数据类型转成引用数据类型的方法:

  • 从构造器创建(手动装箱)
  • 自动装箱创建

从引用数据类型转成基本数据类型:

  • 使用 对象.xxxxValue()(手动拆箱)
  • 自动拆箱
	int y = 10;
	Integer yi = new Integer(y);
	Integer yi2 = y;

	int y3 = yi.intValue();

	boolean b = false;
	Boolean bi = new Boolean(b);
	Boolean bi2 = b;

	boolean bi3 = bi2.booleanValue();

基本数据类型与字符串转换

基本数据类型转换为字符串类型:
将基本数据类型转换为字符串,可以使用包装类方法toString(typeValue)来实现转换操作

int t1 = 10;
String t2 = Integer.toString(t1);

字符串类型转换为基本数据类型

  • 方法一:包装类的parse方法
    示例: int t = Integer.parseInt(StringValue);
int t3 = Integer.parseInt("3");
  • 方法二: 使用包装类的 valueOf(StringValue)的方法,先将字符串转换为包装类,再通过自动拆箱完成基本数据类型转换。
    示例: int t = Integer.valueOf(StringValue);
int t4 = Integer.valueOf(t2);

补充

  • 包装类的初始值为null
    这也是为什么我们有点时候在设置类的属性时,需要采用包装类,因为能够避免基本数据类型的初始值。
  • 包装类的比较
    Java中有一个缓存区机制,Integer中,数值在-128到127之间的值会进行缓存,取值时会从缓存中读取数据,如果有,直接返回地址使用;如果没有这个数值,会new Integer进行创建。
    在这里插入图片描述
public class Test {
	public static void main(String[] args) {
		Integer one = new Integer(100);
		Integer two = new Integer(100);
		System.out.println("one==two的结果:" + (one == two));//false 比较的是内存地址,此处one与two的内存地址不同
		
		Integer three = 100;
		System.out.println("three==100的结果:" + (three == 100));//true 自动拆箱
		System.out.println("three==one的结果:" + (three == one));//false 内存地址
		
		Integer four = 100;
		/**
		 * 数字范围在[-128,127]之间直接从对象池获取(有就直接产生,没有实例化Interger),
		 * 故three和four共享同一块内存空间,
		 * 实际操作为 Integer four = Integer.valueOf(100);
		 */
		System.out.println("three==four的结果:" + (three == four));//true 
		
		Integer five = 200;
		System.out.println("five==200的结果:" + (five == 200));//true 自动拆箱
		
		Integer six = 200;
		System.out.println("five==six的结果:" + (five == six));//false 超过了127的范围,内存地址不同
	}
}
  • Double和Float没有对象常量池(缓存区),其余6种基本类型的包装类都有。不可以适用上述的比较原理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值