Warum ist es möglich, den Attributwert einer Referenzvariablen zu ändern? Bitte sehen Sie sich die Antwort unten an.
Datentypen in Java
Datentypen in Java werden in zwei Kategorien unterteilt: Basistypen und Referenztypen. Dementsprechend werden Variablen auch in zwei Typen unterteilt: Basistypen und Referenztypen.
Basistypvariablen speichern den ursprünglichen Wert, dh der Wert, den sie darstellt, ist der Wert selbst
Der von der Referenztypvariable gespeicherte Wert ist ein Referenzwert und der „Referenzwert“. „Zeigt auf die Adresse des Speicherplatzes und stellt einen Verweis auf ein Objekt dar und nicht auf das Objekt selbst. Das Objekt selbst wird an der durch den Referenzwert dargestellten Adresse gespeichert.
Zu den Grundtypen gehören: Byte, Short, Int, Long, Char, Float, Double, Boolean, ReturnAddress.
Zu den Referenztypen gehören: Klassen, Schnittstellentypen und Arrays.
Es gibt nur eine Wertübertragung in Java
Beim täglichen Codieren werden Sie häufig das folgende Phänomen sehen:
1. Für grundlegende Typparameter: in der Methode Durch die Neuzuweisung von Parametern innerhalb des Körpers wird der Wert der ursprünglichen Variablen nicht geändert.
2. Bei Referenztypparametern wird durch die erneute Zuweisung einer Referenz auf den Parameter im Methodenkörper die von der ursprünglichen Variablen gehaltene Referenz nicht geändert.
3. Die Parameter werden innerhalb des Methodenkörpers bearbeitet, ohne den Wert der ursprünglichen Variablen zu ändern.
4. Bei Referenztypparametern bearbeitet der Methodenkörper die Eigenschaften des Objekts, auf das der Parameter zeigt, wodurch sich der Eigenschaftswert des Objekts ändert, auf das die ursprüngliche Variable zeigt.
Zum Beispiel:
public class Main { private static void getMiddleOne(boolean b, Boolean boo, Boolean[] arr){ b = true; boo = new Boolean(true); arr[0] = true; } //测试 public static void main(String[] args) { boolean b = false; Boolean boo = new Boolean(false); Boolean[] arr = new Boolean[]{false}; getMiddleOne(b, boo, arr); System.out.println(b); System.out.println(boo.toString()); System.out.println(arr[0]); /** * output: * false * false * true */ } }
Wir können das obige Phänomen beantworten, solange wir die folgenden zwei Punkte verstehen:
1 value ist der Wert selbst, daher ist der Wert von b im Beispiel falsch; da die Wrapper-Klasse automatisch ein- und auspackt, kann er auf die gleiche Weise wie der Basistyp verarbeitet werden, sodass der Wert von boo im Beispiel falsch ist ; Das Array ist ein Referenztyp, also arr Der Wert ist eine Referenz auf den Boolean[].
2. In Java gibt es nur eine Wertübertragung und keine Referenzübertragung, daher sind die drei an die getMiddleOne-Methode übergebenen Parameter die Wertkopie von b, die Wertkopie von boo und die Wertkopie von arr.
Wie aus den beiden obigen Punkten ersichtlich ist, weisen b=true und boo = new Boolean(true) in der getMiddleOne-Methode ihren Kopien neue Werte zu, sodass der Wert der ursprünglichen Variablen nicht vorhanden ist ; In ähnlicher Weise kopiert arr[0] = true das erste Element des Arrays, auf das die Kopie von arr zeigt von arr zeigt auf Das Array und das Array, auf das arr zeigt, sind identisch, daher wirkt sich das Ändern der Elemente des von arr kopierten Arrays auch auf die ursprüngliche Variable arr aus.
Zusammenfassung
In Java gibt es nur eine Wertübertragung. Basistypen übertragen eine Kopie des Werts und Referenztypen übertragen eine Kopie der Referenz
Das obige ist der detaillierte Inhalt vonParameterübergabe in Java (nur Wertübergabe, keine Referenzübergabe). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

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

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor