Einfache Datentypen in JAVA

Ähnliche Dokumente
Einstieg in die Informatik mit Java

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Einstieg in die Informatik mit Java

3. Java - Sprachkonstrukte I

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

3.2 Datentypen und Methoden

Einstieg in die Informatik mit Java

3. Anweisungen und Kontrollstrukturen

Java I Vorlesung Imperatives Programmieren

Anweisungen zur Ablaufsteuerung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

12 Abstrakte Klassen, finale Klassen und Interfaces

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

RO-Tutorien 3 / 6 / 12

Klassen als Datenstrukturen

Fragenkatalog ESOP WS 16/17

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Methoden und Wrapperklassen

Java-Schulung Grundlagen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Einstieg in die Informatik mit Java

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Programmieren I. Kapitel 5. Kontrollfluss

4. Vererbung Die Klasse Object. Die Klasse Object

RO-Tutorien 15 und 16

1 Klassen anlegen und Objekte erzeugen

Java Kurzanleitung Kapitel 1 Kontrollstrukturen:

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

6. Globalübung (zu Übungsblatt 8)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Repetitorium Informatik (Java)

Ein erstes Java-Programm

Java - Programmierung - Prozedurale Programmierung 1

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Datenbankanwendungsprogrammierung Crashkurs Java

1 Klassen anlegen und Objekte erzeugen

Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

3 Objektorientierte Konzepte in Java

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

1 Abstrakte Klassen, finale Klassen und Interfaces

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Programmieren in Java

Grundlagen der Informatik 0

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Probeklausur: Programmierung WS04/05

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Theorie zu Übung 8 Implementierung in Java

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Algorithmen zur Datenanalyse in C++

Kapitel 10. Programmierkurs. Grundlagen von Exceptions Behandlung von Exceptions

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Interfaces und Vererbung

Primitive Datentypen

Vererbung, Polymorphie

JAVA-Datentypen und deren Wertebereich

Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Martin Unold INFORMATIK. Geoinformatik und Vermessung

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Programmieren in Java -Eingangstest-

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Kleines Java-Glossar zum Praktikum Einführung in das Programmieren

Objektorientierte Programmierung Studiengang Medieninformatik

3 Objektorientierte Konzepte in Java

2. Programmierung in C

Einstieg in die Informatik mit Java

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Modellierung und Programmierung 1

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Tag 4 Repetitorium Informatik (Java)

Java I Vorlesung Collections

Transkript:

5.4.1. Einfache Datentypen in JAVA Ganzzahlige Datentypen byte 8 bits -128 <= b <= 127 short 16 bits -32768 <= s <= 32767 int 32 bits -2^31 <= i <= 2^31-1 long 64 bits -2^63 <= l <= 2^63 1 Beispiele: byte b = -7; short s = 0; const int studenten = 250; long l = +3000000; F1

5.4.1. Einfache Datentypen in JAVA Operationen auf ganzzahligen Datentypen unäre Arithmetik + - binäre Arithmetik + - * / % unäre Bitoperationen ~ (bitweises Komplement) binäre Bitoperationen << >> >>> shift left, shift right, shift right and fill with zeros binäre Vergleiche > >= ==!= <= < ternäre Bedingung?: unäre Logik! binäre Logik & ^ && und, oder, exklusives oder, und(verkürzt), oder(verkürzt) unäre Inkrementierung ++ -- Zuweisung = += -= *= /= %= &= = ^= <<= >>= >>>= F2

5.4.1. Einfache Datentypen in JAVA Gleitkommatypen float 32 Bits { -3.402...E+38,..., -1.401...E-45, 0, 1.401... E-45,..., 3.402...E+38 } double 64 Bits { -1.7976...E+308,..., -4.9406...E-324, 0, 4.9406...E-324,..., 1.7976...E+308 } Beispiele: float f = 0.0; const double d = 0.1d; F3

5.4.1. Einfache Datentypen in JAVA Operationen auf Fließkommatypen unäre Arithmetik + - binäre Arithmetik + - * / binäre Vergleiche > >= ==!= <= < ternäre Bedingung?: Zuweisung = += -= *= /= Hinweise: Sind beide Operanden vom Typ float, ist das Ergebnis ein float, sonst double! Zwei Gleitkommazahlen sollte man wegen Rundungsfehler nie auf Gleichheit testen, sondern stets abs(x-y) < EPSILON verwenden! F4

5.4.1. Einfache Datentypen in JAVA Zeichen char 2 Bytes \u0000 <= c <= \uffff Beispiele: char c = 'a'; char x = \u0061; F5

