随笔:Java中String、int互转,JavaScript中String、int互转

灰太狼 2024-04-18 10:31 138阅读 0赞

Java:

int 转 String

  1. 1. String.valueOf(i);
  2. 2. Integer.toString(i);
  3. 3. i+"";

解析:

  1. 1.第一种方法:String.valueOf(int i);
  2. 这种方式我们可以查看源码:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODY2NTE2_size_16_color_FFFFFF_t_70
哦豁,原来这里面封装的就是第二种,我们要用的方法,所以这两种方法的效率差不多

  1. 2.第二种就是我们调取 Integer 类里面的静态方法转成 String 类型
  2. 3.i + "" 这种方式说实话看的是真的简单,一般有时候也会用这种方法,因为好记啊。但是这种方法的运行效率会远远低于前两种方法,为什么?
  3. 因为在 Java 中对运算符 “+” 做了重载,主要方式是使用StringBuilder或者StringBuffer来实现的,类似于:
  4. StringBuilder sb = new StringBuilder();
  5. sb.append("");
  6. sb.append(i);
  7. String strI = sb.toString();
  8. ’+’运算符的执行效率不高的原因应该就在之前的new StringBuilder等操作和之后的StringBuilder.toString等操作。
  9. 具体细节可以参考这篇博客:[https://blog.csdn.net/self\_study/article/details/50880110][https_blog.csdn.net_self_study_article_details_50880110]

运行时间:

  1. E/time: i+"" = 257
  2. E/time: String.valueOf(i) = 140
  3. E/time: Integer.toString(i) = 159

这里还有一个点,就是当 i 为正数且小于 100 的时候,前两种方法会调用函数中的数组 TENS 和 ONES 来进行快速计算:

  1. /** TENS[i] contains the tens digit of the number i, 0 <= i <= 99. */
  2. private static final char[] TENS = {
  3. '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
  4. '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
  5. '2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
  6. '3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
  7. '4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
  8. '5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
  9. '6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
  10. '7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
  11. '8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
  12. '9', '9', '9', '9', '9', '9', '9', '9', '9', '9'
  13. };
  14. /** Ones [i] contains the tens digit of the number i, 0 <= i <= 99. */
  15. private static final char[] ONES = {
  16. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  17. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  18. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  19. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  20. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  21. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  22. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  23. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  24. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  25. '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  26. };

每个数组都有 100 的长度,都是用来处理0~99这100个数字

所以我们改一下变量的值修改为10,会明显发现运行时间的缩短:

  1. E/time: i+"" = 199
  2. E/time: String.valueOf() = 7
  3. E/time: Integer.toString() = 6

String 转 int

  1. 1. i=Integer.parseInt(s);//默认十进制
  2. 2. i=Integer.valueOf(s).intValue();

注意:String 转int要注意的是,因为可能字符串种存在非数字,因此要抛异常。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODY2NTE2_size_16_color_FFFFFF_t_70 1

直接调用会默认 10 进制

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODY2NTE2_size_16_color_FFFFFF_t_70 2

这里 valueOf 就是默认调用的十进制的 parseInt 方法

JavaScript

int 转 String

js 的就比较简单了,我也看⑧见源码

  1. var x=100
  2. a = x.toString()

String 转 int

  1. var str='1250' ;
  2. alert( Number(str) ); //得到1250
  3. alert(parseInt(str)); //得到1250
  4. var str1='00100';
  5. alert( Number(str1) ); //得到100
  6. alert(parseInt(str1)); //得到64

发表评论

表情:
评论列表 (有 0 条评论,138人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java Xml与对象的

    在java开发中我们经常会遇到Xml与对象互相转换的情况,尤其是针对WebService访问时会涉及到xml与对象的转换问题。目前可以用于xml与对象互转的方式有很多这里采用j

    相关 java 8 日期

    一.简述 Date对象表示特定的日期和时间,而LocalDate(Java8)对象只包含没有任何时间信息的日期。 因此,如果我们只关心日期而不是时间信息,则可以在Dat