String对象指令

2021/11/7 23:12:03

本文主要是介绍String对象指令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

例子1

从指令看出new String(“hello1”),这个创建了2个对象

public void anew(){
     String str = new String("hello1");
}

指令

 0 new #14 <java/lang/String>  // 第2个对象
 3 dup
 4 ldc #15 <hello1>   // 第1个对象
 6 invokespecial #16 <java/lang/String.<init>>
 9 astore_1
10 return

例子2

public void notnew(){
    String str = "hello2";
}

指令

0 ldc #17 <hello2>
2 astore_1
3 return

例子3

public void notnew2(){
     String str = new StringBuilder("Hello").append("World").toString();
}

指令

 0 new #2 <java/lang/StringBuilder>
 3 dup
 4 ldc #3 <Hello>
 6 invokespecial #4 <java/lang/StringBuilder.<init>>
 9 ldc #5 <World>
11 invokevirtual #6 <java/lang/StringBuilder.append>
14 invokevirtual #7 <java/lang/StringBuilder.toString>
17 astore_1
18 return

例子4

public void notnew3(){
    String str = "a"+"b";
}

指令

从指令,可以看出"a"+“b”,已经被优化了

0 ldc #18 <ab>
2 astore_1
3 return

例子5

public void notnew4(){
    String a = "a";
    String b = "b";
    String str = a+b;
}

指令

从指令可以看出a+b,使用的是StringBuilder对象操作

 0 ldc #19 <a>
 2 astore_1
 3 ldc #20 <b>
 5 astore_2
 6 new #2 <java/lang/StringBuilder>
 9 dup
10 invokespecial #10 <java/lang/StringBuilder.<init>>
13 aload_1
14 invokevirtual #6 <java/lang/StringBuilder.append>
17 aload_2
18 invokevirtual #6 <java/lang/StringBuilder.append>
21 invokevirtual #7 <java/lang/StringBuilder.toString>
24 astore_3
25 return



这篇关于String对象指令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程