Der Inhalt dieses Artikels befasst sich mit dem Verständnis der Parameter in JAVA-Methoden und deren Verwendung. Er hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.
Der Grund, warum Parameter in JAVA-Methoden mit final geändert werden
Viele Leute sagen, dass der Grund für die Verwendung von final zum Ändern von Methodenparametern in JAVA darin besteht, zu verhindern, dass Methodenparameter beim Aufruf manipuliert werden. Tatsächlich ist dies nicht der Grund, aber es kann zu Unklarheiten im Verständnis kommen. Einige Leute denken, dass der tatsächliche Wert der Variablen, in der die Anweisung aufgerufen wird, nicht geändert werden kann aufrufende Methode.
Tatsächlich ist das erste Verständnis falsch. Bei Grundtypen ist der Effekt derselbe, unabhängig davon, ob er am Aufrufort mit final geändert wird oder nicht, wie zum Beispiel der folgende Code:
publi cstatic void main(String hh[]) { int i = 1; System.out.println(i); checkInt(i); System.out.println(i); } public static void checkInt(final int i) { //do something } Nach dem Login kopieren
|
Der Effekt, wenn die Parameter in der checkInt()-Methode auf „final“ oder „non-final“ gesetzt werden, ist für den aufrufenden Ort derselbe.
//如果不是final 的话,我可以在checkInt方法内部把i的值改变(有意或无意的, //虽然不会改变实际调用处的值),特别是无意的,可能会引用一些难以发现的BUG publicstaticvoid checkInt(int i) { i = 200;//这样是可以的,不会编译出错的 //do something } //如果是final 的话,我可以在checkInt方法内部就没办法把i的值改变 //可以完全避免上面的问题 publicstaticvoid checkInt(finalint i) { i = 200;//这样是不可以的,会编译出错的 //do something } //final 的引用类型方法参数 publicstaticvoid checkLoginInfo(final LoginInfo login) { login = new LoginInfo();//error,编译不过去 //do something } //非final的引用类型方法参数 publicstaticvoid checkLoginInfo(LoginInfo login) { //没有任何问题,但是肯定不符合此参数存在的初衷 login = new LoginInfo(); //do something } Nach dem Login kopieren |
rrreee
|
Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie final zum Ändern von Parametern in JAVA-Methoden verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!