Die Verarbeitung von Zahlen und Zeichen in Java wird in der
neununddreißigsten Episode des Anwendungsentwickler-Podcasts
behandelt. TL;DR Mit meiner Lernzielkontrolle zu Zahlen und Zeichen
in Java kannst du dein Grundlagenwissen als IT-Azubi prüfen. Du
erfährst, wie Zahlenliterale und Datentypen funktionieren, was bei
Ganzzahldivision und Überläufen passiert und weshalb
Gleitkommazahlen beim Rechnen ungenau sein können. Dazu kommen char
und String, Escape-Sequenzen sowie der Zusammenhang zwischen
Zeichen und Zahlenwerten. Für präzise Dezimalberechnungen steht dir
BigDecimal zur Verfügung; bei primitiven Datentypen und ihren
Wrapper-Klassen begegnen dir außerdem Boxing und Unboxing.
Kapitelmarken [00:00:20] Lernzielkontrolle zu Zahlen und Zeichen
[00:01:43] Zahlenliterale in verschiedenen Zahlensystemen
[00:04:14] Ganzzahlige Datentypen und Wertebereiche [00:06:45]
Standardtyp int und das Suffix L für long [00:08:26] Zahlen mit
Unterstrichen lesbarer schreiben [00:10:03] Ganzzahldivision und
Cast auf double [00:12:10] Überläufe bei ganzzahligen Datentypen
[00:15:19] Gleitkommazahlen mit double und float [00:17:33]
Ungenauigkeiten von Gleitkommazahlen [00:20:50] Präzise
Dezimalberechnungen und BigDecimal [00:22:11] Genauigkeitsverlust
beim Cast von double auf int [00:23:27] Einzelne Zeichen und
Strings [00:24:29] Escape-Sequenzen für besondere Zeichen
[00:29:05] Zeichenwerte, ASCII und Cäsar-Verschlüsselung [00:32:25]
Primitive Datentypen, Wrapper und Boxing [00:34:13] Shownotes und
Themenliste für die Abschlussprüfung [00:35:36] Mehrere
Programmiersprachen kennenlernen [00:36:28] Kontakt, Feedback und
Newsletter [00:38:06] Ausblick auf Werkzeuge für Entwickler:innen
Inhalt Zahlen Welche Präfixe kennt Java zur Eingabe von Zahlen in
verschiedenen Zahlensystemen? 0b für Binär-, 0 für Oktal- und 0x
für Hexadezimalzahlen. Welche ganzzahligen Datentypen gibt es in
Java? byte (8bit), short (16bit), int (32bit), long (64bit). Was
ist der Standarddatentyp für Ganzzahlen in Java? Integer. Wie
zwingt man Java zur Verwendung eines anderen Datentyps für
numerische Variablen? Mit den entsprechenden Suffixen (z.B. L für
Long). Wie kann man sehr große Zahlen besser lesbar eingeben? Mit _
als Trennzeichen. Worauf muss man bei der Division zweier
Integer-Werte achten? Das Ergebnis ist auch ein Integer, also ggfs.
falsch. Was ist ein Overflow? Wenn eine numerische Variable einen
Wert zugewiesen bekommt, der zu groß für ihren Wertebereich ist,
"läuft sie über" und beginnt bei der kleinsten negativen Zahl
weiterzuzählen. Was ist der Standarddatentyp für Dezimalzahlen in
Java? Double. Wie gibt man eine Dezimalzahl in Java ein? Mit . als
Tausendertrennzeichen. Warum könnte die mangelnde Präzision von
Gleitkommazahlen ein Problem sein? Weil mathematische Berechnungen
ggfs. ein falsches Ergebnis produzieren. Warum kann man einer
Integer-Variablen keinen Double-Wert zuweisen? Weil das einen
Genauigkeitsverlust zur Folge hätte. Zeichen Wie gibt man einen
char in Java ein? In einfachen Anführungszeichen (''). Was ist ein
String? Ein Datentyp, der beliebige alphanumerische Zeichen
speichern kann. Wie schreibt man Strings in Java? In normale
Anführungszeichen (""). Wie escapet man Zeichen in Java? Mit einem
Backslash (\). Welche wichtigen besonderen Zeichen sollte man
kennen? Zeilenumbruch \n und Tabstop \t. Wie hängen char und int
zusammen? Man kann sie implizit ineinander umwandeln. Der Zahlwert
steht für die ASCII-Position der Buchstaben. Was sind primitive
Datentypen? Datentypen, die nur einen simplen Wert aufnehmen können
und keine Methoden besitzen. Literaturempfehlungen 2 Imperative
Sprachkonzepte - Rheinwerk Computing :: Java ist auch eine Insel 4
Der Umgang mit Zeichenketten - Rheinwerk Computing :: Java ist auch
eine Insel The Java Tutorials *(direkt beim Rheinwerk-Verlag
bestellen*) *(direkt beim Rheinwerk-Verlag bestellen*) Links
Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts Letzte
Woche auf der Website: Liste möglicher Themen der
IHK-Abschlussprüfung und Muss man mehr als eine Programmiersprache
beherrschen?. Ascii Table - ASCII character codes and html, octal,
hex and decimal chart conversion 9.2 Wrapper-Klassen und Autoboxing
- Rheinwerk Computing :: Java ist auch eine Insel Zusammenfassung
Zahlen in Java schreiben Mit dieser Lernzielkontrolle schließe ich
meine erste Reihe zu den Java-Grundlagen vorerst ab. Nach Variablen
und logischen Operatoren kannst du hier dein Wissen über Zahlen und
Zeichen prüfen. Im Quellcode kannst du ganze Zahlen in
verschiedenen Zahlensystemen schreiben: | Zahlensystem |
Schreibweise | | --- | --- | | Dezimal | Zahl ohne besonderes
Präfix | | Binär | 0b vor der Zahl | | Oktal | führende 0 | |
Hexadezimal | 0x vor der Zahl | Bei einer führenden Null
interpretiert Java ein ganzzahliges Literal als Oktalzahl. Dort
sind die Ziffern von 0 bis 7 erlaubt, weshalb eine enthaltene 8
oder 9 einen Compilerfehler verursacht. Hexadezimalzahlen können
zusätzlich die Zeichen a bis f enthalten. Wenn du solche Werte mit
println ausgibst, erscheint ihr Dezimalwert. Beispielsweise ergibt
0b01 bei der Ausgabe 1. Ganzzahlige Datentypen und Wertebereiche
Für ganze Zahlen stehen dir vier primitive Datentypen zur
Verfügung: | Datentyp | Bitlänge | | --- | --- | | byte | 8 Bit | |
short | 16 Bit | | int | 32 Bit | | long | 64 Bit | Mit den 8 Bit
eines byte lassen sich 256 verschiedene Werte darstellen. Sein
Wertebereich reicht von -128 bis 127. Bei den ganzzahligen
Datentypen liegt der kleinste negative Wert betragsmäßig jeweils um
eins über dem größten positiven Wert, weil auch die Null einen
Platz braucht. Ein int bietet insgesamt ungefähr 4,2 Milliarden
verschiedene Werte, davon etwa 2,1 Milliarden im positiven Bereich.
Für eine eigene positive ID für jeden Menschen auf der Erde reicht
dieser Bereich daher nicht aus. Ein long bietet dafür genügend
Platz. Eine IPv6-Adresse mit ihren 128 Bit überschreitet wiederum
die Länge eines einzelnen long. Literale und lesbare Zahlen
Ganzzahlige Literale haben standardmäßig den Typ int. Mit einem
großen L am Ende, beispielsweise 75L, kennzeichnest du ein Literal
als long. Bei großen Zahlen, die den Wertebereich von int
überschreiten, brauchst du dieses Suffix. Durch Unterstriche
zwischen Ziffern kannst du längere Zahlen leichter lesen. 1_000
steht für denselben Wert wie 1000, wobei Java die Unterstriche beim
Verarbeiten ignoriert. Die Gruppen kannst du passend zum jeweiligen
Wert wählen. Gerade bei Testwerten lässt sich so schneller
erkennen, welche Zahl im Code steht. Division mit ganzen Zahlen
Wenn beide Operanden ganzzahlig sind, liefert die Division ein
ganzzahliges Ergebnis. Dabei wird der Nachkommateil abgeschnitten.
Auch bei double d = 5 / 3; wird zunächst ganzzahlig gerechnet,
sodass d anschließend den Wert 1.0 erhält. Für ein Ergebnis mit
Nachkommastellen muss mindestens ein Operand als Gleitkommazahl
vorliegen. Das erreichst du beispielsweise mit einem Cast: double d
= (double) 5 / 3;. Überläufe Erhöhst du einen byte über seinen
Maximalwert 127 hinaus, entsteht ein Overflow, also ein Überlauf.
Beim nächsten Wert springt er auf -128. Am Bitmuster lässt sich der
Übergang nachvollziehen: Aus 01111111 wird durch das Erhöhen um
eins 10000000. Dieses Muster steht beim byte für den kleinsten
negativen Wert. Auch bei den anderen ganzzahligen Datentypen setzt
sich die Folge nach dem größten positiven Wert beim kleinsten
negativen Wert fort. Wiederholtes Erhöhen durchläuft den
Wertebereich im Kreis. Gleitkommazahlen und präzises Rechnen Für
ein Literal mit Nachkommastellen ist double der Standardtyp. Im
Java-Code schreibst du den Dezimaltrenner als Punkt, etwa 12.37.
Mit einem angehängten f kennzeichnest du den Wert als float,
beispielsweise 12.37f. Da float weniger Speicher beansprucht, kommt
dieser Typ infrage, wenn sein Wertebereich für deine Aufgabe
ausreicht. In meinen bisherigen Programmen habe ich mit double
gearbeitet. Woher Ungenauigkeiten kommen Gleitkommazahlen bilden
Werte mithilfe von Zweierpotenzen ab. Hinter dem Binärkomma stehen
dabei Bruchteile wie ein Halb oder ein Viertel; jede weitere Stelle
halbiert den Stellenwert erneut. Ein Wert wie 0.1 lässt sich damit
nur angenähert speichern. Wenn du ihn zehnmal addierst, kann
deshalb ein Ergebnis knapp unter 1 entstehen. Solche Abweichungen
ergeben sich bereits aus den gespeicherten Werten und wirken sich
beim Rechnen aus. Für präzise Dezimalberechnungen, etwa bei
Rechnungsbeträgen oder in Versicherungsanwendungen, steht dir in
Java BigDecimal zur Verfügung. In C# heißt der entsprechende Typ
Decimal. Prüfe für deine Programmiersprache, welcher Datentyp die
geforderte Genauigkeit ermöglicht. Als ich meine ersten
Berechnungen für eine Versicherung in C# mit double geschrieben
hatte, musste ich nach den fehlerhaften Ergebnissen die
betreffenden Werte durch Decimal ersetzen. Dafür brauchte ich fast
einen halben Tag. Werte ausdrücklich umwandeln Bei int a = 2.7;
meldet der Compiler einen Fehler, weil beim Wechsel von double zu
int der Nachkommateil verloren geht. Mit int a = (int) 2.7;
erlaubst du diesen Schritt ausdrücklich. Das Ergebnis ist 2, da der
Cast den Nachkommateil abschneidet. Ein solcher Cast macht
kenntlich, dass du den möglichen Genauigkeitsverlust bewusst
akzeptierst. Zeichen und Zeichenketten Ein einzelnes Zeichen
schreibst du mit einfachen Anführungszeichen, beispielsweise char
zeichen = 'A';. Für Zeichenketten steht dir String zur Verfügung,
etwa String text = "Hallo";. Darin können Buchstaben ebenso wie
Ziffern, Umlaute oder Sonderzeichen stehen. Escape-Sequenzen Für
besondere Zeichen innerhalb eines Literals setzt du einen Backslash
vor das folgende Zeichen: | Escape-Sequenz | Bedeutung | | --- |
--- | | \n | Zeilenumbruch | | \t | Tabulator | | \\ | Backslash
als Zeichen | Wenn du beispielsweise einen Windows-Dateipfad im
Quellcode schreibst, brauchst du für jeden enthaltenen Backslash
die Sch
Kommentare (0)
Melde dich an, um einen Kommentar zu schreiben.