您的位置:首页 > 编程语言 > Java开发

Java中int、String相互转换

2012-08-17 17:04 323 查看
一、int转换成String方法:

方法1

int i=10;

String s=""+i;

这是利用java的toString机制来做的转换,任何类型在和String相加的时候,都会先转换成String。

方法2

int i=10;

String s=String.valueOf(i);

这是利用String类提供的工厂方法来做的转换。

1.) String s = String.valueOf(i);

2.) String s = Integer.toString(i);

3.) String s = "" + i;

哪种方法好?

第一种?比较方便。

第二种?比较高效。

下面是一段测试程序。

Random ra=new Random(new java.util.Date().getTime());

String tmp=null;

int runtimes=1000000;

int range=50;

for (int i = 0; i <runtimes; i++) {

tmp=String.valueOf(ra.nextInt(range));

}

for (int i = 0; i <runtimes; i++) {

tmp = ""+ra.nextInt(range);

}

其结果,第一个循环只用了0.841秒,而第二个,则用了2.624秒。

这是因为String类是一个不可变对象,这就使得String类可以随意的重用,而不会有问题。

事实上在系统内部是有一个String对象的缓冲池,当使用String.valueOf方法的时候,会尽

可能的从这个池中取出符合条件的对象。

所以,请尽可能的使用第二种方法来做转换,同样的情况也适用于float, double, byte等

类型向String转换的情况。

二、String转换成int方法:

s="12345";

int i;

第一种方法:i=Integer.parseInt(s);

第二种方法:i=Integer.valueOf(s).intValue();

方法一:直接使用静态方法,不会产生多余的对象,但会抛出异常

方法二:Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象

这里顺便说下i = Integer.parseInt([String],[int radix])

例如:

String str="123",

int i = Integer.parseInt(str,8),

后面的参数表示当str被看作是多少进制时.i所得到的值(i 是10进制)

比如i =Integer.parseInt(str,5).i = 38.表示 1*5*5+2*5+3

博文来源:/article/7096269.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: