Nein, nichts ist falsch.
public class UnitTest { public static long factorial( int N ) { long fct = 1; for ( int j=1; j<=N; j++ ) fct *= j; return fct; } public static void main (String[] args ) { int N = 10; System.out.println( "factorial of " + N + ": " + factorial(N)); } }
Der Gültigkeitsbereich eines formalen Parameters ist der Abschnitt des Quellcodes, der den Parameter sehen kann. Der Gültigkeitsbereich eines formalen Parameters ist der Körper seiner Methode. Der Gültigkeitsbereich des Parameters N ist der Körper seiner Methode. Der Gültigkeitsbereich der Variablen N ist der Hauptteil von main().
In dem oben stehenden Code gibt es also keine Überschneidung zwischen N
in der main()
Methode und N
in factorial()
.
Die main()
Methode kopiert den Wert 10
in ihre lokale Variable N
. Wenn dann factorial(N)
ausgeführt wird, wird die 10
aus der lokalen Variable in den formalen Parameter der aufgerufenen Methode kopiert. Der Code der Methode beschreibt, wie der Parameter verwendet wird.
Die Abbildung zeigt die zwei verschiedenen N
s und den jeweiligen Gültigkeitsbereich.
Wenn factorial()
den Wert in N
ändern würde, hätte das Auswirkungen auf main()
?