我运行以下代码并获得评论中显示的结果.我知道之间的差异==和.equals().我不明白的是为什么我的第二行代码与第三行代码的结果不同.
String de = "de";
// String abcde = "abc" + "de"; // abcde == "abcde" reture true
String abcde = "abc" + de; // abcde == "abcde" reture false;
System.out.println();
System.out.println(abcde=="abcde");
System.out.println(de=="de");
Run Code Online (Sandbox Code Playgroud)
在尝试调试时,我使用了javap -c命令并为第一个字符串连接获得了以下输出'code':
Code:
0: ldc #9; //String de
2: astore_1
3: new #10; //class java/lang/StringBuilder
6: dup
7: invokespecial #11; //Method java/lang/StringBuilder."<init>":()V
10: ldc #4; //String abc
12: invokevirtual #12; //Method java/lang/StringBuilder.append:(Ljava/lang
String;)Ljava/lang/StringBuilder;
15: aload_1
16: invokevirtual #12; //Method java/lang/StringBuilder.append:(Ljava/lang
String;)Ljava/lang/StringBuilder;
19: invokevirtual …Run Code Online (Sandbox Code Playgroud)