Java基本数据类型的包装类

数据类型包装类

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

包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:

包装类的用途

对于包装类说,这些类的用途主要包含两种:

a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法(这些操作方法的作用是在基本类型数据、包装类对象、字符串之间提供转化!)。

所有的包装类(Wrapper Class)都有共同的方法。

int和Integer类之间的转换

在实际转换时,使用Integer类的构造方法和Integer类内部的intValue方法实现这些类型之间的相互转换,实现的代码如下:

Integer类内部的常用方法

在Integer类内部包含了一些和int操作有关的方法,下面介绍一些比较常用的方法:

1.parseInt方法

public static int parseInt(String s)

该方法的作用是将数字字符串转换为int数值。在以后的界面编程中,将字符串转换为对应的int数字是一种比较常见的操作。

使用示例如下:

则int变量n的值是123,该方法实际上实现了字符串和int之间的转换,如果字符串都包含的不是都是数字字符,则程序执行将出现异常。(说明:异常的概念将在后期进行讲述)

另外一个parseInt方法:

public static int parseInt(String s, int radix)

则实现将字符串按照参数radix指定的进制转换为int。

使用示例如下:

这样可以实现更灵活的转换。

1.toString方法

public static String toString(int i) 该方法的作用是将int类型转换为对应的String类型。使用示例代码如下:

则字符串s的值是”1000”。

自动拆箱和装箱

自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中。

自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法。

自动装箱与拆箱的功能事实上是编译器来帮您的忙,编译器在编译时期依您所编写的语法,决定是否进行装箱或拆箱动作。

例如:

Integer i = 100;

相当于编译器自动为您作以下的语法编译:

Integer i = new Integer(100);

所以自动装箱与拆箱的功能是所谓的“编译器蜜糖”(Compiler Sugar),虽然使用这个功能很方便,但在程序运行阶段您得了解Java的语义。

例如下面的程序是可以通过编译的:

Integer i = null;

int j = i;

这样的语法在编译时期是合法的,但是在运行时期会有错误。

因为这种写法相当于:

Integer i = null;

int j = i.intValue();

null表示i没有参考至任何的对象实体,它可以合法地指定给对象参考名称。

由于实际上i并没有参考至任何的对象,所以也就不可能操作intValue()方法,这样上面的写法在运行时会出现NullPointerException错误。

本文分享自微信公众号 - Java研发军团(ityuancheng)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术从心

zookeeper的安装和demo操作

之前写过一遍但由于排版的问题将那边文章重新排版编排了一下,后续再研究下zookeeper的监听图片复制

13680
来自专栏海仔技术驿站

java中线程池的几种实现方式

多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力.

23950
来自专栏海仔技术驿站

并发编程

线程安全 线程安全概念 : 当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的. ...

7330
来自专栏海仔技术驿站

最全的Spring注解详解

@Configuration : 配置类 == 配置文件,告诉Spring这是一个配置类 @ComponentScan(value="com.atguigu"...

9840
来自专栏技术从心

CPU占用过高定位?

在常见的面试的过程中,面试官都会问你一下常用的的linux命令,如果一上的来就说一些 cd.. , cp ls , vi, mkdir, rm -rf 什么的是...

15240
来自专栏海仔技术驿站

Swing的介绍

Swing是一个为java设计的GUI工具包.Swing是JAVA基础类的一部分.Swing包括了图形用户界面(GUI)器件如 : 文本框,按钮,分隔窗格和表....

9420
来自专栏海仔技术驿站

设计模式

静态内部类实现方式(也是一种赖加载方式) public class SingletonDemo04 { private static class Singl...

11740
来自专栏挨踢小子部落阁

全面理解Javascript闭包和闭包的几种写法及用途

好久没有写博客了,过了一个十一长假都变懒了,今天总算是恢复状态了。好了,进入正题,今天来说一说javascript里面的闭包吧!本篇博客主要讲一些实用的东西,...

6430
来自专栏技术从心

重写hashcode()和equals()

hashcode()和equals()都继承于Object,并且Object都提供了默认实现,具体可以参考Java根类Object的方法说明。关于Java中Ha...

8910
来自专栏技术从心

如何做好需求分析和设计?

  做一个需求第一步就是分析需求了,这一步也是开发流程中最重要的一步。记住,这里说的分析需求不是产品经理分析的需求,而是我们开发拿到“产品需求”之后做的二次分析...

16610

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励