Java基础11:Wrapper包装类

前言:Java语言是一个面向对象的语言,但是其中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便。为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样和八个基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

一、Wrapper类概述

1.1、基本类型的包装类均位于java.lang包。之所以这么包装,是因为在Java中有些地方只能使用Object来运行。比如ArrayList类中的add(Object obj)方法中只能传入Object类,而在这里基本数据类型就可先转化为包装类,而包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变。

1.2、包装类的继承关系:除了Boolean、Character类型直接继承object类,其他:Byte、Short、Integer、Long、Float、Double都是继承Object的子类Number。

1.3、基本类型和对应的包装类可以相互装换

  • 由基本类型向对应的包装类转换称为自动装箱,例如把int包装成 Integer类的对象;

  • 包装类向对应的基本类型转换称为自动拆箱,例如把Integer类的对象重新简化为int。

  • Java 5.0增加了自动装箱和拆箱,程序员过去需手工执行的许多包装操作,现在可以由Java自动处理了。


二、Java中的包装器类有两个主要的目的:

  • 提供一种机制,将基本数值“包装”到对象中,从而使基本值能够包含在为对象而保留的操作中,比如添加到Collections 中,或者从带对象返回值的方法中返回。

  • 为基本数值提供分类功能。这些功能大多数于各种转换有关:在基本数值和String对象间相互转换,在基本值和String对象之间按不同基数转换,如二进制、八进制和十六进制。

三、包装类使用(以Integer为例)

1、通用方法

①构造函数:

a.参数为基本数据值:Integer ig=new Integer(10); //int转化为Integer包装类

b.参数为字符串:Integer ig =new Integer("10"); //String转化为Integer包装类

②Integer valueOf(10)

Integer ig=Integer.valueOf(10);//返回一个指定int值的Integer对象

③Integer valueOf(String str)
Integer ig = Integer.valueOf("10");//返回一个指定String值的Integer对象

④hasCode()  //返回对象的哈希表码  

⑤equals()   //比较两个对象是否相同 

int num = ig.intValue();//引用变量转化为基本类型,得到对象封装的基本数值

static int parseInt(String str)

int i =ig.parseInt("10");//字符串转化为基本数据类型

⑧int parseInt("10");

int i =ig.parseaInt("10");//字符串转化为基本数据类型

toString();     //将包装类转化为字符串

2、将整数num转化成二进制、八进制或十六进制形式的字符串的类方法

static String toBinaryString(int num);   //十进制转化为二进制,并保存为String 

static String toHexString(int num) ;    //十进制转化为十六进制,并保存为String 

static String toOctalString(int num) ;  //十进制转化为八进制,并保存为String 


四、自动拆箱和自动装箱

2004年9月30日,J2SE1.5发布,成为Java语言发展史上的又一里程碑。为了表示该版本的重要性,J2SE 1.5更名为Java SE 5.0(内部版本号1.5.0),代号为“Tiger”,Tiger包含了从1996年发布1.0版本以来的最重大的更新,其中包括泛型支持、基本类型的自动装箱、改进的循环、枚举类型、格式化I/O及可变参数。

自动装箱:是将一个Java定义的基本数据类型赋值给相应封装类的变量。

自动拆箱:与自动装箱是相反的操作,自动拆箱则是将一个封装类的变量赋值给相应基本数据类型的变量。

在jdk 1.5之前,如果你想要定义一个value为100的Integer对象,则需要如下定义:

Integer i=new Integer (100);

但有了自动拆装箱之后就可以直接把基本类型赋值给Integer对象。(自动封箱和自动拆箱是Java自动帮我们完成的)

int intNum1=100;//普通常量
Integer intNum2=intNum1;//自动装箱
int intNum3=intNum2;//自动拆箱

应用场景:

(1)赋值过程

(2)函数参数

public static int subFun(Integer num)
{
  return num;
}


调用此函数就会发生自动拆箱

public static Integer subFun(int num)
{
  return num;
}

(3)集合操作

 集合只能接收对象,但我们传入普通数据类型也是可以的,它内部就完成了自动装箱。


参考链接:自动装/拆箱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java架构何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值