Java知多少(24)包装类、拆箱和装箱详解
这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了 Object 类的特性,要转换为 String 类型(经常有这种需要)时只要简单调用 Object 类中定义的toString()即可,而基本数据类型转换为 String 类型则要麻烦得多。为解决此类问题 ,Java为每种基本数据类型分别设计了对应的类,称之为包装类(Wrapper Classes),也有教材称为外覆类或数据类型类。
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
char | Character |
float | Float |
double | Double |
boolean | Boolean |
每个包装类的对象可以封装一个相应的基本类型的数据,并提供了其它一些有用的方法。包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变。
基本类型和对应的包装类可以相互装换:
- 由基本类型向对应的包装类转换称为装箱,例如把 int 包装成 Integer 类的对象;
- 包装类向对应的基本类型转换称为拆箱,例如把 Integer 类的对象重新简化为 int。
包装类的应用
八个包装类的使用比较相似,下面是常见的应用场景。
1) 实现 int 和 Integer 的相互转换
可以通过 Integer 类的构造方法将 int 装箱,通过 Integer 类的 intValue 方法将 Integer 拆箱。例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int m = 500; 4 Integer obj = new Integer(m); // 手动装箱 5 int n = obj.intValue(); // 手动拆箱 6 System.out.println("n = " + n); 7 8 Integer obj1 = new Integer(500); 9 System.out.println("obj 等价于 obj1?" + obj.equals(obj1)); 10 } 11 }
运行结果:
n = 500
obj 等价于 obj1?true
2) 将字符串转换为整数
Integer 类有一个静态的 paseInt() 方法,可以将字符串转换为整数,语法为:
1 parseInt(String s, int radix);
s 为要转换的字符串,radix 为进制,可选,默认为十进制。
下面的代码将会告诉你什么样的字符串可以转换为整数:
1 public class Demo { 2 public static void main(String[] args) { 3 String str[] = {"123", "123abc", "abc123", "abcxyz"}; 4 5 for(String str1 : str){ 6 try{ 7 int m = Integer.parseInt(str1, 10); 8 System.out.println(str1 + " 可以转换为整数 " + m); 9 }catch(Exception e){ 10 System.out.println(str1 + " 无法转换为整数"); 11 } 12 } 13 } 14 }
运行结果:
123 可以转换为整数 123
123abc 无法转换为整数
abc123 无法转换为整数
abcxyz 无法转换为整数
3) 将整数转换为字符串
Integer 类有一个静态的 toString() 方法,可以将整数转换为字符串。例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int m = 500; 4 String s = Integer.toString(m); 5 System.out.println("s = " + s); 6 } 7 }
运行结果:
s = 500
自动拆箱和装箱
上面的例子都需要手动实例化一个包装类,称为手动拆箱装箱。Java 1.5(5.0) 之前必须手动拆箱装箱。
Java 1.5 之后可以自动拆箱装箱,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。例如:
1 public class Demo { 2 public static void main(String[] args) { 3 int m = 500; 4 Integer obj = m; // 自动装箱 5 int n = obj; // 自动拆箱 6 System.out.println("n = " + n); 7 8 Integer obj1 = 500; 9 System.out.println("obj 等价于 obj1?" + obj.equals(obj1)); 10 } 11 }
运行结果:
n = 500
obj 等价于 obj1?true
自动拆箱装箱是常用的一个功能,需要重点掌握。
Java知多少(上)
Java知多少(中)
Java知多少(下)
转载于:https://www.cnblogs.com/Coda/p/4391219.html
Java知多少(24)包装类、拆箱和装箱详解相关推荐
- Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- java中byte装箱和装箱_Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备"对象"的特性--不携带属性.没有方法可调用. 沿用它们只是为了迎合 ...
- 包装类------拆箱与装箱
1.面向对象 包装类型 boolean java.long.Boolean byte java.long.Byte short java.long.Short int java.long.Int ...
- java 基本数据类型的自动拆箱与装箱
--> -128~127之间的特殊性.为什么要这样设计,好处? --> 享元模式(Flyweight Pattern):享元模式的特点是,复用我们内存中已存在的对象,降低系统创建对象实 ...
- java装箱和拆箱的意义_java的自动拆箱和装箱是每个程序员都要知道的
自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西. 自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动 ...
- Java包装类的拆箱和装箱是怎么回事?
什么是自动装箱和拆箱 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. ...
- Java中的拆箱与装箱
我们先来了解一下拆箱与装箱的概念: 装箱:将基本数据类型转换为包装类: 拆箱:将包装类转换为基本数据类型 我们来看两串代码: Integer b1 = 127;Integer b2 = 127;Sys ...
- java中的自动拆箱和装箱(以及NEP问题)
java中的自动拆箱和装箱 1.回顾知识点 java中的8种基本数据类型,可以分为三类 字符类型 char 布尔类型 boolean 整数类型 byte , short , int , long 浮点 ...
- java double 装箱_Java自动拆箱和装箱
一.什么是装箱/拆箱 在讲之前,得先提一下为什么两个概念:基本数据类型及其包装类,我们都知道Java是一种面向对象的语言,但是Java中的基本数据类型是不面向对象的,这时在使用中便会存在诸多的不便,为 ...
最新文章
- java 项目加载dll文件,在eclipse java项目中加载dll文件
- java贪心算法 区间调度_贪心算法-区间调度问题解之证明(示例代码)
- 提权学习之旅——Linux操作系统提权
- redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper
- 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
- 64位程序怎么判断指针是否有效_AArch64应用程序级编程模型
- webstorm 左侧文件目录树(不显示,怎么办?) - 设置篇
- 7.1 elementui的radio无法选中问题
- c++局部对象是什么_什么是Java内部类?
- 用char*作为map的key
- Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等
- 几何布朗运动模拟 MATLAB实现
- python正则表达式提取字符串中的书名_使用python正则表达式从字符串中提取名称...
- 计算机 打印机型号编码不可用,win10系统查看打印机属性中描述不可用的解决方法...
- iOS 查看Realm数据库表
- EasyExcel导出自定义下拉数据集的Excel模板文件
- 答题卡识别任务--opencv python(附代码)
- MSP432E401Y-按键中断点灯
- 瑞康医药与亚马逊云科技达成战略合作,全国上百家子公司业务上云
- pdf怎么分割成多个文件?有两种方式
热门文章
- 怎么添加流程图画布_工作流程图软件,教你绘制简单的工作流程图!
- Calendar的api方法
- eclipse修改字体大小
- 英语学习笔记2019-10-25
- 安卓案例:利用相对布局实现注册页面
- 【BZOJ1188】分裂游戏,博弈
- 【BZOJ3223】文艺平衡树,Splay反转区间
- bzoj3533 [Sdoi2014]向量集 可持久化凸包+二分
- 【英语学习】【WOTD】doldrums 释义/词源/示例
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(2) - 8086/16位指令格式概述