java中基本数据类型的包装类以及基本数据类型之间的转换

java基本数据类型包装类  

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

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

包装类对应表

基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

    在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。

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

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

    b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

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

    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”。

    另外一个toString方法则实现将int值转换为特定进制的字符串:

    public static int parseInt(String s, int radix)

    使用示例代码如下:

    int m = 20;

    String s = Integer.toString(m);

    则字符串s的值是“14”。

    其实,JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下:

    //int类型会自动转换为Integer类型

    int m = 12;

    Integer in = m;

    //Integer类型会自动转换为int类型

    int n = in;

    所以在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换




java中字符串与其他数据类型之间的转换

在Java中提供了字符串与其他数据类型之间的转换,尤其是与基本数据类型和包装类间的转换,会被经常用到。 

1、将其他数据类型转换为字符串 

将其他数据类型转换为字符串存在两种方法:调用类的toString()方法和调用String类的valueOf()方法。 

(1)调用类的toString()方法。如果该类为基本数据的包装类,则可以使用带参数的或不带参数的toString()方法。 

不带参数的toString()方法为类的非静态方法,因此必须通过类对象进行调用。例如将一个Integer对象转换为字符串: 

Java代码
  1. Integer num = new Integer(300);
  2. System.out.println("result="+(num.toString()+200));

运行结果如下: 
result=300200 

带参数的toString()方法为类的静态方法,因此可以通过类直接进行调用。方法中的参数应为与包装类对应得基本数据类型变量或字面常数。例如转换一个float类型数据为字符串: 

Java代码
  1. float f=12.345f;
  2. System.out.println("result="+(Float.toString(f)+1.02f));

运行结果如下: 
result=12.3451.02 


通常情况下,不带参数的toString()方法用来将包装类数据转换为字符串,而带有参数的toString()方法则用来将基本数据类型转换为字符串。 
在Java中的java.lang.Object类中提供了一个不带参数的toString()方法,该方法返回当前对象的字符串表示,返回值的形式为类名+“@”+十六进制数表示对象的地址。所有从Object类派生的子类都可以调用toString()返回类对象的字符串表示,并且子类可以覆盖toString()方法来返回其他值。另外在一些情况下,系统会自动调用对象的toString()方法,例如print()方法和字符串“+”运算。例如: 

Java代码
  1. public class ConversionDemo1{
  2. public static void main(String args[]){
  3. ConversionDemo1 c=new ConversionDemo1();//创建ConversionDemo1类对象
  4. String s="输出:"+c;//系统会先调用c对象的toString()方法,然后再进行字符串“+”运算
  5. System.out.println(c);//系统会先调用c对象的toString()方法,然后输出方法的返回值
  6. System.out.println(s);
  7. }
  8. }

运行结果如下: 
ConversionDemo1@7d8a992f 
输出:ConversionDemo1@7d8a992f 

(2)调用String类的valueOf()方法。通过调用String类的valueOf()方法既可以将包装类型数据转换为字符串,也可以将基本数据类型或字面常量转换为字符串,另外,在转换其他引用类型对象时,等价于调用该对象的toString()方法。例如分别转换float型数据为字符串,转换Double类型数据为字符串,转换ConversionDemo2类对象为字符串: 

Java代码
  1. public class ConversionDemo2{
  2. public static void main(String args[]){
  3. float f = 45.678f;//定义一个float型变量,并赋值为45.678
  4. Double d = new Double(12.345);//创建一个Double对象
  5. ConversionDemo2 c=new ConversionDemo2();//创建一个ConversionDemo2类对象
  6. System.out.println(String.valueOf(f)+10);//调用String的valueOf(float f)方法转换float型数据为字符串,然后与整数10进行运算
  7. System.out.println(String.valueOf(d)+10);//调用String的valueOf(Object obj)方法转换Double对象为字符串,然后与整数10进行运算
  8. System.out.println(String.valueOf(c));//调用String的valueOf(Object obj)方法转换类对象c为字符串,然后输出
  9. }
  10. }

运算结果如下: 
45.67810 
12.34510 
ConversionDemo2@8dc8569 

Java中的基本数据类型都可以通过String中对应的valueOf()方法转换为字符串,然而在String类中并没有提供valueOf(byte b)和valueOf(short s)方法来转换byte和short型数据为字符串,但如下的方法调用是合法的: 

Java代码
  1. byte b='a';
  2. short s=123;
  3. System.out.println(String.valueOf(b));//输出结果:97
  4. System.out.println(String.valueOf(s));//输出结果:123

这是因为byte和short被自动转换为了int型,从而调用的是valueOf(int i)方法。 

2、将字符串转换为基本数据类型 

(1)通过包装类的parseXxx()方法将一个字符串转换为该包装类对应的基本数据类型,但要求字符串必须为数字形式,例如int num = Integer.parseInt("123");是合法的,而int num = Integer.paseInt("abc");则会抛出“java.lang.NumberFormatException:For input string:”abc””异常。 
各包装类所具有的parseXxx()方法如下表所示: 




注意:其中,parseBoolean()方法中的字符串参数取值为“True”(大小写均可)时,结果为True;否则结果为False。 

(2)通过包装类的对象调用xxxValue()方法。 
例如:int i = new Integer("123").intValue(); 
各包装类所具有的xxxValue()方法如下表2所示: 




通过表2可以看出:基本数据类型间除了boolean和char类型外,都可以相互转换,并且可以将包装类对象转换为对应的基本数据类型。

你可能感兴趣的:(JAVA)