随笔:Java中String、int互转,JavaScript中String、int互转
Java:
int 转 String
1. String.valueOf(i);
2. Integer.toString(i);
3. i+"";
解析:
1.第一种方法:String.valueOf(int i);
这种方式我们可以查看源码:
哦豁,原来这里面封装的就是第二种,我们要用的方法,所以这两种方法的效率差不多。
2.第二种就是我们调取 Integer 类里面的静态方法转成 String 类型
3.i + "" 这种方式说实话看的是真的简单,一般有时候也会用这种方法,因为好记啊。但是这种方法的运行效率会远远低于前两种方法,为什么?
因为在 Java 中对运算符 “+” 做了重载,主要方式是使用StringBuilder或者StringBuffer来实现的,类似于:
StringBuilder sb = new StringBuilder();
sb.append("");
sb.append(i);
String strI = sb.toString();
’+’运算符的执行效率不高的原因应该就在之前的new StringBuilder等操作和之后的StringBuilder.toString等操作。
具体细节可以参考这篇博客:[https://blog.csdn.net/self\_study/article/details/50880110][https_blog.csdn.net_self_study_article_details_50880110]
运行时间:
E/time: i+"" = 257
E/time: String.valueOf(i) = 140
E/time: Integer.toString(i) = 159
这里还有一个点,就是当 i 为正数且小于 100 的时候,前两种方法会调用函数中的数组 TENS 和 ONES 来进行快速计算:
/** TENS[i] contains the tens digit of the number i, 0 <= i <= 99. */
private static final char[] TENS = {
'0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
'1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
'2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
'3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
'4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
'5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
'6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
'7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
'8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
'9', '9', '9', '9', '9', '9', '9', '9', '9', '9'
};
/** Ones [i] contains the tens digit of the number i, 0 <= i <= 99. */
private static final char[] ONES = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
};
每个数组都有 100 的长度,都是用来处理0~99这100个数字
所以我们改一下变量的值修改为10,会明显发现运行时间的缩短:
E/time: i+"" = 199
E/time: String.valueOf() = 7
E/time: Integer.toString() = 6
String 转 int
1. i=Integer.parseInt(s);//默认十进制
2. i=Integer.valueOf(s).intValue();
注意:String 转int要注意的是,因为可能字符串种存在非数字,因此要抛异常。
直接调用会默认 10 进制
这里 valueOf 就是默认调用的十进制的 parseInt 方法
JavaScript
int 转 String
js 的就比较简单了,我也看⑧见源码
var x=100
a = x.toString()
String 转 int
var str='1250' ;
alert( Number(str) ); //得到1250
alert(parseInt(str)); //得到1250
var str1='00100';
alert( Number(str1) ); //得到100
alert(parseInt(str1)); //得到64
还没有评论,来说两句吧...