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

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

[size=medium]1、将其他数据类型转换为字符串[/size]

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

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

不带参数的toString()方法为类的非静态方法,因此必须通过类对象进行调用。例如将一个Integer对象转换为字符串:
Integer num = new Integer(300);
System.out.println("result="+(num.toString()+200));

运行结果如下:
result=300200

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

运行结果如下:
result=12.3451.02
通常情况下,不带参数的toString()方法用来将包装类数据转换为字符串,而带有参数的toString()方法则用来将基本数据类型转换为字符串。
在Java中的java.lang.Object类中提供了一个不带参数的toString()方法,该方法返回当前对象的字符串表示,返回值的形式为[b]类名+“@”+十六进制数[/b]表示对象的地址。所有从Object类派生的子类都可以调用toString()返回类对象的字符串表示,并且子类可以覆盖toString()方法来返回其他值。另外在一些情况下,系统会自动调用对象的toString()方法,例如print()方法和字符串“+”运算。例如:
public class ConversionDemo1{
public static void main(String args[]){
ConversionDemo1 c=new ConversionDemo1();//创建ConversionDemo1类对象
String s="输出:"+c;//系统会先调用c对象的toString()方法,然后再进行字符串“+”运算
System.out.println(c);//系统会先调用c对象的toString()方法,然后输出方法的返回值
System.out.println(s);
}
}

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

[b](2)调用String类的valueOf()方法。[/b]通过调用String类的valueOf()方法既可以将包装类型数据转换为字符串,也可以将基本数据类型或字面常量转换为字符串,另外,在转换其他引用类型对象时,等价于调用该对象的toString()方法。例如分别转换float型数据为字符串,转换Double类型数据为字符串,转换ConversionDemo2类对象为字符串:
public class ConversionDemo2{
public static void main(String args[]){
float f = 45.678f;//定义一个float型变量,并赋值为45.678
Double d = new Double(12.345);//创建一个Double对象
ConversionDemo2 c=new ConversionDemo2();//创建一个ConversionDemo2类对象
System.out.println(String.valueOf(f)+10);//调用String的valueOf(float f)方法转换float型数据为字符串,然后与整数10进行运算
System.out.println(String.valueOf(d)+10);//调用String的valueOf(Object obj)方法转换Double对象为字符串,然后与整数10进行运算
System.out.println(String.valueOf(c));//调用String的valueOf(Object obj)方法转换类对象c为字符串,然后输出
}
}

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

Java中的基本数据类型都可以通过String中对应的valueOf()方法转换为字符串,然而在String类中并没有提供valueOf(byte b)和valueOf(short s)方法来转换byte和short型数据为字符串,但如下的方法调用是合法的:
byte b='a';
short s=123;
System.out.println(String.valueOf(b));//输出结果:97
System.out.println(String.valueOf(s));//输出结果:123

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

[size=medium]2、将字符串转换为基本数据类型[/size]

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

[img]http://dl.iteye.com/upload/attachment/320305/502a74eb-90d3-3993-9211-5e3d2b8ab812.jpg[/img]

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

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

[img]http://dl.iteye.com/upload/attachment/320310/714412c1-0927-3de9-8e6d-192cc27030ef.jpg[/img]

通过表2可以看出:基本数据类型间除了boolean和char类型外,都可以相互转换,并且可以将包装类对象转换为对应的基本数据类型。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值