Wie Methoden zu verwenden, die Parameter in Java Nehmen

EIN Parameter

Menu

ist ein Wert, den Sie sich auf ein Verfahren in Java passieren kann. Dann kann das Verfahren die Parameter verwenden, als wäre es eine lokale Variable mit dem Wert der Variablen initialisiert wurden, um es Verfahren durch den anrufenden geben.

Das Erraten-Spiel-Anwendung hat eine Methode mit dem Namen getRandomNumber dass gibt eine Zufallszahl zwischen 1 und 10:

public static int getRandomNumber () {return (int) (Math.random () * 10) + 1-}

Diese Methode ist nützlich, aber es wäre noch nützlicher sein, wenn Sie es den Zahlenbereich sagen, könnten Sie die Zufallszahl wollen in zu fallen, es wäre schön, das Verfahren so zu nennen eine Zufallszahl zwischen 1 und 10 zu erhalten.:

int number = getRandomNumber (1, 10) -

Dann, wenn Ihr Programm braucht Würfel zu rollen, könnten Sie die gleiche Methode aufrufen:

int number = getRandomNumber (1, 6) -

Oder eine zufällige Karte aus einem Kartenspiel mit 52 Karten zu holen, könnte man es so nennen:

int number = getRandomNumber (1, 52) -

Sie müssten nicht mit 1, entweder starten. Um eine Zufallszahl zwischen 50 und 100 erhalten, würden Sie die Methode wie folgt aufrufen:

int number = getRandomNumber (50, 100) -

Vereinbarungsparameter

Eine Methode, die Parameter akzeptiert müssen die Parameter in der Methodendeklaration aufzulisten. Die Parameter werden in einem platziert Parameterliste innerhalb der Klammern, die den Namen der Methode folgen. Für jeden Parameter nach der Methode verwendet, die Liste der Typ-Parameter durch den Parameternamen. Wenn Sie mehr als einen Parameter benötigen, trennen Sie die Parameter durch Kommas.

Hier ist eine Version des getRandomNumber Methode, die Parameter akzeptiert:

public static int getRandomNumber (int min, int max) {return (int) (Math.random () * (max - min + 1)) + minera}

Hier wird das Verfahren verwendet zwei Parameter, beide vom Typ int, genannt min und max. Dann wird innerhalb des Körpers des Verfahrens können diese Parameter verwendet werden, als ob sie lokale Variablen waren.

Die Namen, die Sie für die Parameter verwenden, können die gleichen sein wie die Namen, die Sie die Variablen verwenden, damit Sie die Methode übergeben, wenn Sie es nennen, aber sie müssen nicht sein. Sie könnten der Aufruf getRandomNumber Verfahren wie folgt aus:

int min = 1-int max = 10-int number = getRandomNumber (min, max) -

Oder man könnte es so nennen:

int low = 1-int hoch = 10-int number = getRandomNumber (niedrig, hoch) -

Oder Sie könnten mit den Variablen ganz verzichten und nur wörtlichen Werte an die Methode übergeben:

int number = getRandomNumber (1, 10) -

Sie können auch Ausdrücke wie die Parameterwerte angeben:

int min = 1-int max = 10-int number = getRandomNumber (min * 10, max * 10) -

Hier Nummer ein Wert zwischen 10 und 100 zugeordnet.

Scoping out-Parameter

Der Gültigkeitsbereich eines Parameters ist die Methode für die der Parameter erklärt. Als Ergebnis kann ein Parameter, der denselben Namen wie lokale Variablen in anderen Verfahren verwendet werden, haben ohne einen Konflikt verursachen. Betrachten Sie dieses Programm:

public class ParameterScope {public static void main (String [] args) {int min = 1-int max = 10-int number = getRandomNumber (min, max) -System.out.println (Anzahl) -} public static int getRandomNumber ( int min, int max) {return (int) (Math.random () * (max - min + 1)) + minera}}

hier ist die Main Methode deklariert Variablen mit den Namen min und max, und das getRandomNumber Methode verwendet min und max für seine Parameternamen. Dies verursacht keine Konflikte, weil jeweils der Umfang auf eine einzige Methode beschränkt ist.

Das Verständnis Pass-by-Wert

Wenn Java eine Variable auf ein Verfahren über einen Parameter übergibt, erhält die Methode selbst eine Kopie der den Wert der Variablen, nicht die Variable selbst. Diese Kopie wird als ein Pass-by-Wert, und es hat eine wichtige Konsequenz: Wenn eine Methode ändert sich der Wert als Parameter erhält, diese Änderung ist nicht in der ursprünglichen Variablen reflektiert, die an die Methode übergeben wurde. Dieses Programm kann dies dazu beitragen, aufklären:

public class ChangeParameters {public static void main (String [] args) {int number = 1-tryToChangeNumber (Zahl) -System.out.println (Nummer) -} public static void tryToChangeNumber (int i) {i = 2}}

Hier ist eine Variable mit dem Namen Nummer ist eingestellt auf 1 und ging dann an die Methode mit dem Namen tryToChangeNumber. Dieses Verfahren erhält die Variable als Parameter mit dem Namen ich und setzt dann den Wert von ich nach 2. Inzwischen zurück in die Main Verfahren, println wird verwendet, um den Wert der zum Drucken Nummer nach dem tryToChangeNumber Methode zurückgibt.

weil tryToChangeNumber bekommt nur eine Kopie Nummer, nicht der Nummer Variable selbst, das Programm zeigt die folgende auf der Konsole: 1.

Der entscheidende Punkt ist dieser: Auch wenn die tryToChangeNumber Methode ändert den Wert seiner Parameter, diese Änderung keine Auswirkung auf die ursprüngliche Variable hat, die an die Methode übergeben wurde.

Menü