Math-Klasse
Kurz: Javas eingebaute Klasse java.lang.Math mit statischen Methoden für mathematische Operationen — Wurzel, Potenz, Rundung, Zufallszahlen und mehr.
Genauer: Alle Methoden sind statisch, man ruft sie also direkt über den Klassennamen auf, ohne ein Objekt zu erzeugen: Math.sqrt(16), Math.pow(2, 10), Math.max(a, b), Math.random(). Da die Klasse Teil von java.lang ist, braucht es dafür keinen expliziten import.
Im Detail
double wurzel = Math.sqrt(16); // 4.0
double potenz = Math.pow(2, 10); // 1024.0
int maximum = Math.max(5, 12); // 12
int minimum = Math.min(5, 12); // 5
int absolut = Math.abs(-7); // 7
double zufall = Math.random(); // 0.0 bis (exklusiv) 1.0
// Runden - drei verschiedene Bedeutungen!
long gerundet = Math.round(4.5); // 5 - normales kaufmännisches Runden
double aufgerundet = Math.ceil(4.1); // 5.0 - immer aufrunden
double abgerundet = Math.floor(4.9); // 4.0 - immer abrunden
// Zufallszahl in einem bestimmten Bereich (z.B. 1 bis 6, wie ein Würfel)
int wuerfel = (int) (Math.random() * 6) + 1;Math.random() liefert immer einen double zwischen 0.0 (inklusive) und 1.0 (exklusiv) — um daraus eine Ganzzahl in einem bestimmten Bereich zu erzeugen, muss man selbst mit der Bereichsgröße multiplizieren, zu int casten (schneidet die Nachkommastellen ab, rundet also praktisch immer ab) und den Startwert addieren. Für ernsthaftere Zufallszahlen-Anwendungsfälle (z. B. mehrere Zufallszahlen mit reproduzierbarem Seed für Tests) ist die Klasse java.util.Random flexibler, weil sie direkte Methoden wie nextInt(6) für einen Bereich bereitstellt und einen expliziten Startwert (Seed) akzeptiert. Math.round(double) gibt bei einem double-Argument einen long zurück (bei float einen int) — eine häufige Cast-Falle, wenn das Ergebnis direkt einer int-Variable zugewiesen werden soll.
Siehe auch: double, Type Casting