前言

条条大路通罗马,但每条路是不同的,与其等待,不若研究研究~~

问题来源

最近做了很多OJ题,对于Java基本类型的转化,看似简单,但对其要求也更高了,不免需要简单加以研究,以便今后更好的食用~

两套方案

我们有下面两种解决方案:

策略A:
int i = 100;
Integer.toString(i);

策略B:
Integer i = 100;
i.toString();

策略C:
int i = 100;
String.valueOf(i);

哪一种比较好?

问题探究

如果大家用IDEA写策略B的话,你就会发现Integer那里是黄色的,也就是说不是最佳方案。
IJ推荐我们用策略A,理由是什么呢?
我们看一下源码(java.lang.Integer):

public static String toString(int i) {int size = stringSize(i);if (COMPACT_STRINGS) {byte[] buf = new byte[size];getChars(i, size, buf);return new String(buf, LATIN1);} else {byte[] buf = new byte[size * 2];StringUTF16.getChars(i, size, buf);return new String(buf, UTF16);}
}

再看看toString()吧:

private final int value;public String toString() {return toString(value);
}

我们恍然大悟:选择策略B的话需要先生成一个Integer对象(自动装箱),再调用其toString()方法,而其toString()还需要再调用toString(int i)方法,显得多此一举。

2020/1/27更新,补充一下策略C的源码:

public static String valueOf(int i) {return Integer.toString(i);
}

可以发现,String.valueOf()还是调用Integer.toString(int i)的,所以不如直接调用Integer.toString(int i)。

结论

A is better.


补几句话:
之前我为了让int变成String,写过这样的for循环:

for (Integer i = 0; i < num; i++) {String s = i.toString();
}

现在,就应该改改啦,嘿嘿~~

给大家拜个年嘞——
愿大家接下来的日子:所走之路,皆畅行无碍;所到之处,皆春暖花开;所爱之人,皆相随相伴。所求皆如愿,所行化坦途,祝大家新年快乐!


2020/1/27更新说明
A是最优方案,之前写错了,不好意思。
补充策略C,证实不如策略A。
另说,int+""的方式,基于字符串连接,效率不会很高。

【Java】如何较好地将int转化成String相关推荐

  1. java iterator 将int_ListIteratorlt;Egt; listIterator(int index)_Java.util包|WIKI教程

    ListIterator listIterator(int index) 描述 (Description) java.util.LinkedList.listIterator(int index)方法 ...

  2. java indexof int_Java Stack indexOf(Object, int)用法及代码示例

    Java.util.Stack.indexOf(Object element,int index)方法用于在此Stack中首次出现指定元素的索引,从索引开始向前搜索,如果找不到该元素,则返回-1.更正 ...

  3. Java中同时输入字符串和int类型出错的处理方式

    在Java中,如果输入int类型和字符串处理不当会产生错误,例如:如果先输入int类型,在输入字符串类型,如下代码: Scanner sc=new Scanner(System.in);int a=s ...

  4. java编译找不到符号 int age=in.nexint()_Java报错找不到符号,小白自学求大佬解决...

    import java.util.*;public class guess_1{public static void main(String[] args){Scanner in=new Scanne ...

  5. java转换为字符串_java – 如何从int转换为字符串?

    正常方式是Integer.toString(i)或String.valueOf(i). 串联将工作,但它是非常规的,可能是一个难闻的气味,因为它暗示作者不知道上述两种方法(他们不知道什么?). Jav ...

  6. Java StringBuffer insert(int offset,String s)方法,带示例

    StringBuffer类insert(int offset,String s) (StringBuffer Class insert(int offset , String s)) This met ...

  7. java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果(数组扩容,数组排序,键盘录入)

    @author silence丶你的名字 java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果 初始数组元素1 for死循环 获取用户录入的数据,如果为952 ...

  8. java.util.Random 类的 nextInt(int num )

    随机产生3个67~295的整数并找出数值居中的数 并输出中间的数 例如:100,225和200,输出200 要随机产生某个范围内的整数,用 java.util.Random 类的 nextInt(in ...

  9. 在Java中安全地将long转换为int

    本文翻译自:Safely casting long to int in Java What's the most idiomatic way in Java to verify that a cast ...

最新文章

  1. debian10 raid5+lvm
  2. Redis应用-HyperLogLog
  3. 在windows7上的通过composer安装yii2
  4. Docker02 基本命令、开发环境搭建、docker安装nginx、Dockerfile、路径挂载
  5. 计算机课作业在线管理,iwork学生作业在线系统
  6. 设置ngxin服务器虚拟主机,详解Nginx 虚拟主机配置的三种方式(基于端口)
  7. Go语言常用的并发模式(上)
  8. squid代理与缓存(上)
  9. JAVA压缩、解压,使用Apache Common Compress包下载链接
  10. 电商实训三:网店经营
  11. PostgreSQL安装及关联ArcMap
  12. 2021版手机号验证最新正则表达式
  13. JSP乱码(Tomcat和Weblogic)
  14. 200plc与施耐德ATV610变频器modbus通讯
  15. 界面原形设计/UI原型设计
  16. (送书)《美好企业》导读:企业家需要超越世俗的成功
  17. 基于RSA+AES 软件授权License
  18. 2020 03 13 小米实习生一面
  19. 主链数据动荡;以太坊平均确认时间大幅度降低;BTC活跃地址数连续两周上升 | 数据周榜
  20. R语言线性混合效应模型(固定效应随机效应)和交互可视化3案例

热门文章

  1. Django REST FRAMEWORK swagger(一)框架详解
  2. Android应用安全开发之浅谈网页打开APP
  3. .NET的轻量级IOC框架芮双随笔
  4. 感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?
  5. 扬长避短使用Windbg和Visual Studio高效调试调试你的代码
  6. centos下离线安装mysql
  7. pip download timeout 下载慢,超时解决方法
  8. windows server 2012 R2 standard 评估版过期重启
  9. 优启通怎么重装系统win10_重装系统失败?小编教你安全给神舟战神GX9 Pro重装win10系统方法...
  10. 民生付 php,“民生付”升级我省电商支付体验