5.4.1. Einfache Datentypen in JAVA Operationen auf Zeichen unäre Arithmetik + - binäre Arithmetik + - * / % unäre Bitoperationen ~ (bitweises Komplement) binäre Bitoperationen < >> >>> shift left, shift right, shift right and zero fill binäre Vergleiche > >= ==!= <= < ternäre Bedingung?: unäre Logik! binäre Logik & ^ && und, oder, exklusives oder, und (verkürzt), oder (verkürzt) unäre Inkrementierung ++ -- Zuweisung = += -= *= /= %= &= = ^= <<= >>= >>>= F6

5.4.1. Einfache Datentypen in JAVA Boolscher Datentyp boolean 1 byte true, false Beispiele: boolean istganzzahl = true; boolean istbeladen = false; Operationen binäre Bitoperationen & ^ und, oder, exklusives oder binäre Vergleiche ==!= F7

5.4.1. Einfache Datentypen in JAVA Prioritäten bei Operatoren 15., [], () Komponenten bei Klassen, Komponenten bei Feldern, Methode 14 ++,--,+,-,~,! unäre Operationen 13 (type) explizite Typkonvertierung 12 *,/,% Multiplikative Operatoren 11 +,- Additive Operatoren 10 <<,>>,>>> Schiebeoperatoren 9 <,>,>=,>= Vergleichsoperatoren 8 ==,!= Vergleiche auf Gleichheit 7 & und 6 ^ exklusives oder 5 oder F8

5.4.1. Einfache Datentypen in JAVA Prioritäten bei Operatoren (Fortsetzung) 4 && verkürztes und 3 verkürztes oder 2?: 1 =,+=,... Zuweisungsoperationen F9

5.4.1. Einfache Datentypen in JAVA Implizite Typumwandlungen bei Operationen Ungleiche Typen in Operation führen zu folgenden impliziten Umwandlungen: byte => char => short => int => long byte, char, short, int, long => double float => double F10

5.4.2. Datenstrukturen in JAVA Array Arrays werden als Referenzdatentyp behandelt. Daher müssen sie zunächst deklariert werden und dann der Speicher reserviert werden. Zuweisung zwischen Arrays ist nur Zuweisung der Speicheradressen! Echte Kopie von Arrays erfolgt über Schleife oder System.arrayscopy. Deklaration: <KOMPONENENTYP> '[' ']' <VARIABLENNAME>';' Anlegen des Speichers: <VARABLENNAME> '=' 'new' <KOMPONENTENTYP> '[' <FELDLÄNGE> '];' Zuweisung zu Komponenten: <VARIABLENNAME> '[' <INDEX> ']' '=' <WERT> ';' Echte Kopie von Arrays: 'System.arraycopy' '('<QUELLE>',' <QUELLSTARTINDEX>',' <ZIEL>',' <ZIELSTARTINDEX>',' <ANZAHL> ')' ';' F11

5.4.2. Datenstrukturen in JAVA Beispiele: int [] feld1; feld1 = new int[5]; feld1[3] = 17; feld1[0] = 42; int [] feld2 = { 1, 2, 3, 4, 5}; Hinweis: Mehrdimensionale Felder sind möglich, z. B.: double [][] matrix; matrix = new double[3][]; for (int i=0; i<3; i++) matrix[i] = new double[3]; F12

5.4.2. Datenstrukturen in JAVA Datenstrukturen Alle Datenstrukturen in JAVA außer Arrays werden durch Klassen beschrieben. F13

5.4.2. Datenstrukturen in JAVA Klassen [<KLASSIFIZIERUNG>] 'class' <NAME> [<SUPER>] [<INTERFACE>] '{' { <FELDDEKLARATION> <STATISCHE_INITIALISIERUNG> <KONSTRUKTORDEKLARATION> <METHODENDEKLARATION> } '}' F14

5.4.2. Datenstrukturen in JAVA Klassen (Fortsetzung) <KLASSIFIZIERUNG> gibt an, wie man die Klasse benutzen kann. public bedeutet jede andere Klasse kann diese Klasse benutzen. abstract steht für eine abstrakte Klasse, die nur vererbt werden kann, so dass Intanzieren verboten ist. final verhindert ein Vererben von dieser Klasse und erlaubt nur Instanzierung. <FELDDEKLARATION> gestattet die Deklaration von Feldern, also von Variablen innerhalb der Klasse. Dies können elementare Datentypen, Arrays oder Referenzen von Objekten anderer Klassen sein. <STATISCHE_INITIALISIERUNG> ist eine Methode, die zu Programmstart aufgerufen wird und für die Klasse (deswegen statisch) wichtige Operationen ausführt. <KONSTRUKTORDEKLARATION> definert eine Methode, um ein Objekt der Klasse zu erzeugen. Objekte können nur durch solche Konstruktoren erzeugt werden. <METHODENDEKLARATION> definiert eine Methode der Klasse. F15

