Jetzt lerne ich Java 6

Arithmetische Operatoren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Neben den vier Grundrechnungsarten, die jeder von uns in der Grundschule erlernt, kennen Programmiersprachen auch den Modulo-Operator: Um diese fünf Operatoren, deren Typprobleme und um selbstgewählte Berechnungsreihenfolgen ... darum geht es in diesem Film.
10:15

Transkript

Programmierern sagt man immer nach, dass sie ein Faible für Mathematik haben müssen. Meine Theorie - muss nicht unbedingt sein, aber hier in diesem Film geht es um die arithmetischen Operatoren. Denn einfache Berechnungen werden Sie immer wieder innerhalb Ihrer Programme benötigen. Daher schauen wir uns die Operatoren einmal etwas näher an. In diesem Programm, was ich schon mal ein bisschen vorgegeben habe, finden wir hier oben die Definition von zwei Integer-Zahlen. Ich hab' sie einfach die "izahl_a" und "izahl_b" genannt. Und hier auch direkt schon mal die Deklaration eines Integer-Ergebnisses "ierg". Und das Ganze auch für Double. Und nun wollen wir einfach mal die Ganzen verrechnen. Wir wollen also erst einmal ein Integer-Ergebnis haben. Zum Beispiel: izahl_a + izahl_b Und weil wir das Ganze natürlich auch ausgeben lassen wollen, brauchen wir wieder unser System.out.println Und hier ein kleiner Tipp: in der NetBeans-Umgebung, wenn Ihnen das zu viel Arbeit ist, schreiben Sie doch einfach mal "sout". Für System.out.println schreibt sich "sout", setzen ein Leerzeichen - und schropp, siehe da - Sie haben komplett System.out.println dort stehen. Dies ist eine von vielen Textmakros, die Sie in Ihrem Job selber definieren können. Nun, jetzt aber zu unserem Ergebnis. Wir schreiben das hierher jetzt kurz rein und lassen das hier hinten ausgeben. Testen wir das Ganze. Und wir sehen, das Ergebnis ist 10. Also eine einfache Addition. Ein paar Dinge sollten wir uns jetzt aber etwas näher anschauen. Einmal hier an dieser Stelle steht das Pluszeichen. Das Pluszeichen ist an dieser Stelle ein arithmetischer Operator. Die beiden Integer werden miteinander verrechnet. Das Ganze liest sich von rechts nach links in so einer Berechnung. Das bedeutet, zuerst werden zahl_a und zahl_b miteinander verrechnet mit Hilfe des Operators, und dann in die Speicherzelle für "ierg" gelegt. Also, von rechts nach links. Hier unten haben wir auch noch einmal ein Pluszeichen. Aber dies ist nun nicht ein arithmetischer Operator. An dieser Stelle ist das Pluszeichen ein Verknüpfungsoperator. Denn wir hängen an diesen String, an diese Zeichenkette, hier hinten das Ergebnis an, und zwar als String. Und dementsprechend muss man manchmal etwas aufpassen, dass einmal das Pluszeichen eben ein arithmetischer Operator ist, wie hier oben, und einmal eben ein Verknüpfungsoperator, wie hier unten. Nun, damit wir uns das Ganze jetzt nicht noch mit Minus anschauen müssen - logisch, das Minus ist der keine Strich auf Ihrer Tastatur und die Multiplikation des Ganzen ist das Sternchen. Damit haben wir also schon mal plus, minus und mal. Geteilt? - nun, das ist jetzt nicht ganz so einfach. Das werden Sie gleich sehen. Schauen wir uns das Ergebnis mal hier an. Wir haben 6 geteilt durch 4. Nun, kann man im Kopf rechnen, aber Sie werden mir zustimmen - da kommt kein ganzes Ergebnis raus. Wir haben aber hier zwei Integer-Zahlen, die miteinander verrechnet werden, und dort wollen wir auch einen Integer als Ergebnis haben. Schauen wir uns das kurz an. Und Sie sehen, als Ergebnis bekommen wir 1. Nun, knapp richtig. Was würde denn passieren, wenn wir an dieser Stelle einfach mal das als Double ausgeben lassen würden? Also nehmen wir das "i" weg, hier und hier. Das heißt, hier bei der Berechnung könnte das Ergebnis hier schon Doublewert sein. Und den würde ich hier unten ausgeben. Lassen wir das Ganze kurz ausführen. Und Sie sehen, wir bekommen ein Double 1.0, aber immer noch das falsche Ergebnis. Darauf bin ich schon mal eingegangen. Bei der Division ist das so, dass sich Java diesen Teil zuerst einmal separat anschaut. Und hier steht eben Integer durch Integer. Und zwei Integer, wenn die miteinander geteilt werden - wird automatisch ein Integer-Ergebnis erzeugt. Das heißt, die Nachkommastellen fallen weg. Und dementsprechend müssen Sie an solchen Stellen sehr sehr genau aufpassen. Die Lösung unseres kleinen Problems wäre, dass wir hier auf der rechten Seite auch Doublewerte stehen hätten. Und dafür würde auch ein einziger Doublewert genügen. Wir können jetzt entweder hier die beiden Doubles verwenden - die zahl_a und die zahl_b - das können wir hier kurz anschauen - und schon bekommen wir das richtige Ergebnis. Oder wir können das Ganze durch eine Typumwandlung, also Casting machen. Das möchte ich auch kurz zeigen. Denn es genügt, wenn nur ein einziger dieser beiden Operanten ein Doublewert ist. Dann wird automatisch der andere ebenfalls in die nächste Klasse gehoben. Das könnten wir hier zum Beispiel uns anschauen. Wir schreiben in Klammern noch mal "double" davor. Und wenn wir das Ganze dann ausführen lassen, sehen wir auch das korrekte Ergebnis. So viel zur einfachen Division hier. Das Ganze geht jedoch noch ein Stückchen weiter. Denn es gibt einen gefährlichen Punkt bei der Division. Und zwar die Division durch Null. Es kann passieren, dass aus irgendeinem Grund einmal eine Division durch Null stattfinden. Wenn Sie irgendeine Zahl durch Null teilen, kommen Sie zu einem Ergebnis "unendlich". Und "unendlich" ist eben keine Zahl mehr. Und hier verhält sich Java je nachdem, ob Sie eine Integer-Division haben oder eine Gleitkommadivision, bei Double zum Beispiel, unterschiedlich. Und das wollen wir uns auch hier noch kurz anschauen. Wir haben zur Zeit eine Integer-Division und wir nehmen hier einfach mal die Zahl und setzen die hier oben auf 0. Und da wir das Ganze ausführen lassen, bekommen wir hier während der Ausführung eine Exception, und zwar eine "ArithmeticException". Das bedeutet, hier ist eine Division durch Null aufgetreten. Und das kann man später im ExceptionHandling, also bei der Ausnahmebehandlung auch abfangen. Das passiert also bei Integer. Bei Doublewerten wird das Ganze in Java etwas anders gehandhabt. Machen wir das zuerst einmal und dann setzen wir hier das hier auf 0. Jetzt haben wir also eine Double-Division durch 0. Und wenn ich das ausführen lasse, sehen wir, bekommen wir keine Exception, aber ein ganz interessantes Ergebnis. Und zwar: Infinity - unendlich. Infinity ist keine Zahl in dem Sinne, aber es wird festgelegt: Okay, das Ergebnis ist unendlich. Und es gibt die Möglichkeit, später Infinity auch abzufragen, und damit könnten Sie gezielt auch während des Programmablaufs ohne eine Exception damit auch arbeiten. So viel zur Division. Jetzt habe ich Ihnen noch versprochen, es gibt doch einen Operator, den Sie nicht ganz so häufig finden werden. Und den wollen wir uns natürlich auch noch anschauen. Die Rede ist von Modulo. Sie erste Frage ist - was ist denn jetzt Modulo? Also, plus, minus, mal, geteilt - das ist schon logisch. Aber was ist Modulo? Nun, wenn Sie einen Grundschüler fragen würden: was ergibt denn 6 durch 4? Dann wüsste er auch eine Antwort. Diese Antwort würde lauten: das ergibt 1 mit einem Rest. Und zwar, mit einem Rest - 2. Und genau das tut Modulo. Bei Modulo ermitteln Sie den Rest, der bleibt bei einer Division. Und der Operator von Modulo ist das Prozentzeichen. Also das Prozent, gemeint jetzt hier nichts mit Prozent, sondern es steht als Operator zwischen diesen beiden. Und wir nehmen hierfür wieder einfach die Integer. Und lassen das Ganze mal ablaufen. Und Sie sehen, wir bekommen ein Ergebnis von 2: das ist also der Rest. Wie man das rechnet? Nun, wenn Sie grade keinen Grundschüler bei Hand haben, dann berechnen wir das hier mal zusammen. 6 durch 4 wäre 1, einmal passt die 4 in die 6, dann bleiben eben von 4 bis 6 noch 2 über. Und das bekommen Sie als Ergebnis. Wunderbar! Für was braucht man so was? Nun, zum Beispiel, bei Ergebnislisten. Sie bekommen aus einer Datenbank eine beliebige Anzahl von Ergebnissen. Sagen wir mal 77. Auf jeder Darstellungsseite können Sie aber nur 10 Ergebnisse abbilden. Danach muss man blättern. Die Frage ist - wie viele Ergebnisse haben Sie auf der letzten Seite? Nun, Sie werden mit Sicherheit sagen: klar, ist doch ganz einfach - 7. Nun, das könnten Sie mit Modulo auch direkt ausrechnen. Hierfür müssten wir hier oben nur sagen 77, hier unten sagen - 10. Wenn wir das Ganze ausführen lassen, bekommen wir als Ergebnis - 7. Dafür ist Modulo gut. Damit enden wir mit den arithmetischen Operatoren. Und es bleibt natürlich noch eine Sache zu klären: Wie sieht das denn aus mit der Berechnungsreihenfolge? Nun, auch in Java gilt: Punktrechnung geht vor Strichrechnung. Und in unklaren Fällen oder wenn Sie da dran ein bisschen tüfteln wollen, dann dürfen Sie beliebig Klammern setzen. Das heißt, wenn Sie jetzt sagen wollen: okay, izahl_a * izahl_a + izahl_b, würden zuerst einmal in Java die beiden miteinander multipliziert werden, und das Ergebnis wird dann um diesen Wert (RG) erhöht. Sie können aber hingehen und sagen: okay, ich klammere das Ganze anders. Wir dürfen beliebig viele Klammern setzen. Dann wird zuerst der Inhalt dieser Klammer ausgerechnet separat, und dann das Ganze hiermit multipliziert.

Jetzt lerne ich Java 6

Steigen Sie ein in die Programmierung mit Java 6, lernen Sie die Grundlagen kennen und unternehmen Sie anschließend Ihre ersten Schritte in der objektorientierten Programmierung.

12 Std. 27 min (98 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!