如何较好地将int转化成String
程序员文章站
2022-03-31 09:39:02
...
前言
条条大路通罗马,但每条路是不同的,与其等待,不若研究研究~~
问题来源
最近做了很多OJ题,对于Java基本类型的转化,看似简单,但对其要求也更高了,不免需要简单加以研究,以便今后更好的食用~
两套方案
我们有下面两种解决方案:
策略A:int i = 100;
Integer.toString(i);
策略B:Integer i = 100;
i.toString();
哪一种比较好?
问题探究
如果大家用IDEA写策略A的话,你就会发现Integer那里是黄色的,也就是说不是最佳方案。
IJ推荐我们用策略B,理由是什么呢?
我们看一下源码(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);
}
我们恍然大悟:选择策略A的话需要先生成一个Integer对象(自动装箱),再调用其toString()方法,而其toString()还需要再调用toString(int i)方法,显得多此一举。
结论
Plan A is better.
补几句话:
之前我为了让int变成String,写过这样的for循环:
for (Integer i = 0; i < num; i++) {
String s = i.toString();
}
现在,就应该改改啦,嘿嘿~~
给大家拜个年嘞——
愿大家接下来的日子:所走之路,皆畅行无碍;所到之处,皆春暖花开;所爱之人,皆相随相伴。所求皆如愿,所行化坦途,祝大家新年快乐!