随笔: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

运行时间:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值