Java aufden. Punktgebracht. ebooks.kofler. AktuellzuJava8!

Größe: px
Ab Seite anzeigen:

Download "Java aufden. Punktgebracht. ebooks.kofler. AktuellzuJava8!"

Transkript

1 Java aufden Punktgebracht Michael Kofler Variablen Operatoren Klassen Exceptions Multi-Threading Generics und Collections Lambda-Ausdrücke AktuellzuJava8!

2 JavaaufdenPunktgebracht(aktuellzuJava8) Ursprünglicher Titel: Die Java-Syntax Stichworte: Java 8, Variablen, Arrays und Enums, Elementare Datentypen, Strings, Datum und Uhrzeit, Operatoren, Verzweigungen, Schleifen, Methoden, Klassen, Schnittstellen, Vererbung, Exceptions, Pakete, Bibliotheken, Multi-Threading, Generics, Collections, Lambda-Ausdrücke, Annotationen. Michael Kofler und 2013, 2014 Autor Michael Kofler Korrektorat Markus Hinterreither ISBN(PDF) ISBN(EPUB) Verlag, Schönbrunngasse 54c, 8010 Graz, Austria Die PDF- und EPUB-Ausgabe dieses Buchs können Sie hier kaufen: Viele in diesem ebook genannten Hard- und Software-Bezeichnungen sind geschützte Markennamen. Dieses ebook wurde mit großer Sorgfalt verfasst. Dennoch sind Fehler nicht ganz auszuschließen. Für allfällige Fehler kann keine Verantwortung oder Haftung übernommen werden. Verbesserungsvorschläge oder Korrekturen sind selbstverständlich willkommen Vielen Dank dafür! Dieses ebook ist durch das österreichische Urheberrecht geschützt. Sie dürfen das ebook für den persönlichen Gebrauch kopieren und ausdrucken, aber nicht an andere Personen weitergeben, weder in elektronischer noch in anderer Form.

3 Inhaltsverzeichnis Vorwort 7 1 Hello World! DerProgrammcode Der Java-Compiler javac Der Java-Interpreter java ElementareSyntaxregeln 12 2 Variablen, Arrays und Enums Variablen Arrays Konstanten und Enums 33 3 Zeichenketten(char und String) Derchar-Datentyp DieString-Klasse DieStringBuilder-Klasse Zeichensatzprobleme 47 4 Datum und Uhrzeit DieDate-Klasse DieSimpleDateFormat-Klasse DieCalendar-Klasse ThreeTen(Java 8) 60

4 INHALTSVERZEICHNIS 4 5 Operatoren 64 6 Verzweigungen(if, switch) if if-kurzschreibweise(ternary Operator) switch 74 7 Schleifen for for-each while und do-while break und continue 82 8 Methoden Parameterliste Rückgabewert und return Modifizierer get- und set-methoden 93 9 Klassen Top-Level-Klassen LokaleKlassen AnonymeKlassen Statische geschachtelte Klassen Vererbung und Schnittstellen Vererbung Schnittstellen Die Object-Klasse 126

5 INHALTSVERZEICHNIS 5 11 Lambda-Ausdrücke Hello Lambda-World! Syntax von Lambda-Ausdrücken War das schon alles? Exceptions Exception-Klassen try-catch Fehleranfällige Methoden deklarieren(throws) Selbst Exceptions werfen(throw) Pakete und Bibliotheken import Pakete Bibliotheken Multi-Threading Multi-Threading-Syntax Die java.util.concurrent-klassen Generics Einführung Deklaration generischer Klassen und Schnittstellen Deklaration generischer Methoden Wildcards Collections Einführung Die Iterable-Schnittstelle Die Collection-Schnittstelle Die Set-Schnittstelle 208

6 INHALTSVERZEICHNIS Die List-Schnittstelle Die Stream-Schnittstelle(Java 8) Die Map-Schnittstelle Annotationen Vordefinierte Annotationen Eigene Annotationen definieren 229

7 Vorwort Dieses ebook fasst die grundlegenden Elemente der Programmiersprache Java zusammen. Neben einer kompakten Beschreibung der Syntax zeigt das ebook anhand kleiner Beispiele auch die praktische Anwendung von Java. Das Buch geht auch auf elementare Klassen aus der Java-Standardbibliothek ein, etwa zur Bearbeitung von Zeichenketten, Daten, Zeiten, Arrays und Aufzählungen sowie zur Verwaltung eigener Threads. Das Buch ist in kleine Kapitel strukturiert, die jeweils unabhängig voneinander gelesen werden können. Das obligatorische Hello World!-Kapitel gibt eine Schnelleinführung in die Konzepte von Java. Anschließend folgen die prozeduralen Sprachelemente(Variablen, Operatoren, Schleifen etc.), bevor ich im Detail auf die objektorientierten Sprachelemente von Java eingehe. Die folgende Liste gibt einen ersten Überblick: Hello World Variablen, Arrays, Enums Strings, Datum und Uhrzeit Operatoren Verzweigungen und Schleifen Methoden Klassen, Vererbung, Schnittstellen Lambda-Ausdrücke Exceptions Pakete und Bibliotheken Multi-Threading Generics und Collections Annotationen Nicht Thema dieses ebooks sind die Installation von Java, eine Einführung in Eclipse oder andere grafische Entwicklungsumgebungen sowie eine umfassende Beschreibung der Java-Standardbibliotheken. Ebenfalls unbehandelt bleiben alle spezifischen Besonderheiten, die für die Entwicklung von Enterprise-Anwendungen(Java EE) bzw. von Android-Apps gelten. Das ebook konzentriert sich somit auf die elementaren Sprachelemente von Java.

8 INHALTSVERZEICHNIS 8 Java8 Dieses ebook ist aktuell zu Java 8 und berücksichtigt alle wesentlichen Neuerungen. Damit Ihnen dieses ebook auch dann weiterhilft, wenn Sie noch mit Java 7 arbeiten oder alten Java-6-Code warten müssen, weise ich bei neuen Sprachelementen darauf hin, mit welcher Java-Version diese eingeführt wurden. Zielgruppe Mein primäres Ziel beim Verfassen dieses ebooks war es, die wichtigsten bzw. am häufigsten eingesetzten Sprachelemente von Java knapp und klar darzustellen. Insofern kann und will dieses ebook nicht 1000-seitige Java-Bücher ersetzen, die auch auf unzählige Spezialfälle eingehen, möglichst viele Klassen der Java-Standardbibliothek vorstellen oder eine Hilfestellung beim Programmieren-Lernen bieten. Dieses ebook richtet sich somit an Programmierer/-innen, die mit den Grundideen objektorientierter Programmierung bereits vertraut sind sei es in Java oder in einer anderen objektorientierten Programmiersprache. Die Gliederung in überschaubare Kapitel erleichtert ein rasches Nachschlagen im Sinne einer Java-Syntaxreferenz. Zugleich ist dieses ebook eine ideale Hilfestellung, wenn Sie von einer anderen Programmiersprache auf Java umsteigen oder häufig zwischen verschiedenen Programmiersprachen wechseln. Michael Kofler im Januar PS: Zu besonderem Dank bin ich Christian Ullenboom verpflichtet. Er hat die erste Fassung dieses ebooks noch unter dem damaligen Titel Die Java-Syntax durchgesehen und mich auf diverse Ungenauigkeiten hingewiesen.(für alle Fehler, die eventuell weiterhin vorhanden sind, bin natürlich alleine ich verantwortlich!) Seine online und bei GalileoerschienenBücherJavaistaucheineInselundJava MehralseineInselmit einem Gesamtumfang von mehr als 2700 Seiten gelten als die deutschsprachige Java- Referenz.