5.4.2. Datenstrukturen in JAVA Felddeklaration {<KLASSIFIZIERUNG>} <TYPE> [<DEKLARATOR>] <FELDNAME> ['=' <AUSDRUCK>] ';' <KLASSIFIZIERUNG> gibt die Verwendbarkeit der Variablen an. private bedeutet nur innerhalb der Klasse, protected auch in abgeleiteten Klassen, final verhindert ein Ändern nach der ersten Wertzuweisung und public erlaubt eine Änderung von außerhalb. static bezeichnet eine Klassenvariable, die für alle Objekte stets gleich ist. static darf neben den anderen auftreten. (transient hat Einfluss auf Netzwerkübertragung.) Man sollte stets private oder protected verwenden, um das Geheimnisprinzip einzuhalten! <TYPE> gibt den Typ an. Neben einfachen Typen kann auch eine Referenz auf ein Objekt dort stehen (=> Assoziationen). <FELDNAME> legt den Namen des Feldes fest. <AUSDRUCK> gestattet die Angabe eines Anfangswertes. F16

5.4.2. Datenstrukturen in JAVA Konstruktordeklaration [<KLASSIFIZIERUNG>] <KLASSENNAME> '(' <PARAMETERLISTE> ')' <THROWS> '{' <EXPLIZITE_KONSTRUKTORAUFRUFE> <ANWEISUNG> '}' <KLASSIFIZIERUNG> legt die Sichtbarkeit fest. private, protected und private stehen zur Auswahl. <KLASSENNAME> muss der Name der Klasse sein, in der der Konstruktor steht. <PARAMETERLISTE> legt die Typen, Namen und ggf. Standardwerte der Parameter für den Konstruktor fest. Syntax: { <TYPE> <PARAMETERNAME> [ = <ANFANGSWERT>] ',' } <ANWEISUNG> enthält die Anweisungen für den Konstruktor. Anweisungen werden in 5.4.3 besprochen. F17

5.4.2. Datenstrukturen in JAVA Methodendeklaration {<KLASSIFIZIERUNG>} <TYPE> <METHODENNAME> '(' <PARAMETERLISTE> ')' <THROWS> '{' <ANWEISUNG> '}' Bei <KLASSIFIZIERUNG> stehen private, protected und public zur Auswahl. Ferner erzwingt abstract eine abstracte Klasse und muss überschrieben werden, während final ein Überschreiben untersagt. static bezeichnet eine Klassenmethode (eigentlich ein reguläres Unterprogramm). synchronized und native spielen bei Netzwerken eine Rolle. F18

