正常方式是Integer.toString(i)或String.valueOf(i)。

串联将工作,但它是非常规的,可能是一个难闻的气味,因为它暗示作者不知道上述两种方法(他们不知道什么?)。

Java在使用字符串(见the documentation)时对操作符提供了特殊的支持,它将您发布的代码翻译成:

StringBuilder sb = new StringBuilder();

sb.append("");

sb.append(i);

String strI = sb.toString();

在编译时。它的效率略低(sb.append()结束了调用Integer.getChars(),这是什么Integer.toString()会做),但它的工作原理。

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

simon@lucifer:~$ cat TestClass.java

public class TestClass {

public static void main(String[] args) {

int i = 5;

String strI = "" + i;

}

}

simon@lucifer:~$ javac TestClass.java && javap -c TestClass

Compiled from "TestClass.java"

public class TestClass extends java.lang.Object{

public TestClass();

Code:

0: aload_0

1: invokespecial #1; //Method java/lang/Object."":()V

4: return

public 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."":()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

}

有a proposal和正在进行的工作,以改变这种行为,针对JDK 9。

java转换为字符串_java – 如何从int转换为字符串?相关推荐

  1. java输入数字返回字符串_java Scanner输入数字、字符串

    package java05; import java.util.Scanner;//1.导包 /* Scanner类的功能,可以实现键盘输入数据,到程序当中 引用类型的一班使用步骤: 1.导包 2. ...

  2. java时间戳龙_Java时间戳与日期格式字符串的互转

    Java时间戳与日期格式字符串的互转 import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { ...

  3. java math 弧度_Java Math.toRadians()角度转换为弧度

    首页 > 基础教程 > 常用类 > 常用 Number & Math类 Java Math.toRadians()角度转换为弧度 java中Math.toRadians()用 ...

  4. java 验签_JAVA验签方式转换为PHP代码,求教怎么写

    sig生成方式:key:aUdqk-BvLwKltime:当前时间.(long)num:随机数.(long)SHA1(key+time+num)以java为例:privatestaticStringe ...

  5. java map 内存_java 使用对象和Map保存字符串占用存储空间对比

    对整体堆大小的影响 创建对象情况 已使用的堆大小 没有使用任何对象 95,805,912 个字节 使用map10000000个相同字符串 1,017,388,888 个字节 创建10000000个空对 ...

  6. java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符

    我有一种语言,它将一个字符串定义为单引号或双引号,通过加倍将字符串转义为字符串中的分隔符.例如,所有以下内容都是合法字符串: 'This isn''t easy to parse.' 'Then Jo ...

  7. java split空字符_java split函数结尾空字符串被丢弃的问题

    java中的split函数用于将字符串分割为字符数组是很方便的,但由于不是很熟悉,犯了错误 如下: String strtest = "1,2,"; String arry[] = ...

  8. java 汉字个数_java语言中如何获取字符串中汉字的个数

    java语言中如何获取字符串中汉字的个数? [实例描述] 字符串中可以包含数字,字母.汉字或者其他字符.使用Character 类的isDigit()方法可以判断字符中的某个字符是否为数字,使用Cha ...

  9. java 提取电话号码_java – 如何使用正则表达式提取字符串的电话号码?

    如果我有一个包含以下内容的字符串:这是1测试123-456-7890 我需要提取1234567890作为电话号码.我不想提取测试前的数字1. 如何在java中使用正则表达式? 我知道一种方法,但我不确 ...

最新文章

  1. mysql 7.4_CentOS 7.4 64位/ mysql
  2. findfirstfile函数为什么不能遍历doc_编程之美:IO多路复用——记性不好的poll函数...
  3. 不止代码:乘法游戏 题解(区间dp)
  4. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
  5. oracle正在启动或关闭中的解决方法
  6. memset() 初始化类对象
  7. React列表中实现文案多行收起展开的功能
  8. 双重特异性酪氨酸磷酸化调节激酶1A行业调研报告 - 市场现状分析与发展前景预测
  9. linux sshd自动登录,SSH自动登录的几种方法
  10. FreeRTOS(五)——heap文件解析
  11. APM代码学习笔记1
  12. 物理防火墙是什么?有什么作用?
  13. HDU 4889 Scary Path Finding Algorithm
  14. 7-5 3824经典游戏分数 20 作者 李佳单位 重庆大学
  15. linux-iproute2系列-TC命令
  16. openGL下的”橡皮筋“技术(多边形绘制)
  17. CCM色彩调试黄色块饱和度不够
  18. 非极大值抑制(non-maximum suppression)的理解
  19. dockerfile构建LNRP环境练手
  20. java词云_Java:生成词云(KUMO)

热门文章

  1. linux 保留最近目录,Linux如何删除全部目录只保留最新修改的目录
  2. java录入会员信息_java-第三章-升级我行我素购物管理系统,实现会员信息录入的功能...
  3. php js 图片旋转,jQuery实现可以控制图片旋转角度效果
  4. http 路径 |_HTTP 请求與响应的格式及 curl 命令使用
  5. 测试社交软件有哪些,性格测试:测你适合哪个社交平台
  6. HTML中直接写js 函数
  7. jQuery.extend() 使用语法详解
  8. 原型 - 实现自己的jQuery
  9. vue error:The template root requires exactly one element.
  10. 微信群运营之设计运营思路