9 1 Hello World! Eine minimalistische Version von Hello World! für Java sieht so aus: public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Um dieses Programm zu kompilieren und auszuführen, müssen Sie die folgenden Kommandos eingeben: javac HelloWorld.java java HelloWorld Alternativ können Sie dieses Programm natürlich auch in einen Entwicklungsumgebung wie Eclipse oder Java Beans entwickeln. IDEs(also Integrated Development Environments) sind aber nicht Thema dieses ebooks. 1.1 Der Programmcode Obwohl der Code nur drei Zeilen umfasst(wenn man einmal von den Klammern absieht), gibtesdazueinemengezusagen: Jedes Java-Programm muss in Klassen organisiert werden. Hello World besteht aus einer einzigen öffentlichen Klasse(public class HelloWorld).

10 1 Hello World! 1.2 Der Java-Compiler javac 10 Java-Code wird in Textdateien mit der Endung*.java gespeichert. Dabei ist es entscheidend, dass der Dateiname exakt mit dem Klassennamen übereinstimmt, in diesem Beispiel also HelloWorld.java. Achten Sie auch auf die Groß- und Kleinschreibung!(Es ist üblich, dass die Namen von Klassen mit einem Großbuchstaben beginnen.) Der Startpunkt eines Java-Programms ist die Methode main. Diese Methode muss sich in einer öffentlichen Klasse befinden, und sie muss exakt wie im obigen Beispiel deklariert werden: Die Methode muss öffentlich sein(public). Sie muss statisch definiert werden(static), damit sie verwendet werden kann, ohne vorher ein Objekt der Klasse zu erzeugen. Die Methode darf nichts zurückgeben(void). Und sie muss die an das Java-Programm übergebenen Parameter in einem Zeichenketten-Array entgegennehmen(string [] args). Die Auswertung von args ist optional; das Hello- World-Beispiel verzichtet darauf. Innerhalb von main wird mit println die Zeichenkette Hello World! im Terminal bzw. unter Windows im Eingabeaufforderungsfenster ausgegeben. println ist eine Methode der Klasse PrintStream. Der Zugriff auf ein Objekt der PrintStream-Klasse erfolgt mit System.out. Dabei ist System eine Klasse des Pakets java.lang der Java-Standardbibliothek. Alle Klassen dieses Pakets stehen Java-Programmen standardmäßig zur Verfügung. out ist ein statisches Feld der System-Klasse. Es verweist auf ein PrintStream-Objekt zur Ausgabe von Texten auf der Standardausgabe. Dieses Objekt wird beim Start des Java- Programms automatisch erzeugt. 1.2 Der Java-Compiler javac An den Java-Compiler wird im einfachsten Fall der Name der zu kompilierenden Codedatei übergeben. Sofern javac keine Syntaxfehler bemerkt, erzeugt es eine neue Datei mit der Endung*.class. Diese Datei enthält den Java-Byte-Code. Dabei handelt es sich um einen Zwischencode, der es dem Java-Interpreter ermöglicht, das Programm effizient auszuführen.

11 1 Hello World! 1.2 Der Java-Compiler javac 11 Die vom Java-Compiler produzierten Dateien sind somit nicht unmittelbar ausführbar. Die Verwendung eines Zwischencodes hat den Vorteil, dass ein unter Windows kompiliertes Java-Programm auch unter Linux oder OS X ausgeführt werden kann. Diese Plattformunabhängigkeit zählte ursprünglich zu den wichtigsten Faktoren für den Erfolg von Java. Jede öffentliche Java-Klasse,-Schnittstelle oder-enumeration muss in einer eigenen Datei definiert werden. Der Quellcode eines Java-Programms besteht also zumeist aus mehreren Dateien. Zum Kompilieren reicht es dennoch aus, nur die.java-datei mit main() zu übergeben. Der Kompiler berücksichtigt automatisch alle Abhängigkeiten zu anderen.java-dateien und kompiliert diese Dateien bei Bedarf ebenfalls neu. Das Verhalten des Java-Compiler können Sie mit diverse Optionen steuern. Besonders wichtig sind die folgenden beiden Optionen: encoding=utf8: Diese Option gibt an, in welchem Zeichensatz die Quelltextdateien codiert sind. Es hängt von der Java-Version und dem Betriebssystem ab, welchen Zeichensatz Java erwartet. Java 7 verarbeitet standardmäßig unter Linux und OS X UTF8-Dateien, unter Windows hingegen cp1252. Dieser Windows-spezifische Zeichensatz hat Ähnlichkeiten zu ISO , ist damit aber nicht ganz identisch. Wenn Ihre Code-Dateien einen anderen Zeichensatz verwenden als Java erwartet, müssen Sie den Zeichensatz mit der Option encoding angeben. Ausführliche Informationen zum Umgang von Java mit unterschiedlichen Zeichensätzen bietet das Kapitel Zeichenketten. cp: Wenn Ihr Java-Projekt auf zusätzliche Java-Dateien bzw. Bibliotheken(*.classund *.jar-dateien) zurückgreift, geben Sie mit der Option cp deren Ort an. Die Abkürzung cp steht dabei für classpath, also den Verzeichnispfad für Klassendateien. Tipps zum Umgang mit externen Bibliotheken finden Sie in Kapitel Pakete und Bibliotheken.

