java - 字符串 valueOf 与空字符串的连接

标签 java

我从事 Java 代码优化工作。我不清楚 String.valueOf+"" 符号之间的区别:

int intVar = 1;
String strVar = intVar + "";
String strVar = String.valueOf(intVar);

第 2 行和第 3 行有什么区别?

最佳答案

public void foo(){
int intVar = 5;
String strVar = intVar+"";    
}

这种方法使用 StringBuilder 来创建结果字符串

public void foo();
  Code:
   0:   iconst_5
   1:   istore_1
   2:   new     #2; //class java/lang/StringBuilder
   5:   dup
   6:   invokespecial   #3; //Method java/lang/StringBuilder."<init>":()V
   9:   iload_1
   10:  invokevirtual   #4; //Method java/lang/StringBuilder.append:(I)Ljava/lan
g/StringBuilder;
   13:  ldc     #5; //String
   15:  invokevirtual   #6; //Method java/lang/StringBuilder.append:(Ljava/lang/
String;)Ljava/lang/StringBuilder;
   18:  invokevirtual   #7; //Method java/lang/StringBuilder.toString:()Ljava/la
ng/String;
   21:  astore_2
   22:  return

public void bar(){
int intVar = 5;
String strVar = String.valueOf(intVar);
}

此方法仅调用 String 的静态方法来获取 int 的 String 版本

public void bar();
  Code:
   0:   iconst_5
   1:   istore_1
   2:   iload_1
   3:   invokestatic    #8; //Method java/lang/String.valueOf:(I)Ljava/lang/Stri
ng;
   6:   astore_2
   7:   return

依次调用 Integer.toString()

关于java - 字符串 valueOf 与空字符串的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7752347/

相关文章:

java - 如何为 Hibernate 域对象编写单元测试

java - 在 Java Swing 中旋转 JLabel 和 ImageIcon

java - Spring jdbcTemplate单​​元测试

java - 适用于 Java 应用程序的 Heroku New Relic Add-on 无法打开 newrelic.jar

Java数组列表问题

java - 如果 int 为 0 表示北,1 表示东,等等......我如何反转方向?

java - java中的复制构造函数

java - 直接使用类属性

java - 在 Apache 后面运行的 TOMCAT 的 HTTPS 问题

java - java中如何比较对象?