小编Hyr*_*rio的帖子

JDK 17 中字符串“+”操作数的优化

我们知道,在JDK8及以下版本中,使用加号进行拼接的字符串会被编译成StringBuilder来进行性能优化,但在JDK9之后,就会使用该java.lang.invoke.StringConcatFactory#makeConcatWithConstants方法来实现。

不过反编译后java.lang.Object可以看出,它的toString方法仍然是使用StringBuilder实现的:

public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
  stack=2, locals=1, args_size=1
     0: new           #1                  // class java/lang/StringBuilder
     3: dup
     4: invokespecial #3                  // Method java/lang/StringBuilder."<init>":()V
     7: aload_0
     8: invokevirtual #7                  // Method getClass:()Ljava/lang/Class;
    11: invokevirtual #13                 // Method java/lang/Class.getName:()Ljava/lang/String;
    14: invokevirtual #19                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    17: ldc           #23                 // String @
    19: invokevirtual #19                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
    22: aload_0
    23: invokevirtual #25                 // Method hashCode:()I
    26: invokestatic  #29                 // Method java/lang/Integer.toHexString:(I)Ljava/lang/String; …
Run Code Online (Sandbox Code Playgroud)

java bytecode javac dart

23
推荐指数
1
解决办法
2132
查看次数

标签 统计

bytecode ×1

dart ×1

java ×1

javac ×1