12 1 Hello World! 1.4 Elementare Syntaxregeln Der Java-Interpreter java Für die eigentliche Ausführung eines Java-Programms ist der Java-Interpreter java verantwortlich. An das Kommando wird der Name der Klasse übergeben, die die main- Methode enthält, also den Startpunkt des Programms. Auch das Verhalten von java kann durch diverse Optionen beeinflusst werden. Besonders wichtig ist dabei wiederum classpath zur Angabe des Speicherorts externer Bibliotheken. Wenn Sie wissen möchten, welche Java-Version auf Ihrem Rechner installiert ist, führen Sie java mit der Option version aus: java version java version "1.8.0 ea" Java(TM) SE Runtime Environment (build ea b123) Java HotSpot(TM) 64 Bit Server VM (build 25.0 b65, mixed mode) 1.4 Elementare Syntaxregeln Die Strukturierung des Codes erfolgt durch geschwungene Klammern{. Jede Java-Anweisungen muss mit einem Strichpunkt abgeschlossen werden. Java-Anweisungen dürfen über mehrere Zeilen reichen. Der Java-Compiler ist dabei sehr flexibel, was den Umgang mit Leerzeichen und Zeilenumbrüche betrifft. So wird das folgende Kommando anstandslos akzeptiert: System. out. println ("Hello World"); Zeichenketten werden in doppelte Anführungszeichen gestellt("abc"). Sie dürfen nicht über mehrere Zeilen reichen, können aber mit dem Operator + verbunden werden. String s = "eine lange " + "Zeichenkette";

13 1 Hello World! 1.4 Elementare Syntaxregeln 13 Code-Einrückungen sind optional und nicht Teil der Java-Syntax. Zwischen Groß- und Kleinschreibung wird unterschieden, sowohl bei Schlüsselwörtern als auch bei Klassen-, Methoden- und Variablennamen. Der Zugriff auf Objekt- bzw. Klassenvariablen(Felder) erfolgt in der Form objekt.feld oder Klasse.statischesFeld. Methoden werden in der Form objekt.methode() oder Klasse.statischeMethode() aufgerufen. Dem Methodennamen müssen runde Klammern folgen, auch wenn keine Parameter übergeben werden. In Java ist es üblich, dass Methodennamen mit Kleinbuchstaben beginnen. JavakenntkeineFunktionen.EsistimmervonMethodendieRede,egalobdieseein Ergebnis zurückgeben oder nicht. Java kennt keine Eigenschaften. Anstelle von Eigenschaften müssen Sie entweder Felder oder get- und set-methoden verwenden. In der Java-Standardbibliothek sind in Paketen unzählige Klassen vordefiniert. Das Paket java.lang steht in allen Java-Programmen standardmäßig zur Verfügung, d. h., die dort enthaltenen Klassen können ohne Angabe des Paketnamens genutzt werden. Bei allen anderen Klassen müssen Sie entweder den Paketnamen voranstellen(z. B. java.util.random) oder zu Beginn Ihres Programms einen sogenannten Import durchführen(import java.util.random oder import java.util.*). Vergessen Sie darauf, beklagt sich der Java-Compiler darüber, dass er das Symbol(also den Klassennamen) nicht kennt. Das Kapitel Pakete und Importe geht auf die Details dieser Mechanismen ein. Java kümmert sich selbst um die Speicherverwaltung. Der Speicherplatz von nicht mehr benötigten Objekten(d. h. von Objekten, auf die keine Variable mehr verweist), wird automatisch durch einen Hintergrundprozess mit dem Garbage Collector wieder freigegeben. Als Programmierer müssen Sie sich daher nicht um die Speicherverwaltung kümmern.

14 1 Hello World! 1.4 Elementare Syntaxregeln 14 Achtung Ein Strichpunkt für sich ist syntaktisch erlaubt und gilt als eine Art leeres Kommando. Im folgenden Beispiel wird die for-schleife zwar korrekt durchlaufen; mit jedem Schleifendurchgang wird aber nur das leere Kommando ; ausgeführt! Die println- Methode wird aber nur einmal nach dem Ende der Schleife ausgeführt. // falsch; println wird nur einmal ausgeführt // (Ausgabe 10) int i; for(i=0; i<10; i++); System.out.println(i); // richtig; println wird 10x ausgeführt // (Ausgabe 0 bis 9) for(i=0; i<10; i++) System.out.println(i); Java-Schlüsselwörter Die folgenden Schlüsselwörter sind reserviert und dürfen nicht als Namen von Variablen, Klassen etc. verwendet werden: abstract continue for new switch assert default if package synchronized boolean do goto private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while

15 1 Hello World! 1.4 Elementare Syntaxregeln 15 Kommentare im Java-Code Es gibt drei Möglichkeiten, um Kommentare in den Quellcode zu integrieren: Einzeilige Kommentare werden mit// eingeleitet und reichen bis zum Ende der Zeile. Mehrzeilige Kommentare beginnen mit /* und enden mit */. Javadoc-Kommentare werden mit /** eingeleitet und enden ebenfalls mit */. Diese Kommentare können vom Kommando javadoc ausgewertet und zu einem HTML-Dokument verarbeitet werden, das alle Klassen, Felder, Methoden, Parameter etc. eines Java-Projekts beschreibt. Innerhalb der Javadoc-Kommentare können einzelne Textpassagen durch Schlüsselwörter name parametername beschreibung gekennzeichnet werden.

16 2 Variablen, Arrays und Enums In Variablen speichern Sie alle elementaren Daten sowie Referenzen auf alle Objekte, die Sie in Ihrem Programm nutzen. Arrays bieten Ihnen darüber hinaus die Möglichkeit, unkompliziert mehrere gleichartige Daten bzw. Objekte zu verwalten. Zu den weiteren Themen dieses Kapitels zählen die elementaren Datentypen von Java(int, double etc.), deren Boxing-Varianten, die Typumwandlung durch Casting sowie der Umgang mit Konstanten und Enums(also Konstantenaufzählungen). 2.1 Variablen Variablen müssen vor ihrer Verwendung mit Typangabe deklariert werden. Zusammen mit der Deklaration kann auch die Initialisierung erfolgen. Jede Variable muss initialisiert werden, bevor sie das erste Mal ausgelesen wird. int a; long b=3; Variablen können nur innerhalb des Codeblocks verwendet werden, in dem sie definiert sind, nicht aber außerhalb.

17 2 Variablen, Arrays und Enums 2.1 Variablen 17 { double x=3; { System.out.println(x); // ok System.out.println(x); // Fehler, x ist hier unzugänglich Variablen, die auf Klassenebene definiert sind, werden auch Felder(Fields) genannt. Innerhalb der Methoden einer Klasse greifen Sie mit name auf derartige Variablen zu. Wenn es innerhalb der Methode einen gleichnamigen Parameter oder eine lokale Variable gibt, ermöglicht this.name den Zugriff auf das außerhalb deklarierte Feld. Anwender der Klasse können nur auf Felder zugreifen, die mit public deklariert sind. class MeineKlasse { public int var1; private int var2; // Konstruktor public MeineKlasse(int var1, int var2) { this.var1 = var1; this.var2 = var2; // allgemeine Methode public int berechne() { return var1 + var2;

18 2 Variablen, Arrays und Enums 2.1 Variablen 18 Variablennamen Für die Bildung von Variablennamen gelten die folgenden Regeln: DerNamedarfausbeliebigvielenBuchstaben,ZiffernsowiedenZeichen _ und$ zusammengesetzt werden. Der Einsatz des Zeichens $ ist nur für automatisch generierten Code empfohlen. Der Name darf nicht mit einer Ziffer beginnen. Der Name darf nicht mit Java-Schlüsselwörtern wie if oder break übereinstimmen. Ebenfalls unzulässig sind die booleschen Literale true und false sowie das Null- Literal null. Internationale Zeichen wie äöüß sind erlaubt, können aber zu Problemen führen, wenn der Zeichensatz der Java-Codedatei nicht den Erwartungen des Java-Compilers entspricht. Abhilfe: javac-option encoding. Besser ist es in der Regel, auf den Einsatz internationaler Zeichen zu verzichten. Es wird zwischen Groß- und Kleinschreibung unterschieden. Die obigen Regeln gelten auch für die Namen von Klassen, Aufzählungen(Enums) und anderen Java-Konstrukten. Es ist üblich(aber nicht zwingend vorgeschrieben), Variablenund Methodennamen mit Kleinbuchstaben zu beginnen lassen, Klassennamen dagegen mit Großbuchstaben. Für die Namen von Konstanten werden normalerweise ausschließlich Großbuchstaben verwendet. Elementare Datentypen Java kennt die in der folgenden Tabelle aufgezählten elemantaren Datentypen(primitive data types, siehe Tabelle 2.1). Beim Umgang mit den elementaren Java-Datentypen sind einige Besonderheiten zu beachten: Vorzeichen: Im Gegensatz zu vielen anderen Programmiersprachen gibt es in Java keine vorzeichenlosen Integerzahlen. Es existiert allerdings der Operator >>>, mit dem eine Integerzahl bitweise so nach rechts verschoben wird, als würde es sich um eine Zahl ohne Vorzeichen handeln.

19 2 Variablen, Arrays und Enums 2.1 Variablen 19 Datentyp Beschreibung byte ganze Zahl, 1 Byte, Zahlenbereich-128 bis +127 short ganze Zahl, 2 Byte, Zahlenbereich bis int ganzezahl,4byte,zahlenbereich 231 (ca ) long ganzezahl,8byte,zahlenbereich 263 (ca ) boolean char true oder false ein Unicode-Zeichen double Fließkommazahl,8Byte,16Stellen(max.ca ) float Fließkommazahl,4Byte,8Stellen(max.ca ) Tabelle 2.1: Elementare Java-Datenypen Überlaufkontrolle: Java führt bei Berechnungen keine Überlaufkontrolle durch. Wenn der zulässige Zahlenbereich bei Integer-Berechnungen überschritten wird, kommt es zu falschen Ergebnissen. Bei Fließkommazahlen lautet das Ergebnis Infinity bzw. Infinity. In beiden Fällen kommt es zu keiner Fehlermeldung oder Exception! Division durch Null: Bei Integer-Berechnungen löst eine Division durch 0 eine ArithmeticException aus. Bei Fließkommazahlen tritt hingegen keine Exception auf, das Ergebnis lautet Infinity bzw. Infinity. Rundungsfehler: Bei Berechnungen mit Fließkommazahlen kommt es zu Rundungsfehlern. Das ist kein Java-Problem, sondern hat mit der binären Darstellung von Zahlen zu tun und ist unvermeidbar. Erschwert wird die Situation allerdings dadurch, dass die Fließkommaarithmetik in Java ein wenig von der anderer Programmiersprachen abweicht, die zumeist konform zum IEEE-Standard 754/854 sind. Das betrifft insbesondere die oben schon erwähnte fehlende Überlaufkontrolle. Leseempfehlungen: einerseits die mittlerweile legendäre Kritik an Javas Fließkommaarithmetik des Berkeley-Professors William

20 2 Variablen, Arrays und Enums 2.1 Variablen 20 Kahan(veröffentlicht 1998), andererseits eine Zusammenfassung seither realisierter Verbesserungen(veröffentlicht 2008). Wenn Sie Rundungsfehler ausschließen möchten, z. B. beim Rechnen mit Geld, können Sie die BigDecimal-Klasse einsetzen. Deren Anwendung ist freilich sehr unhandlich, weil Sie dann Operatoren wie + und nicht verwenden können und stattdessen Methoden wie add und subtract gebrauchen müssen. double x =10; x=x/0.0; // x enthält Infinity int i =100000; i=i*i; // i enthält double y=1e250; y=y*y; // y enthält Infinity double a = 0.7; double b = 0.9; double c = a + 0.1; double d = b 0.1; System.out.println(c == d); // liefert false System.out.println(c d); // liefert E 16 Hinweis Besonderheiten beim Umgang mit Zeichen(char) und Zeichenketten(String) werden im Kapitel Zeichenketten beschrieben. Literale Standardmäßig werden ganze Zahlen im Java-Code als int-zahlen interpretiert, Fließkommazahlen als double-zahlen. Das folgende Listing fasst Syntaxvarianten für Zahlen-Literale zusammen. char- und String-Literale finden Sie abermals im Kapitel Zeichenketten.

21 2 Variablen, Arrays und Enums 2.1 Variablen 21 int i1 = 123; int i2 = 0xABCD; // hexadezimal, entspricht int i3 = 0123; // oktal, entspricht 83 int i4 = 0b110; // binär, entspricht 6 (ab Java 7) int i5 = 1 _ 237 _ 343; // dezimal mit Tausendertrennung (ab Java 7) long l1 = L; // long boolean b1 = true; boolean b2 = false; double d1 = 1.0; double d2 = 1.7E4; // Exponential Schreibweise, = float f = 1.0F; // float Rechnen mit double-zahlen Elementare mathematische Funktionen wie Sinus, Cosinus und die Quadratwurzel sind als statische Methoden in der Math-Klasse enthalten. Dort ist auch die Konstante PI definiert. Das folgende Listing gibt einige Anwendungsbeispiele. double x=2.4, y=0.7; double sinus = Math.sin(x); double cosinus = Math.cos(0.3 * Math.PI); double quadrat = Math.pow(x, 2); // entspricht x*x double qwurzel = Math.sqrt(x); double minimum = Math.min(x, y); // Minimum, liefert 0.7 double absolut = Math.abs( 0.3); // liefert 3 long n1 = Math.round(2.3); // liefert 2 long n2 = Math.round(2.5); // liefert 3 Hinweis DieSchreibweisex^2imSinnevon x*xistinjavanichtzulässig.deroperator ^dient vielmehr zur Verknüpfung logischer Ausdrücke oder binärer Zahlen durch exklusives Oder. Zum Potenzieren verwenden Sie die Methode Math.pow(x, n).

22 2 Variablen, Arrays und Enums 2.1 Variablen 22 Zufallszahlen Zur Erzeugung von Pseudozufallszahlen verwenden Sie ein Objekt der Klasse java.util.random. Die folgenden Zeilen zeigen die Anwendung: java.util.random r = new java.util.random(); double x = r.nextdouble(); // zwischen 0.0 (inkl.) und 1.0 (exkl.) int i = r.nextint(100); // zwischen 0 und 99 long n = r.nextlong(); // gesamter long Zahlenbereich double g = r.nextgaussian(); // normalverteilt (Mittelwert 0, // Standardabweichung 1) Unterschiede zwischen elementaren Datentypen und Objekten(reference types) Für elementaren Datentypen stehen keine Felder oder Methoden zur Verfügung. Ihre Daten werden bei Zuweisungen kopiert. Der Inhalt der beiden Variablen a und b im folgenden Beispiel ist daher vollkommen unabhängig voneinander: int a=3; int b=a; b=4; System.out.println(a + " " + b); // Ausgabe: 3 4 Im Gegensatz zu elementaren Datentypen müssen Objekte explizit erzeugt werden(in der Regel mit new). Bei Zuweisungen wird nur eine Referenz kopiert. Beide Variablen verweisen nun auf dieselben Daten. Änderungen wirken sich daher für beide Variablen aus. Im folgenden Beispiel verweisen p1 und p2 auf dasselbe Point-Objekt: import java.awt.point;... Point p1 = new Point(3, 3); Point p2 = p1; p2.x = 4; System.out.println(p1.x + " " + p2.x); // Ausgabe: 4 4

23 2 Variablen, Arrays und Enums 2.1 Variablen 23 Wenn Sie eine unabhängige Kopie eines Objekts benötigen, müssen Sie dieses kopieren bzw. duplizieren(klonen). Einige Klassen der Java-Standardbibliothek sehen hierfür die clone-methode vor und implementieren die Schnittstelle Cloneable. Beachten Sie aber, dass clone nur das unmittelbare Objekt dupliziert(shallow clone). Wenn das Objekt auf weitere Objekte verweist und auch diese Objekte dupliziert werden sollen, ist ein deep clone erforderlich, was in Java z. B. durch Serialisierungsmethoden ermöglicht wird. Generell haben weder die Methode clone noch die Schnittstelle Cloneable in Java- Kreisen einen guten Ruf. Der Java-Chefentwickler Joshua Bloch rät in einem Interview davon ab, Cloneable und clone in eigenen Klassen zu implementieren und empfiehlt stattdessen die Entwicklung eines eigenen Copy-Konstruktors. Für den Umgang mit simplen Point-Objekten reicht clone aber vollkommen aus, um p1 unabhängig von p2 zu machen: Point p1 = new Point(3, 3); Point p2 = (Point)p1.clone(); p2.x = 4; System.out.println(p1.x + " " + p2.x); // Ausgabe: 3 4 Das unterschiedliche Verhalten hat auch Konsequenzen auf die Parameterübergabe: Bei elementaren Typen werden die Daten kopiert. Änderungen in der Methode haben deswegen keinen Einfluss auf die ursprünglichen Variablen. Bei Objekten werden hingegen wie bei Zuweisungen Referenzen kopiert. Das ist nicht nur effizient, sondern ermöglicht es zudem, die zugrunde liegenden Daten in der Methode zu verändern. int a=3; Point b = new Point(3, 3); m(a, b); System.out.println(a + " "+ b.x); // Ausgabe: 3 4 void m(int i, Point p) { i = 4; p.x = 4;

24 2 Variablen, Arrays und Enums 2.1 Variablen 24 Zeichenketten(Strings) sind Objekte. Dennoch verhalten sie sich in mehrerlei Hinsicht wie elementare Datentypen: Zum einen können Zeichenketten wegen ihrer tiefen Verankerung in der Java-Sprachdefinition ohne new einfach durch Zuweisungen erzeugt werden(string s = "abc"). Zum anderen sind Zeichenketten generell unveränderlich (immutable). Bei jedem Versuch, eine Zeichenkette zu verändern, wird daher in Wirklichkeit eine neue Zeichenkette erzeugt. Daher ist es auch unmöglich, eine als Parameter übergebene Zeichenkette in einer Methode zu verändern. String s1 = "abc"; String s2 = s1; s2 = "efg"; // s2 zeigt jetzt auf einen neuen String! System.out.println(s1 + " "+ s2); // Ausgabe: abc efg Boxing-Varianten von elementaren Datentypen Zu allen elementaren Java-Datentypen gibt es seit Version 5 Boxed-Varianten. Die elementaren Datentypen als Objekte verpackt, verhalten sich also wie Objekte. Datentyp Boxing-Variante byte short int long boolean char double float Byte Short Integer Long Boolean Character Double Float Tabelle 2.2: Boxing-Datentypen

25 2 Variablen, Arrays und Enums 2.1 Variablen 25 Im Unterschied zu den elementaren Datentypen können ihre Boxing-Varianten auch den Wert null annehmen. Das ist besonders dann praktisch, wenn zwischen dem Wert 0 und dem Zustand nicht initialisiert unterschieden werden soll. Boxed-Datentypen bieten sich auch für Datenbankanwendungen an, weil Sie den SQL-Wert NULL abbilden können. Die Initialisierung von Boxed-Variablen erfordert keinen Konstruktor, erfolgt also ohne new. Die Umwandlung zwischen elementaren Datentypen und ihren Boxing-Varianten (also das boxing und das unboxing) erfolgt automatisch. Integer i =3; int j = i + 1; i = j + 1; Boxed-Datentypen können also weitgehend wie gewöhnliche Datentypen verwendet werden. Beachten Sie jedoch die Sonderfälle, die sich dadurch ergeben können, dass der Zustand null erlaubt ist. Integer i= null; int j = i + 1; // löst NullPointerException aus Die Klassen der Boxing-Datentypen sind in der Java-Standardbibliothek java.lang definiert und stehen ohne import in allen Java-Programmen zur Verfügung. Sie enthalten eine Menge nützlicher Umwandlungsmethoden, die auch dann eingesetzt werden können, wenn Sie in Ihren Variablen gewöhnliche elementare Datentypen verwenden. double d = Double.parseDouble("12.34"); String s = Long.toHexString(123); // 7b Typumwandlung(Casting) Wenn bei Zuweisungen oder in Ausdrücken unterschiedliche Datentypen vorkommen, führt Java nach Möglichkeit eine automatische Typumwandlung durch(implizites Casting).

26 2 Variablen, Arrays und Enums 2.1 Variablen 26 int i1=3; double d1=1.7; double d2 = d1*i1; // double Multiplikation > 5.1 long l1 = i1; // casting int > long String s1 = "abc"; String s2 = s1 + i1; // String Verknüpfung > "abc3" Wenn die Gefahr besteht, dass es bei der Typumwandlung zu einem Genauigkeitsverlust (z.b.double float)oderzueinemüberlaufkommt(z.b.long int),produziertjavac einen Fehler. Das Programm kann also nicht kompiliert werden. long l = 10; int i = l; // javac Fehler: possible loss of precision double d = 3.14; float f = d; // javac Fehler: possible loss of precision Abhilfe schafft in solchen Fällen eine explizite Typumwandlung. Dazu stellen Sie dem betreffenden Ausdruck in runden Klammern den gewünschten Datentyp voran. Sollte sich zur Laufzeit herausstellen, dass die Umwandlung unmöglich ist oder dass dabei ein Überlauf auftritt, kommt es zu einer Exception. long l = 10; int i = (int)l; double d = 3.14; float f = (float)d; Modifizierer für die Variablendeklaration(public, private, static etc.) Der Deklaration einer Variablen können verschiedene Schlüsselwörter vorangestellt werden, die die Eigenschaften bzw. die Erreichbarkeit der Variablen modifizieren. Die meisten Modifizier sind nur für Felder(fields) relevant, also für Variablen, die auf Klassenebene deklariert werden, nicht als lokale Variable innerhalb einer Methode.

27 2 Variablen, Arrays und Enums 2.2 Arrays 27 Schlüsselwort Bedeutung public private protected static final transient volatile öffentliche Variable private Variable interne Variable statische Variable Konstante(siehe unten) wird bei der Serialisierung nicht gespeichert Variable für Multi-Threaded-Programmierung Tabelle 2.3: Schlüsselwörter, um das Verhalten von Variablen zu modifizieren Die Schlüsselwörter public, private, protected und static werden im Kapitel Klassen genauer beschrieben. transient bewirkt, dass der Inhalt dieser Klassenvariablen bei einer Serialisierung des Objekts nicht gespeichert wird. volatile bewirkt, dass der Compiler darauf verzichtet, aus Effizienzgründen auf zwischengespeicherte Werte dieser Variable zuzugreifen. Stattdessen wird die Variable bei jedem Zugriff neu ausgelesen. In Multi-Threaded-Programmen stellt volatile sicher, dass das Lesen oder Schreiben der Variable ein atomarer Prozess ist, der nicht durch einen anderen Thread gestört werden kann. 2.2 Arrays Arrays speichern mehrere Zahlen, Zeichenketten oder andere Objekte. Die Größe des Arrays muss beim Erzeugen festgelegt werden und kann nachträglich nicht mehr verändert werden. Die übliche Syntax zur Deklaration von Arrays lautet datentyp[] var. Unüblich, aber ebenfalls erlaubt ist datentyp var[]. Wenn von vornherein klar ist, welche Daten ein Array aufnehmen soll, können Sie die Elemente in der Form{e1, e2, e3 einer Array-Variable direkt zuweisen. Der Java-

28 2 Variablen, Arrays und Enums 2.2 Arrays 28 Compiler kümmert sich dann selbstständig darum, das Array in der richtigen Größe zu erzeugen. int[] x; // x als int Array deklarieren x = new int[5]; // Array erzeugen double[] y = new double[5]; // y deklarieren und erzeugen int[] z = {17, 19, 25, 12; // z deklarieren + initialisieren DerZugriffaufdieArray-ElementeerfolgtinderFormarray[n],wobeinvon0biszur Elementanzahl-1 reicht. Die Anzahl der Array-Elemente geht aus dem Array-Feld(field) length hervor. Beachten Sie, dass length keine Methode ist! Sie dürfen daher nicht zwei runde Klammern hintanstellen, wie dies z. B. bei der gleichnamigen String-Methode erforderlich ist! for(int i=0; i<x.length; i++) System.out.println(x[i]); Arrays können auch in for each-schleifen durchlaufen werden. Die Array-Elemente können dann allerdings nur gelesen, nicht aber verändert werden: for(int itm: x) System.out.println(itm); Mehrdimensionale Arrays Die Java-Syntax unterstützt auch mehrdimensionale Arrays. Dabei werden einfach mehrere eckige Klammernpaare aneinandergereiht, wie die folgenden Beispiele zeigen: int[][] x; x = new int[8][4]; x[2][3] = 27; double[][] y = new double[100][100];

29 2 Variablen, Arrays und Enums 2.2 Arrays 29 int[][] z = { {1, 2, 3, {4, 5, 6 ; System.out.println(z[1][2]); // liefert 6 // dreidimensionales Array (ca. 2 MByte Platzbedarf) short[][][] s = new short[100][100][100]; In Wirklichkeit verwaltet Java allerdings nicht echte mehrdimensionale Arrays, sondern ArraysvonArrays(vorArrays...).ImobigenBeispielverweistx[2]aufeineinfaches Array aus vier Elementen. Auch das length-feld bezieht sich nur auf die Elemente der ersten Dimension. x.length liefert deswegen 8, nicht etwa 32. Dieses Konzept ermöglicht die unkomplizierte Realisierung von nicht-rechteckigen Arrays. Im folgenden Beispiel zeigt x[0] auf ein Array mit einem Element, x[1] auf ein Array mit zwei Elementen etc. int[][] x = new int[10][]; for(int i=0; i<10; i++) { x[i] = new int[i+1]; Abbildung 2.1: Ein nicht-rechteckiges Arrays

30 2 Variablen, Arrays und Enums 2.2 Arrays 30 Das folgende Beispiel zeigt zwei Schleifenvarianten, um alle Elemente des obigen Arrays zu durchlaufen. Beachten Sie, dass bei der zweiten Variante die Schleifenvariable subarr den Typ int[] aufweist. Jedes Element, das diese Schleifenvariable durchläuft, ist also selbst ein Array. // Schleifenvariante 1: Array initialisieren for(int i=0; i<x.length; i++) { for(int j=0; j<x[i].length; j++) { x[i][j] = i + j; // Schleifenvariante 2: Summe ausrechnen int sum=0; for(int[] subarr : x) { for(int itm : subarr) { sum += itm; System.out.println(sum); Array-Interna und-methoden Während lokale Variablen vor ihrer Verwendung initialisiert werden müssen, gilt diese Regel nicht für die Elemente eines Arrays sowie für Klassenvariablen(fields). Diese werden beim Erzeugen des Arrays bzw. des Objekts automatisch mit 0 bzw. null initialisiert. Java-intern sind Arrays Objekte. Es existiert allerdings nicht einfach eine Array-Klasse, deren Instanzen dann Array-Objekte sind. Vielmehr sind Arrays eine Sonderform von Klassen, die tief in der Java-Sprachdefinition verankert sind. Ihr Klassenname ergibt sich auseinerodermehrereneckigenklammern,jenachdem,obessichumeinein-oderum ein mehrdimensionales Array handelt. Den Klammern folgt bei elementaren Datentypen einbuchstabe,z.b.ifürintoderdfürdouble,oderdervollständigeklassennameplus einem Semikolon bei Objekt-Arrays:

31 2 Variablen, Arrays und Enums 2.2 Arrays 31 Datentyp Defaultwert Integerzahlen 0 Fließkommazahlen 0.0 boolean false char \u0000(also das Unicode-Zeichen 0) Objekte inklusive String null Tabelle 2.4: Defaultwerte für Array-Elemente und Klassenvariablen import java.awt.point; int[] x = new int[5]; System.out.println(x.getClass().getName()); double[] y = new double[5]; System.out.println(y.getClass().getName()); Point[][] pts = new Point[7][2]; System.out.println(pts.getClass().getName()); // Ausgabe: [I [D [[Ljava.awt.Point; Die Array-Klassen sind nur von Object abgeleitet und bieten daher keine spezifischen Methoden. Vielmehr stellt die Klasse java.util.arrays(beachten Sie die Endung s!) statische Methoden zur Verfügung, mit denen Sie Arrays initialisieren, durchsuchen, sortieren etc. können. Beachten Sie aber, dass sämtliche Arrays-Methoden für eindimensionale Arrays konzipiert sind.

32 2 Variablen, Arrays und Enums 2.2 Arrays 32 Methode Funktion binarysearch durchsucht ein sortiertes Array. sort copyofrange equals fill tostring sortiert ein Array. bildet ein neues Teil-Array. vergleicht den Inhalt zweier Arrays. initialisiert die Array-Elemente mit einem Wert. liefert eine lesbare Zeichenkette des Arrays(zum Debuggen und Testen). Tabelle 2.5: Ausgewählte Methoden der Klasse java.util.arrays int[] x = {7, 12, 3, 9; Arrays.sort(x); System.out.println(Arrays.toString(x)); // Ausgabe: [3, 7, 9, 12] Die Methoden sort und binarysearch setzen voraus, dass es sich bei den Array- Elementen um elementare Datentypen oder um Objekte von Klassen handelt, die die Schnittstelle Comparable implementieren. Ist dies nicht der Fall, müssen Sie ein zusätzliches Comparator-Objekt angeben, das zwei Objekte vergleicht. Beispiele für die Implementierung der Comparable-Schnittstelle bzw. für eine Comparator-Klasse finden Sie in den Kapiteln Vererbung und Schnittstellen und Collections. Wenn Sie ein Array kopieren(duplizieren) möchten, verwenden Sie dazu am besten die Methode clone: int[] x = {1, 4, 189, 3; int[] y = x.clone(); Beachten Sie aber, dass clone nur ein sogenanntes shallow copy durchführt und dabei nur die erste Dimension des Feldes berücksichtigt. Bei Objekt-Arrays werden nur die Objektreferenzen geklont, nicht die Objekte selbst. Eine clone-kopie eines mehrdimensionalen

33 2 Variablen, Arrays und Enums 2.3 Konstanten und Enums 33 Arrays liefert ein neues Array, dessen Elemente in der ersten Dimension auf dieselben Subarrays zeigen wie im ursprünglichen Array. Wie das folgende Beispiel beweist, können Arrays wie Objekte als Parameter an Methoden übergeben bzw. als Ergebnis von Methoden zurückgegeben werden: import java.util.arrays; int[] x = {7, 12, 3, 9; m1(x); System.out.println(Arrays.toString(x)); // Ausgabe: [14, 24, 6, 18] x = m2(5); System.out.println(Arrays.toString(x)); // Ausgabe: [0, 1, 2, 3, 4] public static void m1(int[] ar) { for(int i=0; i<ar.length; i++) ar[i] *=2; public static int[] m2(int n) { int[] ar = new int[n]; for(int i=0; i<n; i++) ar[i] = i; return ar; 2.3 Konstanten und Enums Konstanten Java sieht keine direkte Definition von Konstanten vor. Stattdessen kann der Deklaration von Variablen das Schlüsselwort final vorangestellt werden. Es bewirkt, dass die Variable nach der erstmaligen Initialisierung nicht mehr verändert werden kann. Versuchen Sie es dennoch, liefert javac beim Kompilieren eine Fehlermeldung.

34 2 Variablen, Arrays und Enums 2.3 Konstanten und Enums 34 final double PI = ; Wenn final für eine Objektvariable verwendet wird, kann die Objektreferenz nicht mehr verändert werden. Aber aufgepasst: Die Daten des Objekts können aber sehr wohl modifiziert werden! Insofern verhält sich ein finales Objekt nicht wie eine Konstante. import java.awt.point;... final Point p = new Point(3, 3); p = new Point(4,4); // nicht zulässig p.x = 4; // erlaubt! p.y = 4; // erlaubt! Hinweis final kann auch bei der Deklaration von Klassen verwendet werden, hat dort aber eine andere Bedeutung: Finale Klassen können durch Vererbung nicht erweitert werden. Konstantenaufzählungen(Enums) Seit Version 5 können Sie in Java mit dem Schlüsselwort enum eine Aufzählung von Konstanten definieren. Das folgende Listing demonstriert die Anwendung einer solchen Aufzählung: // Definition public enum Color { RED, GREEN, BLUE, YELLOW, BLACK, WHITE // Anwendung Color c = Color.GREEN; if(c == Color.BLACK) System.out.println("schwarz");

35 2 Variablen, Arrays und Enums 2.3 Konstanten und Enums 35 Enums sind ein Sonderfall einer Klasse. Java-intern wird eine Enumeration durch die Vererbung von der Klasse java.lang.enum gebildet. Der Compiler macht daher aus enum Color eine Klasse, deren Definition mit class Color extends Enum beginnt. Das ist auch der Grund, weswegen Enumerationen nicht wie Klassen durch extends erweitert werden können.(java kennt keine Mehrfachvererbung in der Art class C extends A, B. Da jede Enumeration bereits extends Enum impliziert, würde enum F extends E zu class F extends Enum, E führen, also zu einer nicht zulässigen Mehrfachvererbung.) Enums gelten wie Klassen als Referenztypen. Allerdings sind einfache Enum-Objekte wie im obigen Beispiel so wie Strings unveränderlich(immutable). Sie verhalten sich daher in vielerlei Hinsicht wie primitive Datentypen. Die Java-Syntax bietet bei der Definition von Enums viel mehr Freiheiten als andere Programmiersprachen. Beispielsweise können Sie eine Farbaufzählung auch mit einem eigenen Konstruktor und privaten und öffentlichen Methoden ausstatten: public enum Color { RED(1,0,0), GREEN(0,1,0), BLUE(0,0,1), WHITE(1,1,1), BLACK(0,0,0), GREY(0.7,0.7,0.7); private double r, g, b; public Color(double r, double g, double b) { this.r = r; this.g = g; this.b = b; public String hexcode() { return hex(this.r) + hex(this.g) + hex(this.b);

36 2 Variablen, Arrays und Enums 2.3 Konstanten und Enums 36 private String hex(double x) { if(x<=0) return "00"; if(x>=1) return "FF"; return String.format("%02X", (int)(x*256));... Color c = Color.GREY; System.out.println(c.hexcode()); // liefert B3B3B3 Hinweis Syntaktisch ist es möglich, Enums zu definieren, die sich kaum von gewöhnlichen Klassen unterscheiden. Das ist in selten Fällen zweckmäßig, etwa zur Implementierung des Singleton-Entwurfsmuster, wie dies in einem Stack-Overflow-Beitrag beschrieben ist.

37 12 Exceptions Exceptions(Ausnahmen) geben Auskunft über in Java-Programmen aufgetretene Fehler. Mit try catch besteht die Möglichkeit, auf Fehler zu reagieren und das Programm fortzusetzen oder zumindest geordnet zu beenden. Eine Besonderheit des Exception-Konzepts von Java besteht darin, dass bei der Deklaration von Methoden angegeben werden kann, welche Arten von Exceptions bei deren Ausführung auftreten können. Der Aufruf von derart deklarierten Methoden muss durch try catch abgesichert werden; alternativ besteht die Möglichkeit, die übergeordnete Methode ebenfalls so zu deklarieren, dass darin eine Exception auftreten kann Exception-Klassen Formal betrachtet werden die Informationen über einen Fehler in einem Objekt transportiert, dessen Klasse von Throwable abgeleitet ist. In der Java-Standardbibliothek sind Dutzende verschiedene Error- und Exception-Klassen definiert. Die folgende Abbildung gibt einen ersten Überblick: Java unterscheidet zwischen Fehlern, die im Code abgesichert werden müssen(in der obigen Abbildung blau gekennzeichnet), und solchen, bei denen die Absicherung optional ist(gelb). Welche Klasse in welche Gruppe fällt, hängt von der Erbfolge ab: Fehler, deren Klasse von Error bzw. von RuntimeException abgeleitet ist, müssen nicht abgesichert werden, alle anderen schon.

38 12 Exceptions 12.1 Exception-Klassen 141 Abbildung 12.1: Die wichtigsten Error- und Exception-Klassen Die Throwable-Klasse An der Spitze der Klassenhierarchie steht Throwable. Anders als der Name vermuten lässt, handelt es sich dabei um eine gewöhnliche Klasse, keine Schnittstelle. Objekte der Throwable-Klasse enthalten eine Beschreibung des Fehlers sowie Informationen darüber, wo im Code der Fehler aufgetreten ist. Dabei ist der sogenannte Stack Trace eine Liste aller Methoden, die aufgerufen wurden, bis es zum Fehler gekommen ist. Die folgende Tabelle fasst die wichtigsten Methoden zum Auslesen der Daten aus der Throwable- Klasse zusammen:

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

1. Der Einstieg in Java. Was heißt Programmieren?

1. Der Einstieg in Java. Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen und ausführen können, Möglichkeiten der Kommentierung

Mehr

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

1. Der Einstieg in Java

1. Der Einstieg in Java 1. Der Einstieg in Java Was heißt Programmieren? 1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels sollen Sie wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme übersetzen

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer bernauer@inf.ethz.ch Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1 Kapitel 11 Fehler und Ausnahmen Fehler und Ausnahmen 1 Ziele Fehlerquellen in Programmen und bei der Programmausführung verstehen Das Java-Konzept der Ausnahmen als Objekte kennenlernen Ausnahmen auslösen

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Der hat die früher handschriftlichen Folien lesbar gemacht. Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Heutige Themen Hello World!

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Android will doch nur spielen. Java Eine kurze Einführung

Android will doch nur spielen. Java Eine kurze Einführung Android will doch nur spielen Java Eine kurze Einführung Agenda Einführung in Java Syntax und Semantik Komplexe Datenstrukturen OOP Weitere Java-Elemente 2 Einführung in Java Was ist Java? lt. Sun: einfach

Mehr

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero

Exceptions. Prof. Dr. Margarita Esponda SS 2012. M. Esponda-Argüero Exceptions Prof. Dr. Margarita Esponda SS 2012 1 Ausnahmen Eine Ausnahme (Exception) ist ein Fehler oder ein nicht geplantes Ereignis, das während der Ausführung eines Programms vorkommt und dessen normalen

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf 16 Exceptions Zur Behandlung unerwarteter Situationen bietet Java Unterstützung in Form von Exceptions oder Ausnahmen. Den Sinn von Exceptions können wir Ihnen an einem kleinen Beispiel klarmachen. Nehmen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Fehlerbehandlung und Ein- und Ausgabe Titel der Präsentation 2 Fehler = Exceptions? Die Exception- bzw. Ausnahmebehandlung in Java ist eine spezielle Form der Fehlerbehandlung Typischerweise

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Arrays in Java. Text. Stefan Brotschi

Arrays in Java. Text. Stefan Brotschi Arrays in Java Stefan Brotschi Übersicht Einführung Deklaration, Generierung und Initialisierung Mehrdimensionale Arrays Arrays kopieren Klasse java.utils.arrays Kleine Knobeleien Einführung / Allgemein

Mehr

Themen der Übung. Java. Java installieren. Java installieren. Installation (Fortsetzung)

Themen der Übung. Java. Java installieren. Java installieren. Installation (Fortsetzung) Themen der Übung Java CoMa-Übung II TU Berlin 1 Java-Installation Hello World 3 Temperature 4.10.01 CoMa-Übung II (TU Berlin) Java 4.10.01 1 / 8 CoMa-Übung II (TU Berlin) Java 4.10.01 / 8 Java installieren

Mehr

Objektorientierte Programmierung in Java

Objektorientierte Programmierung in Java Objektorientierte Programmierung in Java 1. Auflage Objektorientierte Programmierung in Java schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag C.H. Beck im Internet:

Mehr

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen

AKTUEL ZU JAVA 8 PROGRAMMIEREN IN JAVA. 7. Auflage. Im Internet: Alle Beispielprogramme und Lösungen L AKTUEL ZU fritz JOBST JAVA 8 PROGRAMMIEREN IN JAVA 7. Auflage Im Internet: Alle Beispielprogramme und Lösungen 4 1 Der Einstieg in Java keinem Fall zulässig. Die Schreibweisen Hello.java für den Namen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff Programmieren in C C Syntax Datentypen, Operatoren und Kontrollstrukturen Prof. Dr. Nikolaus Wulff Elementare Typen Imperative und objektorientierte Programmiersprachen bieten i.d.r. einen Satz elementarer

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1

Übungen Informatik I. JAVA - Einführung. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 Folie 1 Übungen Informatik I JAVA - Einführung Übungen Informatik 1 Folie 1 Warum Java? Java ist derzeit die Programmiersprache für das Internet. Java ist ein Programmierkonzept der Zukunft. Objekt-orientierte

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Java Programmierung auf der Konsole / unter Eclipse

Java Programmierung auf der Konsole / unter Eclipse Fakultät Informatik, HFU Brückenkurs Programmieren 1 Java Programmierung auf der Konsole / unter Eclipse Allgemeine Begriffe Programmiersprache: künstliche Sprache zur Notation von Programmen Programm:

Mehr

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Kontrollstrukturen, Pseudocode und Modulo-Rechnung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 29.10.2012 CoMa-Übung III (TU Berlin) Kontrollstrukturen, Pseudocode und Modulo-Rechnung 29.10.2012 1 / 1 Themen der Übung 1

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Erster Kontakt mit Java und Pseudocode

Erster Kontakt mit Java und Pseudocode Erster Kontakt mit Java und Pseudocode CoMa-Übung II TU Berlin 23.10.2013 CoMa-Übung II (TU Berlin) Erster Kontakt mit Java und Pseudocode 23.10.2013 1 / 27 Themen der Übung 1 Java auf meinem Rechner 2

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Kapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java. 2.1.1 Historisches. 2.1.2 Eigenschaften von Java

Kapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java. 2.1.1 Historisches. 2.1.2 Eigenschaften von Java Kapitel 2 Java: Der Einstieg Im vorigen Kapitel haben wir die Syntax der Sprache Mini-Java kennengelernt. Bevor wir in Kapitel 3 ausführlich auf Syntax und Semantik der Programmiersprache Java eingehen

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

3 Die Programmiersprache Java

3 Die Programmiersprache Java 3 Die Programmiersprache Java Im letzten Kapitel haben wir die theoretischen Grundlagen der Programmierung diskutiert. Jetzt werden wir mit Java eine konkrete Programmiersprache kennen lernen. Die Sprache

Mehr

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter

Primitive Datentypen. Dr. Wolfgang Süß Thorsten Schlachter Dr. Wolfgang Süß Thorsten Schlachter Java-Bezeichner Für Variablen, Methoden, Klassen und Schnittstellen werden Bezeichner auch Identifizierer (von engl. identifier) genannt vergeben. Ein Bezeichner ist

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv Alexander Niemann Das Einsteigerseminar Objektorientierte Programmierung in Java G bhv Inhaltsverzeichnis Vorwort 11 Einleitung 13 Lernen - Üben 13 Über dieses Buch 14 Ш11ШШШШ '. ш Ш Java 19 Die Geschichte

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

Java-Vorkurs 2015. Wintersemester 15/16

Java-Vorkurs 2015. Wintersemester 15/16 Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich

Mehr

Musterlösungen zur Klausur Informatik 3

Musterlösungen zur Klausur Informatik 3 Musterlösungen zur Klausur Informatik 3 Justus-Liebig-Universität Gießen Wintersemester 2003/2004 Aufgabe 1 (6 Punkte) Man kreuze bei den folgenden Deklarationen und Definitionen jeweils an, ob sie aus

Mehr

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf Teil II Objektorientierte Programmierung und objektorientierter Entwurf 39 Kapitel 8 Robuste Programme durch Ausnahmebehandlung Ziele: Lernen, robuste Programme zu schreiben Ausnahmen als Objekte verstehen

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr