浅谈Java的包装类
一、什么是Java包装类
所谓Java包装类,就是将Java中的8种基本数据类型分别包装成为类的形式。包装类与基本数据类型的对应关系如下表所示。
基本数据类型 |
包装类 |
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
其中,Byte、Short、Integer、Long、Float、Double是Number的子类,Character和Boolean是Object的子类。
二、为什么会有Java包装类
Java是一门面向对象的编程语言,提倡“一切皆对象”,而Java中的基本数据类型却不是对象,这就导致当我们要对基本数据类型进行操作的时候会存在诸多不便,比如说,我们要将整型数据转换为字符串,或者将字符串转换为整型、浮点型数据,或者获取某个整数的二进制、八进制、十六进制等等,都需要我们站在对象的角度进行操作,因此将基本数据类型包装成类,以便把基本数据类型当做对象来进行处理。
三、装箱与拆箱——实现基本数据类型与包装类之间的相互转换
基本数据类型和包装类之间的转换是通过装箱与拆箱来实现的。包装类提供了装箱和拆箱的方法,例如:
通过包装类的构造方法,我们可以实现装箱
Integer a = new Integer(6);//装箱
通过包装类的拆箱方法,我们可以实现拆箱
Float a = new Float(66.6f);//装箱
float b = a.floatValue();//拆箱
在JDK1.5之前,装箱与拆箱需要通过以上方式手动实现,在JDK1.5之后,Java提供了自动装箱和拆箱机制,例如:
Integer i = 60; //自动装箱
Float f = 66.6f;//自动装箱
int a = i;//自动拆箱
Float b = f;//自动拆箱
四、包装类的应用
在实际应用中,通过包装类,我们可以将字符串变为基本数据类型,例如:
int i = Integer.parseInt(“123”);//将”123”装换为int类型的数据
float f = Float.parseFloat(“456”);//将”456”转换为float类型的数据
也可以将基本数据类型变为字符串,例如:
String s = Integer.toString(123);//将123装换为字符串
还可以进行二进制、八进制、十进制、十六进制之间的转换,例如:
int m = 10;
String binaryString = Integer.toBinaryString(m);//获取m的二进制形式
String hexString = Integer.toHexString(m);//获取m的十六进制形式
String octalString = Integer.toOctalString(m)//获取m的八进制形式
除此之外,包装类提供的API还可以完成很多操作。
五、总结
Java的包装类是站在面向对象的角度上对基本数据类型的封装,是为了在程序中用面向对象的思想去操作基本数据类型。
浅谈Java的包装类的更多相关文章
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
- 浅谈java性能分析
浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...
- 浅谈Java中的深拷贝和浅拷贝(转载)
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...
- !! 浅谈Java学习方法和后期面试技巧
浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...
- 浅谈Java中的深拷贝和浅拷贝
转载: 浅谈Java中的深拷贝和浅拷贝 假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(bool ...
随机推荐
- UI-UIImageView和Image的区别
1.UIImageView图片视图控件 继承于UIView 用于显示图片在应用程序中 2.UIImage 是将真实图片文件转化为程序中的图片,然后3.UIImageView是Image的载体,负责显示 ...
- js封常用类
ajax刷 下拉框联动 /*基础初始化类*/ $.EBC = { setCourse:function(obj){ $(obj).empty(); $.get('../Index/getCoursei ...
- Linux下的ntpd和ntpdate
两者有个比较实质性的差异是,ntpd在实际同步时间时是一点点的校准过来时间的,最终把时间慢慢的校正对.而ntpdate不会考虑其他程序是否会阵痛,直接调整时间.一个是校准,一个是调整.另外ntpd 在 ...
- C#:基于WMI查询USB设备
来源:http://blog.csdn.net/jhqin/article/details/6734673 /* ------------------------------------------- ...
- 【hibernate】之标注枚举类型@Enumerated(转载)
实体Entity中通过@Enumerated标注枚举类型,例如将CustomerEO实体中增加一个CustomerType类型的枚举型属性,标注实体后的代码如下所示. @Entity @Table(n ...
- python 深入理解 赋值、引用、拷贝、作用域
在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个 ...
- Learning Core Data 1
What is Core Data? If you want to build anything beyond the most simplistic apps for iOS, you’ll nee ...
- sql server中的左连接与右连接的简便写法
左连接 *=(左表中的数据全部显示出来,右表中没有相关联的数据显示null) select Users.*,Department.name as DepartmentName from Users,D ...
- 偷懒小工具 - SSO单点登录通用类(可跨域)(上)
目的 目的很明确,就是搭建单点登录的帮助类,并且是一贯的极简风格(调用方法保持5行以内). 并且与其他类库,关联性降低.所以,不使用WebAPI或者WebService等. 思路 因为上次有朋友 ...
- POJ 3261 Milk Patterns (求可重叠的k次最长重复子串)+后缀数组模板
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7586 Accepted: 3448 Cas ...