


Basiert die Parameterübergabe in Java auf einem Wert oder einer Referenz?
Jan 30, 2024 am 09:09 AMWird die Parameterübergabemethode in Java als Wert oder als Referenz übergeben?
In Java werden Parameter je nach Typ des Parameters als Wert oder als Referenz übergeben.
- Wertübergabe
Wertübergabe bedeutet, dass beim Aufruf der Methode eine Kopie der tatsächlichen Parameter an die formalen Parameter der Methode übergeben wird. Das Ändern der Werte formaler Parameter in einer Methode hat keinen Einfluss auf die Werte tatsächlicher Parameter.
Der Beispielcode lautet wie folgt:
public class PassByValueExample { public static void main(String[] args) { int number = 10; modifyValue(number); System.out.println("Number after method call: " + number); } public static void modifyValue(int value) { value = 20; System.out.println("Value inside method: " + value); } }
Das Ausgabeergebnis lautet wie folgt:
Value inside method: 20 Number after method call: 10
Im obigen Code akzeptiert die Methode modifyValue
einen ganzzahligen Parameter value</code >. Ändern Sie innerhalb der Methode den Wert von <code>value
in 20 und drucken Sie ihn dann aus. Beim Drucken des Werts von number
in der Methode main
wird jedoch festgestellt, dass number
immer noch 10 ist, was darauf hinweist, dass der Wert von geändert wurde Der formale Parameter hat keinen Einfluss auf den tatsächlichen Wert des Parameters. modifyValue
方法接受一个整数类型的参数value
。在方法内部,将value
的值改为20,然后打印出来。但是,在main
方法中打印number
的值时,发现number
仍然是10,说明改变形式参数的值并不会影响实际参数的值。
- 引用传递(Pass by Reference)
引用传递是指在方法调用时,实际参数的引用(内存地址)被传递给方法的形式参数。在方法中对形式参数所指向的对象进行修改,会改变实际参数所引用的对象的状态。
示例代码如下:
public class PassByReferenceExample { public static void main(String[] args) { StringBuilder name = new StringBuilder("Alice"); modifyName(name); System.out.println("Name after method call: " + name); } public static void modifyName(StringBuilder builder) { builder.append(" Smith"); System.out.println("Name inside method: " + builder); } }
输出结果如下:
Name inside method: Alice Smith Name after method call: Alice Smith
在上述代码中,modifyName
方法接受一个StringBuilder
类型的参数builder
。在方法内部,将builder
所指向的对象追加了" Smith",然后打印出来。在main
方法中打印name
时,发现name
变成了"Alice Smith",说明改变形式参数的值会影响实际参数所引用的对象的状态。
需要注意的是,虽然Java中存在引用传递的情况,但是Java并没有提供直接通过引用改变实际参数值的方式。比如,不能通过在方法中给形式参数分配新的内存地址来改变实际参数的引用。
总结起来,Java中的参数传递方式是根据参数的类型来决定的。对于基本数据类型(如int
、char
- Übergabe per Referenz🎜Übergabe per Referenz bedeutet, dass beim Aufruf einer Methode die Referenz (Speicheradresse) des tatsächlichen Parameters an den formalen Parameter der Methode übergeben wird. Durch Ändern des Objekts, auf das der formale Parameter in der Methode zeigt, ändert sich der Status des Objekts, auf das der tatsächliche Parameter verweist. 🎜🎜🎜Der Beispielcode lautet wie folgt: 🎜rrreee🎜Das Ausgabeergebnis lautet wie folgt: 🎜rrreee🎜Im obigen Code akzeptiert die Methode
modifyName
einen Parameter vom Typ StringBuilder
builder code>. Innerhalb der Methode wird „Smith“ an das Objekt angehängt, auf das <code>builder
zeigt, und dann ausgedruckt. Beim Drucken von name
in der Methode main
wurde festgestellt, dass name
in „Alice Smith“ geändert wurde, was darauf hinweist, dass sich der Wert der formalen Parameter geändert hat wirkt sich auf die tatsächlichen Parameter aus. Der Status des referenzierten Objekts. 🎜🎜Es ist zu beachten, dass es in Java zwar eine Referenzübergabe gibt, Java jedoch keine Möglichkeit bietet, den tatsächlichen Parameterwert direkt durch Referenz zu ändern. Sie können beispielsweise die Referenz eines Aktualparameters nicht ändern, indem Sie dem Formalparameter in der Methode eine neue Speicheradresse zuweisen. 🎜🎜Zusammenfassend lässt sich sagen, dass die Parameterübergabemethode in Java basierend auf dem Typ des Parameters bestimmt wird. Für grundlegende Datentypen (wie int
, char
usw.) wird die Wertübergabe verwendet; für Objekttypen wird die Referenzübergabe verwendet. Bei der Wertübergabe wird einfach eine Kopie des tatsächlichen Parameters bearbeitet, während bei der Referenzübergabe das Objekt bearbeitet wird, auf das der tatsächliche Parameter verweist. 🎜
Das obige ist der detaillierte Inhalt vonBasiert die Parameterübergabe in Java auf einem Wert oder einer Referenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

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

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Gibt es eine Referenzübergabe in der Go-Sprache?

Entmystifizierung von Pass-by-Value und Pass-by-Reference in PHP-Funktionsaufrufen

So verstehen Sie die Wertübergabemethode in PHP richtig

Detaillierte Analyse des Unterschieds zwischen Wertübergabe und Referenzübergabe in Java

Was sind Wertübergabe und Referenzübergabe?

Der Unterschied zwischen Strukturzeiger und Strukturwertübertragung in Golang-Funktionen

Was ist der Unterschied zwischen der Wertübergabe und der Referenzübergabe in Java?

Eingehende Untersuchung der Unterschiede zwischen Pass-by-Value und Pass-by-Reference in Java und ihrer Auswirkungen
