您当前的位置: 首页 >  Java

星拱北辰

暂无认证

  • 0浏览

    0关注

    1205博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Java】如何较好地将int转化成String

星拱北辰 发布时间:2020-01-25 11:08:12 ,浏览量:0

前言

条条大路通罗马,但每条路是不同的,与其等待,不若研究研究~~ 在这里插入图片描述

问题来源

最近做了很多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             
关注
打赏
1660750074
查看更多评论
0.0421s