Heim > Java > JavaBase > Wissen Sie in Java, was String mit „+' macht?

Wissen Sie in Java, was String mit „+' macht?

coldplay.xixi
Freigeben: 2020-09-19 09:11:08
nach vorne
2081 Leute haben es durchsucht

Wissen Sie in Java, was String mit „+' macht?

Verwandte Lernempfehlungen: Java Basic Tutorial

Es gibt einen einfachen Code

public class StringPlusTest{
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = "bbb";
        String s = "ccc" +s1 + s2 +"ddd";
    }}
Nach dem Login kopieren

Verwenden Sie javap -c .StringPlusTest.class, um

Compiled from "StringPlusTest.java"public class com.epoint.codetuning.test.StringPlusTest {
  public com.epoint.codetuning.test.StringPlusTest();
    Code:
       0: aload_0       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: ldc           #2                  // String aaa
       2: astore_1       3: ldc           #3                  // String bbb
       5: astore_2       6: new           #4                  // class java/lang/StringBuilder
       9: dup      10: invokespecial #5                  // Method java/lang/StringBuilder."<init>":()V
      13: ldc           #6                  // String ccc
      15: invokevirtual #7                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      18: aload_1      19: invokevirtual #7                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      22: aload_2      23: invokevirtual #7                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      26: ldc           #8                  // String ddd
      28: invokevirtual #7                  // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      31: invokevirtual #9                  // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      34: astore_3      35: return}
Nach dem Login kopieren

zu erhalten JVM-Bedienungsanleitung

Für Java sollte dieser Code im Prinzip lauten:

ldc 把常量池中的项压入栈
astore_1 将引用类型或returnAddress类型值存入局部变量1
astore_2 将引用类型或returnAddress类型值存入局部变量2
new 创建一个新对象
dup 复制栈顶部一个字长内容
invokespecial 根据编译时类型来调用实例方法
aload_1 从局部变量1中装载引用类型值
aload_2 从局部变量2中装载引用类型值
astore_3 将引用类型或returnAddress类型值存入局部变量3
Nach dem Login kopieren

Es ​​ist ersichtlich, dass das Implementierungsprinzip der Verwendung von „+“ zum Zusammenfügen von Zeichenfolgen in Java darin besteht, ein temporäres StringBuilder-Objekt zu erstellen und die Methoden append und toString aufzurufen.

Einige Änderungen am obigen Code vorgenommen

public class StringPlusTest{
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = "bbb";
        String s = new StringBuilder().append("ccc").append(s1).append(s2).append("ddd").toString();
    }}
Nach dem Login kopieren

Was ist das Ergebnis?

Folgendes kann durch Ausführen erhalten werden:

public class StringPlusTest{
    public static void main(String[] args) {
        String s1 = "aaa";
        String s2 = null;
        String s = "ccc" +s1 + s2 +"ddd";
        System.out.println(s);
    }}
Nach dem Login kopieren

Zeigen Sie den StringBuilder-Quellcode an

cccaaanullddd
Nach dem Login kopieren

Diese Methode ruft die Methode auf, die die übergeordnete Klasse AbstractStringBuilder erbt, und geht dann zur übergeordneten Klasse, um sie anzuzeigen

@Overridepublic StringBuilder append(String str) {
    super.append(str);
    return this;}
Nach dem Login kopieren

Die Methode appendNull bedeutet einfach Kapazität + 4, Anhängen einer Nullzeichenfolge.

Das Ergebnis ist also „cccaaanullddd“.

Wenn Sie mehr über das Erlernen des Programmierens erfahren möchten, achten Sie bitte auf die Spalte „PHP-Schulung“!

Das obige ist der detaillierte Inhalt vonWissen Sie in Java, was String mit „+' macht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage