String valueOf vs concatenation with empty string

后端 未结 10 1720
说谎
说谎 2020-11-27 05:05

I am working in Java code optimization. I\'m unclear about the difference between String.valueOf or the +\"\" sign:

int intVar = 1;         


        
10条回答
  •  时光说笑
    2020-11-27 05:52

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

    This approach uses StringBuilder to create resultant String

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

    This approach invokes simply a static method of String to get the String version of int

    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
    

    which in turn calls Integer.toString()

提交回复
热议问题