前言
条条大路通罗马,但每条路是不同的,与其等待,不若研究研究~~
最近做了很多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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?