suchen
Heim类库下载java类库JAVA-Operator für syntaktischen Zucker „ '

Der von JAVA bereitgestellte „“-Operator, wie z. B. Iteger String, aus C-Perspektive, ich möchte immer herausfinden, wie JAVA diesen „“-Operator überlastet, also bin ich in die String-Klasse gegangen, um nachzusehen, aber ich habe nichts gefunden. Sie denken also darüber nach, wie JAVA das macht? Lassen Sie uns Schritt für Schritt analysieren, wie JAVA die „Operatorüberladung“ implementiert.

Beispiel

public class Example {  
public static void main(String[] args) {  
Integer a = null;  
String b = a + "456";  
System.out.println(b);  
}  
}

Dieses Programm ist sehr einfach und ist ein „ “-Operationsausdruck von Integer und String. Laufergebnis: null456

Beispielprogramm dekompilieren

Befehl:

javap -c Example

Das dekompilierte Ergebnis lautet wie folgt:

Compiled from "Example.java" 
public class com.boyu.budmw.test.Example extends java.lang.Object{ 
public com.boyu.budmw.test.Example(); 
  Code: 
   0:    aload_0 
   1:    invokespecial    #1; //Method java/lang/Object."<init>":()V 
   4:    return 
 
public static void main(java.lang.String[]); 
  Code: 
   0:    aconst_null 
   1:    astore_1 
   2:    new    #2; //class java/lang/StringBuilder 
   5:    dup 
   6:    invokespecial    #3; //Method java/lang/StringBuilder."<init>":()V 
   9:    aload_1 
   10:    invokevirtual    #4; //Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; 
   13:    ldc    #5; //String 456 
   15:    invokevirtual    #6; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
   18:    invokevirtual    #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String; 
   21:    astore_2 
   22:    getstatic    #8; //Field java/lang/System.out:Ljava/io/PrintStream; 
   25:    aload_2 
   26:    invokevirtual    #9; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 
   29:    return 
 
}

Lassen Sie es uns analysieren Hauptfunktionsteil:

0: Schiebe die Konstante null in den Operandenstapel

1: Entferne die Null aus dem Operandenstapel und speichere sie in der lokalen Variablen a mit Index 1

2: neuer StringBuilder

5: Kopieren Sie den zuvor von new erstellten Platz und schieben Sie ihn in den Operandenstapel

6: Aufruf zur Initialisierung

9: Speichern Sie den Ergebnis an den Operandenstapel

10: StringBuilder.append(java/lang/Object) aufrufen

13: „456“ an die Spitze des Stapels schieben

15: StringBuilder .append(java/lang/String)

18: toString-Funktion ausführen

Aus der obigen Analyse können wir erkennen, dass schließlich zuerst ein StringBuilder-Objekt und dann der Operator „ “ generiert wird Alles wird durch den Aufruf von StringBuilder.append() erledigt. Dies kann erklären, warum das obige Beispielprogramm nach der Ausführung null456 ist. Beim Anhängen des Objekts wird

public static String valueOf(Object obj) {  
return (obj == null) ? "null" : obj.toString();  
}

aufgerufen, um das Objekt in einen String zu konvertieren.

Warum unterstützt JAVA keine Operatorüberladung?

Klassen wie C-Überladungsoperatoren Ich persönlich denke, dass es ein schwieriges Problem für Betrieb und Wartung sein wird, da es keinen Standard gibt, der die Operatorüberladung einschränkt und jeder kann davon ausgehen, dass eine Überladung einen großen Unterschied in der Semantik verursacht und die Lesbarkeit erheblich beeinträchtigt. Daher steht die Funktion zum Entfernen der Operatorüberladung in Java im Einklang mit seiner fortgeschrittenen objektorientierten Natur. Verweilen Sie also nicht bei diesem Thema.

Postscript

Dies sind einige Dinge, die während des Entwicklungsprozesses häufig verwendet werden. Wir gehen jedoch möglicherweise nicht so tief in die Materie ein. Sie können es versuchen Untersuchen Sie diese verschiedenen Dinge später weiter. Ein kleiner Fall wurde entdeckt.


Stellungnahme
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.