java中装箱,拆箱
(1)包装类
java中不能定义基本数据类型的对象,但是提供了基本数据类型的包装类来解决这一问题,例如int类型的包装类Integer, 包装类的常用方法有Integer.ParseInt()方法类将int类型的数据和String类型的数据做强转。
(2)装箱和拆箱
在java中,数据类型总共可分为两大种,基本数据类型(值类型)和类类型(引用数据类型)。基本类型的数据不是对象,不能作为对象调用其toString()、hashCode()、getClass()、equals()等等方法。
所以在java中,针对8种基本数据类型,提供了针对每个基本数据类型的包装类。如下:
INDEX 基本数据类型 包装类
1 int Integer
2 char Character
3 float Float
4 double Double
5 byte Byte
6 short Short
7 long Long
8 boolean Boolean
所谓装箱,就是把基本类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int型包装成Integer类的对象,或者把double包装成Double,等等。
所谓拆箱,就是跟装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为值类型的数据。
//JDK1.5 之前使用手动方式进行装箱 和拆箱的 操作
public class IntegerDemo
{
public static void main (String []agrs)
{
int i=10;
Integer j=new Integer(i); //手动装箱操作
int i1=j.intValue();//手动拆箱操作
System.out.println(i1*i1);
}
}; //output:100
//JDK1.5之后可自动进行的装箱和拆箱的操作,比较方便
public class IntegerDemo02
{
public static void main (String []agrs)
{
int i=10
Integer j=i;
int k=j;
System.out.println(++k);
}
}; //output:11
包装类的另外一个比较有用的是可以将String 字符串类型转换为相应的基本数据类型。下面以将String转为int为例:
public class IntegerDemo04
{
public static void main (String[] args)
{
String str="1500";
try
{
int i=Integer.parseInt(str);
System.out.println(++i);
}
catch (Exception e)
{
e.printStackTrace(); //打印异常信息
}
}
};// output: 1501
如果在上述方法中str="15er00";则在调用parseInt方法时候会产生NumberFormatException异常,见JDK API中对该方法的描述:
public static int parseInt(String s) throws NumberFormatException
将字符串参数作为有符号的十进制整数进行解析。除了第一个字符可以是用来表示负值的 ASCII 减号 '-' ('\u002D') 外,字符串中的字符都必须是十进制数字。返回得到的整数值,就好像将该参数和基数 10 作为参数赋予 parseInt(java.lang.String, int) 方法一样。
参数:
s - 包含要解析的 int 表示形式的 String。
返回:
用十进制参数表示的整数值。
抛出:
NumberFormatException - 如果字符串不包含可解析的整数。
总结在包装类中将String转换为包装类所对应的基本数据类型的方法如下,所有的方法都将抛出NumberFormatException异常,需要在调用时候使用try ..catch 进行捕获
index 包装类 返回的基本数据类型 方法名
1 Integer int static int Integer.parseInt(Sting s)
2 Character char static char Character.parseChar(String s)
3 Float float static float Float.parseFloat(String s)
4 Dobule double static double Double.parseDouble(String s)
5 Byte byte static byte Byte.parseByte(String s)
6 Short short static short Short.parseShort(String s)
7 Long long static long Long.parseLong(String s)
8 Boolean boolean static boolean Boolean.parseBoolean(String s)
java中装箱,拆箱的更多相关文章
- java自动装箱拆箱总结
对于java1.5引入的自动装箱拆箱,之前只是知道一点点,最近在看一篇博客时发现自己对自动装箱拆箱这个特性了解的太少了,所以今天研究了下这个特性.以下是结合测试代码进行的总结. 测试代码: int a ...
- JAVA自动装箱拆箱与常量池
java 自动装箱与拆箱 这个是jdk1.5以后才引入的新的内容,作为秉承发表是最好的记忆,毅然决定还是用一篇博客来代替我的记忆: java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的 ...
- 读书笔记-C#中装箱拆箱性能
前言 最近在看王涛大神的<你必须知道的.NET(第二版)>一书,嗯,首先膜拜一下…. 在书中的第五章-品味类型中,对装箱与拆箱一节感触很深,概念本身相信每一个程序猿都不陌生,装 ...
- Java 自动装箱/拆箱
自动装箱/拆箱大大方便了基本类型(8个基本类型)数据和它们包装类的使用 自动装箱 : 基本类型自动转为包装类(int >> Integer) 自动拆箱: 包装类自动转为基本类型(Integ ...
- 聊聊Java中的拆箱和装箱操作
在刷谷歌面试题的过程中,发现一道有意思的题目,以前没有特别注意,忽略了一些东西,特此记录. 题目要求输出以下代码的结果: public class MyTest { public static voi ...
- Java自动装箱拆箱
一.装箱.拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱.而如果一个Integer对象被放到需要in ...
- 深入理解Java自动装箱拆箱机制
1.自动装箱与拆箱的定义 装箱就是自动将基本数据类型转换为包装器类型(int-->Integer): 拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int). Java中 ...
- 那些年一起踩过的坑 — java 自动装箱拆箱问题
坑在哪里? 我们都知道Java的八种基本数据类型:int, short, long, double, byte, char, float, boolean 分别有各自对应的包装类型:Integ ...
- java的装箱拆箱是什么?
是什么? 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱. 为什么 把 ...
- java之装箱拆箱
参考http://how2j.cn/k/number-string/number-string-wrap/22.html 封装类 所有的基本类型,都有对应的类类型 比如int对应的类是Integer ...
随机推荐
- Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解
☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...
- .NET 面试题汇总(带答案)
1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK.主键.唯一键.外键.非空字段)实现,这种方式的效率最好:其次用触发器,这种方式可以保证无论何 ...
- jwt与springcloud联用
图片来源与博客:https://www.jianshu.com/p/99a458c62aa4 分布式权限管理参考:https://blog.csdn.net/qq_36236890/article/d ...
- Kubernetes【K8S】(五):Service
Service概念 Kubernetes Service定义了一个Pod的逻辑分组,一种可以访问它们的策略.这组Pod能被Service访问到,通常是通过label Selector. Service ...
- Docker(一):Docker安装
简介 Docker是dotcloud公司开源的一款产品,主要基于PAAS平台为开发者提供服务.是解决运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术. Docker组件 ...
- Java读取系统默认时区
工作中,遇到一个Java读取默认时区的问题,后来看了openjdk的源码,大致整理一下过程 public class Test { public void test(){ TimeZone.getDe ...
- 精尽Spring MVC源码分析 - HandlerAdapter 组件(二)之 ServletInvocableHandlerMethod
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...
- [水题日常]UVA11181 条件概率(Probability|Given)
话说好久没写blog了 好好学概率论的第一天,这题一开始完全不会写,列出个条件概率的公式就傻了,后来看着lrj老师的书附带的代码学着写的- 因为我比较弱智 一些比较简单的东西也顺便写具体点或者是按照书 ...
- 题解 P1579 【哥德巴赫猜想(升级版)】
蒟蒻AC代码,讲解请看题解中. 1 #include<bits/stdc++.h> 2 #include<iostream> 3 #include<cmath> / ...
- [BUUCTF] MISC-九连环
0x01 知识点 伪加密 steghide提取信息 0x02 伪加密的判断 首先,在winhex分析,发现有4个zip文件的文件头和2个文件尾,有完整文件头尾那么可以直接修改后缀为zip解压, 查看一 ...