JAVA菜鸟入门篇 - Java基本数据类型常用包装类(二十六)

java常用类主要有:

  - 基本数据类型的包装类(Wrapper class)
  - 字符串相关类
  - 时间处理类
  - Math类
  - File类

先从基本数据类型的包装类开始学习。


 基本数据类型的包装类


   为什么需要包装类?


    - JAVA并不是纯面向对象的语言。Java语言是一个面向对象的语言,但是Java的基本数据类型却不是面向对象的。但是我们在实际使用中经常需要将基本数据转化成对象,便于操作。比如:集合的操作中,这是,我们就需要将基本类型数据转化为对象。


    包装类均位于java.lang包,使用时不需要导入,系统自动导入。Java中的8个包装类分别是:Byte, Short, Integer, Long, Float, Double, Character, Boolean,它们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。


包装类和基本数据类型的对象关系:



    如何使用包装类?


     包装类的作用:


     - 提供:字符串、基本数据类型、对象之间互相转化的方式!

     - 包含每种基本数据类型的相关属性,如:最大值、最小值等

由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。Integer类继承Number父类。Integer类的API文档

         1、实现int和Integer类之间的转换(该过程中使用了自动装箱和自动拆箱的原理,后面会介绍

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

        int n = 10;

        Integer in = new Integer(100);

        //将int类型转换为Integer类型

        Integer in1 = new Integer(n);

        //将Integer类型的对象转换为int类型

        int m = in.intValue();

         2、Integer类内部的常用方法

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

                a、parseInt方法

                   public static int parseInt(String s)

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

                   String s = “123”;

                   int n = Integer.parseInt(s);

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

另外一个parseInt方法:

         public static int parseInt(String s, int radix)

则实现将字符串按照参数radix指定的进制转换为int,使用示例如下:

         //将字符串”120”按照十进制转换为int,则结果为120

         int n = Integer.parseInt(“120”,10);

         //将字符串”12”按照十六进制转换为int,则结果为18

         int n = Integer.parseInt(“12”,16);

         //将字符串”ff”按照十六进制转换为int,则结果为255

         int n = Integer.parseInt(“ff”,16);

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

                b、toString方法

                   public static String toString(int i)

                   该方法的作用是将int类型转换为对应的String类型。

                   使用示例代码如下:

                       int m = 1000;

                       String s = Integer.toString(m);

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

    其他有关Integer类相关的方法和属性可以点击Integer类的API文档查看,在进行包装类与基本数据类型之间进行数值之间的转化时,我们经常使用的自动装箱和自动拆箱。这是JDK5.0的新增的特性。

自动装箱和自动拆箱(auto-boxing & auto-unboxing)

JDK5.0的一个新特性是自动装箱和自动拆箱。

 自动装箱
 - 基本类型就自动地封装到与它相似类型的包装中,如:Integer i = 100;
 - 本质上是,编译器编译时自动添加:Integer i = new Integer(100);

 自动拆箱
 - 包装类对象自动转换成基本数据类型。如:int a = new Integer(100);

 - 本质是上,编译器编译时自动添加:int a = new Integer(100).intValue();


在Integer类中自动装箱和自动拆箱问题中遇到的问题:

Integer  d = 1234;
		Integer  d2 = 1234;
		
		System.out.println(d==d2);
		System.out.println(d.equals(d2));
		
		System.out.println("###################"); 
		Integer d3 = -100;    //[-128,127]之间的数,仍然当做基本数据类型来处理。
		Integer d4 = -100;
		System.out.println(d3==d4);
		System.out.println(d3.equals(d4));

显示结果:

false
true
###################
true
true


原因:查看内部实现代码可知,Integer类有一个缓存问题,它会缓存-128~127之间的整数。也就是说如果将-128~127之间的数值赋值给Integer类对象,在比较两个对象(d3==d4)时比较的是两个对象的数值。超过这个范围比较的是对象的内存地址。


参考文献:

http://www.apihome.cn/api/android/Integer.html(Integer的API文档)

http://www.cnblogs.com/mengdd/archive/2013/01/21/2869921.html




  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值