栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java如何从int转换为String?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java如何从int转换为String?

正常的方法是

Integer.toString(i)
String.valueOf(i)

串联可以工作,但是这是非常规的,可能会产生难闻的气味,因为这表明作者不了解上述两种方法(他们可能还不知道什么?)。

当与字符串一起使用时,Java对+运算符有特殊的支持(请参阅文档),它将你发布的代码转换为:

StringBuilder sb = new StringBuilder();sb.append("");sb.append(i);String strI = sb.toString();

在编译时。它的效率稍低(

sb.append()
最终会调用
Integer.getChars()
,这
Integer.toString()
反正会完成),但是它可以工作。

要回答

Grodriguez
的评论:
**
不,在这种情况下,编译器不会优化空字符串-请看:

simon@lucifer:~$ cat TestClass.javapublic class TestClass {  public static void main(String[] args) {    int i = 5;    String strI = "" + i;  }}simon@lucifer:~$ javac TestClass.java && javap -c TestClassCompiled from "TestClass.java"public class TestClass extends java.lang.Object{public TestClass();  Code:   0:    aload_0   1:    invokespecial    #1; //Method java/lang/Object."<init>":()V   4:    returnpublic static void main(java.lang.String[]);  Code:   0:    iconst_5   1:    istore_1

初始化StringBuilder:

   2:    new    #2; //class java/lang/StringBuilder   5:    dup   6:    invokespecial    #3; //Method java/lang/StringBuilder."<init>":()V

追加空字符串:

   9:    ldc    #4; //String   11:    invokevirtual    #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;

追加整数:

   14:    iload_1   15:    invokevirtual    #6; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;

提取最终字符串:

   18:    invokevirtual    #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;   21:    astore_2   22:    return}

有一项针对JDK 9 的提议和正在进行的更改此行为的工作。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号