2016-05-04 6 views
-1

In ähnlicher Weise wie die "richtige" Mathematik ändert die Verwendung von Klammern die Reihenfolge der Methoden.Ändern Klammern (Klammern) die Reihenfolge der Methoden?

Zum Beispiel

System.out.println(Math.abs(Math.min(-6,3))); 

gibt den Ausgang 6. Ist dies, weil die Math.min macht seinen Job, bevor der Betrag berechnet wird?

Ich möchte sicherstellen, dass dies der Fall ist und es ist nicht komisch der Mathematik-Klasse.

Vielen Dank

+2

* Liegt das daran, dass die math.min ihren Job erledigt, bevor der absolute Wert berechnet wird? * Ja. –

+0

und ist das immer der Fall in Java und nicht nur in der Mathematik? Vielen Dank –

+0

Es gibt nichts besonderes über 'Math' Methoden. Sie sind nur Methoden, wie jede andere Methode in jeder anderen Klasse. –

Antwort

4

Das ist nicht die Konsequenz von Klammern Reihenfolge. Es stimmt zwar, dass Klammern verwendet werden können, um die Reihenfolge der Operationen anzugeben, während mit Operatoren gearbeitet wird. Dies ist eine Frage der Syntax.

Ein Methodenaufruf in Java erfolgt über methodName(arguments), das bedeutet, dass Sie nicht ausdrücken können, was Sie auf eine andere Weise ausdrücken möchten. Solche Klammern werden nicht verwendet, um Vorrang auszudrücken, aber sie sind wirklich Teil der Syntax der Sprache.

Da eine Methode erfordert, dass ihre Argumente vor dem Anruf ausgewertet werden, muss Math.min vor Math.abs ausgewertet werden.

1

Ja, die Verwendung von verketteten/verschachtelten Methodenaufrufen ändert die Reihenfolge der Methoden. Die Methode auf der Innenseite wird zuerst ausgeführt, dann die Methode um diese herum und so weiter. Die Inside-Methode muss zuerst ausgewertet werden, damit die Methode um sie herum einen Wert hat, der als Argument übergeben werden kann. Wenn die Methodenkette von außen gestartet wird, werden die Argumente/Parameter der ersten Methode nicht ausgewertet, sodass der Computer nicht weiß, welcher Wert an diese Methode übergeben werden soll.

1

Ja, zuerst wird Math.min berechnet, gefolgt von Math.abs. Die Regeln, die Sie in Ihrem Mathematikunterricht gelernt haben, gelten auch für die Programmierung.

Math.abs(Math.min(-6,3)); 
Math.abs(-6); 
6