Java "Pass by Reference" Problemzusammenfassung

Überblick

Die Bewertungsstrategie von Java ist nach Wert. Nicht als Referenz übergeben. Einige Leute missbrauchen es als "Referenzübergabe", um sich auf die Übergabe eines Referenzwerts zu beziehen. Es gibt verschiedene Leute, die darauf hinweisen, dass es missbraucht wird, Leute, die es verstehen und benutzen, Leute, die es nicht wirklich verstehen, und es scheint, dass sie schwelen, also habe ich die Informationen zusammengefasst.

Bewertungsstrategie

Die Informatik hat das Konzept der Bewertungsstrategie. Sowohl Wertübergabe (Wertaufruf oder Wertübergabe) als auch Referenzübergabe (Referenzaufruf oder Referenzübergabe) sind eine der Bewertungsstrategien.

Für mehr Informationen:

Java-Evaluierungsstrategie

Die Bewertungsstrategie von Java ist nach Wert. Wenn Sie Referenzwerte und Referenzen in Java übergeben, werden diese auch durch Übergabe von Werten ausgewertet.

Dies ist auch in der Java-Sprachspezifikation angegeben.

When the method or constructor is invoked, the values of the actual argument expressions initialize newly created parameter variables, each of the declared type, before execution of the body of the method or constructor.

Von http://docs.oracle.com/javase/specs/jls/se9/html/jls-8.html#jls-8.4.1 Meine Übersetzung:

Wenn eine Methode oder ein Konstruktor aufgerufen wird, wird ein neuer formaler Argumentwert für jeden deklarierten Typ mit dem ** Wert ** der tatsächlichen Argumentteildarstellung initialisiert, bevor der Hauptteil der Methode oder des Konstruktors ausgeführt wird.

Weitere Informationen finden Sie unter Java ist Pass-by-Value, verdammt! von Scott Stanchfield.

Richtige Denkweise über die Bewertungsstrategie

Wenn Sie eine Auswertungsstrategie in Betracht ziehen, sollten Sie im Allgemeinen darüber nachdenken, wie der Aufruf ausgewertet wird, wenn ein Programm, das eine Funktion, eine Methode, ein Unterprogramm usw. aufruft, in das Programmiersprachenverarbeitungssystem eingegeben wird. Die richtige Art, über Strategie nachzudenken.

Denken Sie nicht an das Verhalten, wenn Sie tatsächlich ein Programm oder eine Binärdatei ausführen. Das Verhalten des Programms ändert sich je nach Ausführungsumgebung der Programmiersprache vollständig. Beispielsweise ist das tatsächliche Verhalten völlig unterschiedlich, je nachdem, ob die Ausführungsumgebung des Programms ein Compiler ist, wie viel Optimierung durchgeführt wird, ob es sich um einen Interpreter handelt oder ob ein Mensch mit einer Tafel und einer Kreide "ausführt". Denken Sie bei der Bewertung einer Programmiersprache nicht daran, was die CPU tatsächlich tut, wie der Speicher ist, wie die Adresse lautet und so weiter.

Persönliche Meinung

Das Übergeben einer Referenz in Java wird als "Übergeben als Referenz" bezeichnet und sollte sofort gestoppt werden. Wie Sie anhand der Suche nach Java anhand der Referenz sehen können, gibt es einige Artikel, die eindeutig missverstanden werden. Es muss das Zehn- oder Hundertfache dieser Zahl geben, einige, die missverstanden und nicht beobachtet werden, und einige, die durch Missbrauch in Mitleidenschaft gezogen werden und ihr Verständnis behindern. Wenn Sie nicht aufhören, verlieren Sie die Branche.

Recommended Posts

Java "Pass by Reference" Problemzusammenfassung
Java als Wert übergeben und als Referenz übergeben
Objektorientierte Zusammenfassung von Anfängern (Java)
Zusammenfassung des Java-Wissens
Java-bezogene Zusammenfassung
[Java] Problem Nr. 2
[Java] Problem Nr. 3
Zusammenfassung des Java 8-Dokuments
[Java] Problem Nr.1
Zusammenfassung des Java 11-Dokuments
Java8-Methodenreferenz
JAVA Referenzmaterialien
Meine Java-Referenz
[Java] Das Referenzwort ist schlecht!
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 1 ~
Zusammenfassung der neuen Funktionen von Java 12
[Zusammenfassung] Zum Beispiel die Vorbereitung der Java-Umgebung
Zusammenfassung der neuen Funktionen von Java 13
Zusammenfassung der Revisionen (neue Yuan-Probleme) nach Java-Version
Zusammenfassung der Kenntnisse, die zum Bestehen von Java SE8 Silver erforderlich sind
Java statisch [Persönliche Zusammenfassung]
Gibt an, ob Java-Argumente als Wert oder als Referenz übergeben werden
Thread sichere Zusammenfassung ~ Java ~
Zusammenfassung der primitiven Java-Spezialisierung
Zusammenfassung des Java-Entwicklungslinks
Persönliche Zusammenfassung über Java
Zusammenfassung der neuen Funktionen von Java 10
Zusammenfassung der regulären Ausdrücke von Java
Zusammenfassung der neuen Funktionen von Java 14
Zusammenfassung der Java-Unterstützung 2018
Zusammenfassung des Java-Entwurfsmusters
Java-Zusammenfassung für reservierte Wörter
Grobe Zusammenfassung des Java8-Streams
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 2 ・ Liste ~
Zusammenfassung der von der Spliterator-Merkmalsmethode #java zurückgegebenen Werte
[Java] Integer-Wrapper-Klassenreferenz
Was ist Java Assertion? Zusammenfassung.
Java VB.net-Dienstreferenz auf halbem Weg
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Progate Java (Anfänger) Review & Zusammenfassung
[Java] Zusammenfassung der regulären Ausdrücke
Zundas 1-stelliges Additionsproblem Java 11
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Java SE8 Silver Passing Erfahrung
Zusammenfassung der Grundlagen der Java-Sprache
Java-Tipps - Zusammenfassung der Federausführung
Zusammenfassung der Java Math Klasse
[Java11] Stream Usage Summary -Basics-
[Java] Zusammenfassung der Steuerungssyntax
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der Entwurfsmuster
[Java] Zusammenfassung der mathematischen Operationen
Die Geschichte, das Verhalten von String durch Passieren von Java nicht zu kennen