Java面向对象-包装类

Java倡导一切皆对象,但是Java中有8中基本数据类型不支持面向对象的机制,因此Java提供了包装类的概念,将基本数据类型变成一个类的形式。

1、包装类介绍

基本数据类型与包装类的对应关系:

基本数据类型包装类
intInteger
shortShort
byteByte
longLong
floatFloat
doubleDouble
charChracter
booleanBoolean

其中Character和Boolean类是Object类的直接子类,其他的都是Number类。Number类是一个抽象数据类型,主要将包装类的内容转化为基本数据类型。每个包装类都通过对应的**Value()函数获取基本数据类型值。例如Interger.intValue()。

2、自动装箱与自动拆箱

自动装箱:将一个基本数据类型变为包装类。

int x = 30;
Interger i = new Integer(x);//一种装箱
Interger i = x;    //另一种装箱

自动拆箱:将一个包装类变为基本数据类型。

Integer i = 30;
int x = i.intValue();//一种拆箱
int x = i; //另一种拆箱
3、包装类的应用

1、基本数据类型与字符串之间的相互转换
字符串转换为基本数据类型:
① 通过包装类提供的parseXxx(String s)方法进行转换(Character类没有该方法,其他都有)。例如Interger.parseInt(“3435”);
② 通过包装类的构造方法Xxx(String s)。例如new Integer(“443”);
基本数据类型转换为字符串:
通过String类提供的多个重载valueOf()函数进行转换。例如String.valueOf(345);
2、包装类内容的相互比较
① 包装类与基本数据类型比较时会自动拆箱为基本数据类型,然后再进行比较
② 包装类与包装类的比较就比较复杂,只有当两个包装类的引用指向同一个对象时才会返回true。
例如:

new Integer(2) == new Integer(2);//返回false

以上程序返回false,因为new关键字都是重新建立一个新的对象。
以下另外一种装箱操作时,情况就比较复杂,例如:

Integer a = 2;
Integer b = 2;
System.out.println(a == b); //输出true
Integer c = 128;
Integer d = 128;
System.out.println(c == d); //输出false

这是因为Java在用这种方式进行装箱时,建立了一个[-128,127]的数组作为缓存,当装箱数字在这个范围时,实际上都是直接引用数组里的元素,而这个范围以外的数字都会重新创建一个Integer实例。

这里写图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值