【Java】如何较好地将int转化成String
前言
条条大路通罗马,但每条路是不同的,与其等待,不若研究研究~~
问题来源
最近做了很多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相关推荐
- java iterator 将int_ListIteratorlt;Egt; listIterator(int index)_Java.util包|WIKI教程
ListIterator listIterator(int index) 描述 (Description) java.util.LinkedList.listIterator(int index)方法 ...
- java indexof int_Java Stack indexOf(Object, int)用法及代码示例
Java.util.Stack.indexOf(Object element,int index)方法用于在此Stack中首次出现指定元素的索引,从索引开始向前搜索,如果找不到该元素,则返回-1.更正 ...
- Java中同时输入字符串和int类型出错的处理方式
在Java中,如果输入int类型和字符串处理不当会产生错误,例如:如果先输入int类型,在输入字符串类型,如下代码: Scanner sc=new Scanner(System.in);int a=s ...
- java编译找不到符号 int age=in.nexint()_Java报错找不到符号,小白自学求大佬解决...
import java.util.*;public class guess_1{public static void main(String[] args){Scanner in=new Scanne ...
- java转换为字符串_java – 如何从int转换为字符串?
正常方式是Integer.toString(i)或String.valueOf(i). 串联将工作,但它是非常规的,可能是一个难闻的气味,因为它暗示作者不知道上述两种方法(他们不知道什么?). Jav ...
- Java StringBuffer insert(int offset,String s)方法,带示例
StringBuffer类insert(int offset,String s) (StringBuffer Class insert(int offset , String s)) This met ...
- java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果(数组扩容,数组排序,键盘录入)
@author silence丶你的名字 java数组及Arrays创建一个int 类型数组 数组元素由键盘录入,每次打印插入排序的结果 初始数组元素1 for死循环 获取用户录入的数据,如果为952 ...
- java.util.Random 类的 nextInt(int num )
随机产生3个67~295的整数并找出数值居中的数 并输出中间的数 例如:100,225和200,输出200 要随机产生某个范围内的整数,用 java.util.Random 类的 nextInt(in ...
- 在Java中安全地将long转换为int
本文翻译自:Safely casting long to int in Java What's the most idiomatic way in Java to verify that a cast ...
最新文章
- debian10 raid5+lvm
- Redis应用-HyperLogLog
- 在windows7上的通过composer安装yii2
- Docker02 基本命令、开发环境搭建、docker安装nginx、Dockerfile、路径挂载
- 计算机课作业在线管理,iwork学生作业在线系统
- 设置ngxin服务器虚拟主机,详解Nginx 虚拟主机配置的三种方式(基于端口)
- Go语言常用的并发模式(上)
- squid代理与缓存(上)
- JAVA压缩、解压,使用Apache Common Compress包下载链接
- 电商实训三:网店经营
- PostgreSQL安装及关联ArcMap
- 2021版手机号验证最新正则表达式
- JSP乱码(Tomcat和Weblogic)
- 200plc与施耐德ATV610变频器modbus通讯
- 界面原形设计/UI原型设计
- (送书)《美好企业》导读:企业家需要超越世俗的成功
- 基于RSA+AES 软件授权License
- 2020 03 13 小米实习生一面
- 主链数据动荡;以太坊平均确认时间大幅度降低;BTC活跃地址数连续两周上升 | 数据周榜
- R语言线性混合效应模型(固定效应随机效应)和交互可视化3案例
热门文章
- Django REST FRAMEWORK swagger(一)框架详解
- Android应用安全开发之浅谈网页打开APP
- .NET的轻量级IOC框架芮双随笔
- 感觉又学到了不少,在这里写下来,但也有一个问题,不知道是为甚吗?
- 扬长避短使用Windbg和Visual Studio高效调试调试你的代码
- centos下离线安装mysql
- pip download timeout 下载慢,超时解决方法
- windows server 2012 R2 standard 评估版过期重启
- 优启通怎么重装系统win10_重装系统失败?小编教你安全给神舟战神GX9 Pro重装win10系统方法...
- 民生付 php,“民生付”升级我省电商支付体验