5.4.2. Datenstrukturen in JAVA Beispiel: public class Kunde { // Attribute private String Firmenname, Firmenadresse; private int Auftragssumme = 0; } // Konstruktor public Kunde(String Name) { Firmenname = Name; } // Methoden public void aendernadresse( String Adresse ) { Firmenadresse = Adresse; } public void setauftragssumme(int Summe) { Auftragssumme = Summe; } public String getfirmenname() { return Firmanname; } public String getfirmenadresse() { return Firmenadresse; } public int getauftragssumme() { return Auftragssumme; } F19

5.4.2. Datenstrukturen in JAVA Zeichenketten Zeichenketten sind Objekte der Klasse String bzw. java.lang.string. Alle Klassen der Sprache und die einfachen Typen besitzen die Operation tostring(), die das Objekt in eine Zeichenkette verwandelt. Klassen liefern meist ihren Klassennamen zurück. Die einfachen Typen liefern eine Zeichenkette zu ihrem aktuellen Wert. Es gibt viele Standardoperationen, u. a.: public boolean equals(object obj) true, falls obj String und gleicher Wert public int length() public boolean equalsignorecase(object obj) public int indexof(char ch) Index des ersten Auftretens von ch oder -1 public char charat(int index) Hinweis: Es gibt auch die Klassen StringBuffer zur Manipulation von Zeichenketten und StringTokenizer zum Zerlegen von Zeichenketten. F20

5.4.3. Ablaufsteuerung zwischen Anweisungen Elementare Anweisungen Deklarationsanweisung Vereinbarung einer Variablen Zuweisung Zuweisung eines Wertes an eine Variable Methodenaufruf Aufruf von Methoden bei Klassen (auch für IO-Operationen) F21

5.4.3. Ablaufsteuerung zwischen Anweisungen Komposition - Blöcke Ein Block fasst mehrere Anweisungen zu einer Anweisung zusammen. Er beginnt mit { und endet mit }. Blöcke können geschachtelt werden. Beispiel: { x = 5; x++; System.out.println(x); } F22

5.4.3. Ablaufsteuerung zwischen Anweisungen Alternation - if-anweisung if (<AUSDRUCK>) <ANWEISUNG> else <ANWEISUNG> Für <ANWEISUNG> kann eine elementare Anweisung, eine Komposition, eine Alternation oder eine Iteration stehen. Für <AUSDRUCK> muss ein Term vom Typ boolean eingesetzt werden. F23

5.4.3. Ablaufsteuerung zwischen Anweisungen Alternation - switch-anweisung switch (<AUSDRUCK>) { case <KONSTANTE>:... default: } <ANWEISUNG> break; <ANWEISUNG> Die break; Komandos sind nicht zwingend, aber meistens sinnvoll. Der default: -Teil kann weggelassen werden. <AUSDRUCK> muss hier vom Typ byte, short, int oder char sein. Die Werte bei <KONSTANTE> müssen vom gleichen Typ sein. F24

5.4.3. Ablaufsteuerung zwischen Anweisungen Iteration - for-anweisung for (<INITIALISIERUNG>; <AUSDRUCK>> <UPDATE-LISTE>) <ANWEISUNG> <INITIALISIERUNG> enthält Anweisungen, die einmal zu Beginn ausgeführt werden. In der Regel handelt es sich um Deklarationen von Variablen und das Setzen ihrer Anfangswerte. <AUSDRUCK> enthält einen Ausdruck vom Wert boolean, der vor jedem Ausführen von <ANWEISUNG> ausgewertet wird. Falls true berechnet wird, wird <ANWEISUNG> ausgeführt. <UPDATE-LISTE> wird nach jedem Ausführen von <ANWEISUNG> ausgeführt. Es dient im klassischen Fall zum Erhöhen des Schleifenzählers. <ANWEISUNG> ist eine elementare Anweisung, Komposition, Alternation oder Iteration und wird nach jedem positivem Test von <AUSDRUCK> erneut ausgeführt. F25

5.4.3. Ablaufsteuerung zwischen Anweisungen Iteration - while-anweisung while (<AUSDRUCK>) <ANWEISUNG> <AUSDRUCK> ist ein Ausdruck vom Typ boolean. Falls true berechnet wird, wird <ANWEISUNG> ausgeführt. Nach jedem Ausführen wird erneut getestet und ggf. <ANWEISUNG> erneut ausgeführt. F26

5.4.3. Ablaufsteuerung zwischen Anweisungen Iteration - do-anweisung do <ANWEISUNG> while (<AUSDRUCK>) <ANWEISUNG> ist eine elementare Anweisung, Komposition, Alternation oder Iteration, die mindestens einmal ausgeführt wird. <AUSDRUCK> ist ein Ausdruck vom Typ boolean. Falls true berechnet wird, wird >ANWEISUNG> erneut ausgeführt. F27

5.4.4. Unterprogramme in JAVA Unterprogramme In JAVA gibt es keine Unterprogramme (Funktionen oder Prozeduren) im üblichen Sinn! Alle Unterprogramme sind Methoden von Klassen! F28

5.4.5. OO-Konzepte in JAVA Vererbung Vererbung von einer Oberklasse wird durch extends deklariert: public class Loewe extends Raubkatze {... } final verhindert Verwendung als Oberklasse: public final class Baer extends Saeugetier {...} public class Eisbaer extends Baer {...} /* SYNTAXFEHLER! */ F29

5.4.5. OO-Konzepte in JAVA Abstrakte Klassen Das Schlüsselwort abstract markiert abstrakte Klassen. Es markiert auch abstrakte Methoden. public abstract class Waehrung { /* Gibt den Wert in US Dollar als Zahl zurueck */ public abstract double dollarbetrag(); /* Gibt den Wert in US Dollar als String zurueck */ public abstract String tostring(); } F30

5.4.5. OO-Konzepte in JAVA Interfaces Um von mehreren Klassen ableiten zu können, gibt es Interfaces. Diese Schnittstellen werden ähnlich wie abstrakte Klassen definiert, enthalten aber nur (abstrakte) Methoden. Das Schlüsselwort abstract fehlt, da alle Deklarationen ohnehin abstrakt sind. /* Ein beliebiger Wertgegenstand */ public interface Wertgegenstand { /* Gib den Wert des Objekts als Waehrung zurueck */ public Waehrung wert(); } F31

5.4.5. OO-Konzepte in JAVA Interfaces - Implementierung Die Erweiterung von Interfaces erfolgt durch das Schlüsselwort implements. /* Ein Goldbarren (=Wertgegenstand) */ public class Goldbarren implements Wertgegenstand { /* aktueller Goldpreis / public static double preisprogrammindollar = 60; /* Gewicht des Goldbarrens in Gramm */ private double gewicht; /* Konstruktor Gewichtsangabe in Gramm / Goldbarren(double gewichtingramm) { gewicht = gewichtingramm; } /* Implementierung des Interface */ public Waehrung wert() { return new USDollar(gewicht * preisprogrammindollar); } } Eine Klasse kann eine Oberklasse (mittels extends) haben und mehrere Interfaces implementieren (mittels implements). F32