Nein.
public class UnitTestTwo { public static long factorial(int N) { long fct = 1; for (intj=1; j<=N; j++) fct *= j; return fct; } // alt(native) Methode public static long factorialAlt(int N) { long fct = 1; while (N>0) { fct *= N; N-- ; } return fct; } public static void main(String[] args) { int N = 10; System.out.println("factorial of " + N); System.out.println( "scnd method : " + factorialAlt(N)); System.out.println( "first method : " + factorial(N)); } } ----------------------------------- C:\Source> java UnitTestTwo factorial of 10 scnd method : 3628800 first method : 3628800 C:\Source>
Das neue Programm (oben) enthält zwei static
Methoden. Das ist natürlich OK. Wir können so viele Klassenmethoden haben, wie wir brauchen. Die neue static
Methode verwendet auch N
für den Namen ihres formalen Parameters. Auch das ist OK. Der Gültigkeitsbereich dieses N
s ist nur der Körper der Methode. Das neue N
hat mit den N
s der anderen Methoden nichts zu tun.
Beachtet insbesondere, dass die neue Methode factorialAlt()
bei ihrer Ausführung den Wert in ihrem N
ändert. Das ist OK. N
in main()
ist eine völlig andere Variable und behält den Wert, der ihr zugewiesen wurde.
Wir prüfen das Folgende. Kompiliert der Code? Achtet vor allem auf N
.
public class UnitTestBad { int N = 10; public static long factorial() { long fct = 1; for (int j=1; j<=N; j++) fct *= j; return fct; } public static void main(String[] args) { System.out.println( "factorial of " + N + ": " + factorial(N)); } }