Preview only show first 10 pages with watermark. For full document please download

Programmiertechnik Skalare Typen,variablen

   EMBED


Share

Transcript

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Skalare Typen,Variablen, Zuweisungen int inti;i; long longj;j; boolean booleanisEmpty; isEmpty; double average; double average; char charnaechstesZeichen; naechstesZeichen; j j==42L; 42L; i i==(int) (int)j;j; isEmpty isEmpty==true; true; average = 37.266; average = 37.266; naechstesZeichen naechstesZeichen=='h'; 'h'; Java-Ganzzahltypen Erinnerung ● Ganze Zahlen heißen auf englisch und in Programmiersprachen Integers ● Java definiert 4 verschiedene Integertypen, deren Länge und damit auch Wertebereich fest definiert sind. Typ Länge kleinste darstellbare Zahl größte darstellbare Zahl byte 8 Bit -128 127 short 16 Bit -32‘768 32‘767 int 32 Bit -2‘147‘483‘648 2‘147‘483‘647 long 64 Bit -9‘223‘372‘036‘854‘775‘808 9‘223‘372‘036‘854‘775‘807 Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 2/18 Java-Zeichentypen ● Die englische Bezeichnung characters (chars) ist auch im Deutschen geläufiger ● Java verwendet 16-bit Unicode characters ● Syntax in Java: char ● Characters können auch als 2 Byte lange, vorzeichenlose Ganzzahlen verwendet werden Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 3/18 Java-Booleans (1) ● Booleans sind logische ("boolsche") Werte. – Sie können den Wahrheitswert wahr oder falsch annehmen, – sie können logisch miteinander verknüpft werden (A oder B, A und B, nicht A). Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 4/18 Java-Booleans (2) ● ● Syntax in Java: boolean – mögliche Werte: true oder false. Im Speicher dargestellt als 4-Byte int, von dem nur 1 Bit verwendet wird – speicherineffizient: 32 Bit belegt, 1 Bit verwendet – einfach, schnell, da Prozessoren auf wortgroße Daten optimiert sind Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 5/18 Überblick: Skalare Typen in Java Typ Format, mögliche Werte byte 8-Bit-Ganzzahl in 2-er Komplementdarstellung short 16-Bit-Ganzzahl in 2-er Komplementdarstellung int 32-Bit-Ganzzahl in 2-er Komplementdarstellung long 64-Bit-Ganzzahl in 2-er Komplementdarstellung float 32-Bit-Gleitkommazahl nach IEEE 754 double 64-Bit-Gleitkommazahl nach IEEE 754 char 16-Bit-Unicode-Zeichen boolean true, false Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 6/18 Variablen ● ● Variablen sind benannte und typisierte Speicherportionen, die Werte des angegebenen Typs enthalten können. Variablen müssen vor ihrer Benutzung deklariert werden, etwa: int int i;i; boolean boolean isEmpty; isEmpty; Merke: Erst Typ, dann Name! double average; double average; short short index1; index1; char char naechstesZeichen; naechstesZeichen; Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 7/18 Variablen - Java-Namenskonventionen ● ● ● sprechende Namen: isEmpty statt b17 (lange Variablennamen erzeugen keinen langen Code!) Variablennamen beginnen mit einem Kleinbuchstaben zusammengesetzte Namen → Anfangsbuchstaben der Folgewörter groß Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 8/18 Literale ● ● Literale sind typisierte Konstanten, die etwa verwendet werden können um Variablen zu initialisieren. Verschiedene Typen erfordern Literale in verschiedenen Formaten: Typ Beispielliterale byte 127, -128 short 32456 int 60273 long 13292367454L, 13292367454l float 87.363F, 87.363f double 37.266, 37.266D, 37.266d, 26.77e3 char 'A', 'h' boolean true, false Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 9/18 Zuweisungen ● eine Zuweisung (Assignment) erlaubt, einer Variablen v einen Wert w zuzuweisen ● w muss denselben (oder einen engeren) Typ haben wie v. ● Syntax (Schreibweise): v = w; ● ● Vorsicht: Das Gleichheitszeichen "=" bedeutet nicht "Test auf Gleichheit", sondern "mache linke Seite der rechter Seite gleich". In Pseudocode wird Zuweisung häufig geschrieben als: v ← w. → Warum kann die linke Seite einer Zuweisung nur eine Variable und kein Literal sein? Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 10/18 Zuweisungen - Beispiele int int i;i; int int j;j; boolean boolean isEmpty; isEmpty; double double average; average; char char naechstesZeichen; naechstesZeichen; ii = = 178; 178; jj = = i;i; isEmpty isEmpty = = true; true; average average = = 37.266; 37.266; naechstesZeichen naechstesZeichen = = 'h'; 'h'; Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH oder auch: int int ii = = 178, 178, j;j; boolean boolean isEmpty isEmpty = = true; true; double double average average = = 37.266; 37.266; char char naechstesZeichen naechstesZeichen = = 'h'; 'h'; jj = = i;i; 11/18 Automatische Typumwandlung (auch: implizite Typwandlung/Typanpassung/Typkonversion) ● ● ● englisch: automatic/implicit type conversion/cast Werte engerer (niedriger) Typen können an Variablen weiteren (höheren) Typs zugewiesen werden – Java führt automatische Konversion durch Beispiel: Aber nicht: int int ii = = 17; 17; long long j;j; int int i;i; long long jj = = 42L; 42L; jj = = i;i; ii = = j;j; Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 12/18 Skalare Typhierarchie Der Wertebereich eines engeren Typs ist eine Teilmenge des Wertebereichs eines weiteren Typs. Für die enger-Beziehung "◄" gelten folgende Regeln: 1.Ganzzahltypen ◄ Gleitzahltypen 2.Ganzzahltypen: byte ◄ short ◄ int ◄ long 3.Gleitzahltypen: float ◄ double 4.char ◄ int ● ● aus 1, 2 und 3 ergibt sich: ● byte ◄ short ◄ int ◄ long ◄ float ◄ double aus 1, 2 und 4 ergibt sich: ● char ◄ int ◄ long ◄ float ◄ double Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 13/18 Skalare Typhierarchie Merke: ● ● Kein anderer Typ kann in boolean konvertiert werden, oder umgekehrt Die Wandlung von einer Ganzzahl in eine Gleitzahl kann zu Präzisionsverlust führen! – int → float – long → float – long → double Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 14/18 Explizite Typumwandlung ● ● ● Explizite Typwandlung ist in zwei Richtungen möglich: – aufwärts (englisch: upcast): enger Typ → weiter Typ – abwärts (englisch: downcast): weiter Typ → enger Typ Abwärtskonvertierung führt zu Fehlern, wenn Wert nicht in niedrigeren Typen passt! Beispiel Aufwärtskonvertierung: int int ii = = 17; 17; long long j;j; jj = = (long) (long) i;i; Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 15/18 Explizite Typumwandlung 1. Beispiel Abwärtskonvertierung: int inti;i; long longj j= =42L; 42L; i i= =(int) (int)j;j; 2. Beispiel Abwärtskonvertierung: int inti;i; long longj j= =2500000000L; 2500000000L; i i= =(int) (int)j;j; → i enthält den Wert -1794967296! – Warum? Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 16/18 Strings ● ● ● Strings, d.h. Zeichenketten, sind kein skalarer Typ, sondern Objekte. Strings sind so fundamental, dass es wichtig ist Grundlegendes über ihre Verwendung zu wissen. Eine String-Variable wird genauso deklariert wie eine Variable skalaren Typs: String Stringtext; text; ● Einer String-Variablen kann ein Text zugewiesen werden: text text= ="Hallo, "Hallo,Welt!"; Welt!"; ● Beides kann zusammengefasst werden zu: String Stringtext text= ="Hallo, "Hallo,Welt"; Welt"; Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 17/18 Zu guter Letzt... We all know that 666 is the number of the Beast, but did you know that... 670 - Approximate number of the Beast DCLXVI - Roman numeral of the Beast 666.0000000 - Number of the High Precision Beast 665.9999954 - Number of the Pentium Beast 0.666 - Number of the Millibeast 1010011010 - Binary of the Beast $665.95 - Retail price of the Beast $699.25 - Price of the Beast plus 5% state sales tax $769.95 - Price of the Beast with all accessories and replacement soul $606.66 - Wal-Mart price of the Beast Route 666 - Way of the Beast 666 F - Oven temperature for roast Beast 666 mg - Recommended Minimum Daily Requirement of Beast Lotus 6-6-6 - Spreadsheet of the Beast Word 6.66 - Word Processor of the Beast i66686 - CPU of the Beast 666i - BMW of the Beast 668 - Next-door neighbor of the Beast Prof. Dr. Oliver Haase, HTWG Konstanz Karl Martin Kern, Seitenbau GmbH Achim Bitzer, Seitenbau GmbH 18/18