包装类说明以及包装类的装箱和拆箱

一、包概念理解

在java程序中,包是用于存放类的容器,包名要全部小写(规范),在磁盘上显示为层层深入的文件夹。包的存在是为了更容易识别类资源,一个类名资源非常宝贵,为了能够识别不同的人所编写的相同类,JAVA创建了包机制。

包在实际实现上其实就是磁盘文件夹,但包名也可能重复。 为了避免包名的重复,行业上推荐使用域名倒装来作为包名。包解决了你的java类命名的顾虑,在包中,你可以放心的去进行类的命名,所以包也叫做类的命名空间(namespace)

包名全部小写,一般是名词。最好不要书写无包类或默认包类。

同包类关系十分亲密,无需导入可直接引用,异包类属于外来的,使用时需要导入。但是有一个例外就是,在java编程中,java.lang包是默认导入的,java.lang下的所有类可以直接使用,不需要导入。在java的每一个类的编译中,都会默认自动的加上一句import java.lang.*;

二、包装类说明 

1.包装类的由来

java的基本类型有int、short、long、folat、double、boolean、char(16bits)......与传统语言不同的是,java语言中的字符型

char是16位的,两个字节代表一个字符。(小提示:java的编码格式是Unicode)

java基本类型有其优点和缺点:

                                       优点:内存占用率低,速度快

                                       缺点:语义表达能力不足,不能表示没有。

由于基本类型的能力不足,于是包装类应运而生。

包装类的作用:解决基本类型的语义化不足的缺点,能够表示“没有”,还有就是为基本类型服务。

每一个基本类型都有与之对应的类类型。

a)    int  -> Integer

b)    float -> Float

c)    double -> Double

d)    boolean -> Boolean

e)    char -> Character

类类型中提供了许多的静态函数以供基本类型使用。

2.包装类的装箱和拆箱操作

所有基本类型所对应的类类型中都包裹了一个基本类型,我们也把这样的类叫做包装类(wrapper). 所有包装类均不能被继承,都是 final 的,主要是为了系统安全。我们可以通过传入一个值实现类类型实例的值初始化,也可以通过对应的方法从类类型实例中将值传出来。这就是所谓的装箱和拆箱。

a.手动装箱和拆箱

        //基本类型转类类型  装箱操作  (inbox)
		int a=300;
		Integer b = new Integer(300);
		
		double c=23.5;
		Double d=new Double(c);
		
		//类类型转成基本类型    拆箱操作  (outbox)
		int w = b.intValue();
		double z = d.doubleValue();

b.自动装箱和拆箱

(因为基本类型和类类型之间的换转操作频繁,SUN 公司在高版本的 JDK 中提供了自动装箱和拆箱操作,由编译器帮助你书写转换代码。) 

        //自动装箱
		Integer m=300; //Integer m = new Integer(300);

		//自动拆箱
		int n=m; // int n = m.intValue();

 在JDK5 以上版本才支持自动装箱和拆箱操作。

3.个人使用经验分享

对于包装类型和基本类型的选择,个人强力推荐使用包装类型。因为包装类型和基本类型相比,功能强大许多,并且占用的空间大小是相差不多的。如果读者对于这一点有疑惑,可以看我之前的java对象在内存中的分析就会知道,两个对象之间的大小比较,比的是它们的实例属性,查看源码我们可以知道,包装类类型只有一个实例属性,因此与基本类型相差不大,并且包装类实例储存于内存的堆中,包装类代码存于内存堆中的代码区中,堆的空间是非常大的,因此在开发中使用包装类类型代替基本类型是明智的选择。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值