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

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

Ü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 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

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

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

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

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

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

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

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

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

Einführung in die Programmierung mit BlueJ

Einführung in die Programmierung mit BlueJ Einführung in die Programmierung mit BlueJ Thema 1 Grundlagen der Programmierung mit BlueJ Dr. Henry Herper Otto-von-Guericke-Universität Magdeburg - WS 2013/14 Java 1991-92 Java (1995) Anwendungsgebiet:

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

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

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

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

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

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

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

Hello World in Java. Der Weg zum ersten Java-Programm

Hello World in Java. Der Weg zum ersten Java-Programm Vorwort Hello World in Java Der Weg zum ersten Java-Programm Diese Anleitung wurde unter Windows XP verfasst. Grundsätzlich sollte sie auch unter späteren Windows Versionen wie Windows Vista oder Windows

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

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

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

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden

Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden Exceptions Fehler die bei der Programmerstellung passieren können teilweise vom Compiler erkannt werden int a; double b=10; a = 10 * b; System.out.println(a); Fehler die während der Programmausführung

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

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

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 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

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

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

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

Erste Schritte zum lauffähigen Java Programm

Erste Schritte zum lauffähigen Java Programm Erste Schritte zum lauffähigen Java Programm Diese kleine Einführung ist eine Hilfe für Studenten der Vorlesung SWT I zur Meisterung der sich ergebenden Hürden bei der Erstellung eines ersten kleinen Java-Programms.

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

Übungen Informatik I. JAVA - Eclipse. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 1

Übungen Informatik I. JAVA - Eclipse. elga Gabler, Holger Vogelsang, Christian Pape. Übungen Informatik 1 1 Übungen Informatik I JAVA - Eclipse Übungen Informatik 1 1 Integrierte Entwicklungsumgebungen Integrierte Entwicklungsumgebung (IDE): vereint Editor, Compiler, Debugger und andere Entwicklungswerkzeuge

Mehr

OO Programmierung in Java

OO Programmierung in Java OO Programmierung in Java Einführung WS 212/213 Prof. Dr. Margarita Esponda M. Esponda-Argüero 1 Homepage Homepage http://www.esponda.de/ws_12_13/jbk Vorlesungsfolien Literaturliste Übungen Zusätzliches

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

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

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

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

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Smalltalk vs. Java c Chris Burkert 2002. Smalltalk versus Java

Smalltalk vs. Java c Chris Burkert 2002. Smalltalk versus Java Smalltalk versus Java Gliederung Einführung Geschichte sprachliche Aspekte technische Aspekte theoretische Aspekte praktische Aspekte Fazit Einführung - Merkmale Objektorientierung Einführung - Merkmale

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Einführung in ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Lua - Erste Schritte in der Programmierung

Lua - Erste Schritte in der Programmierung Lua - Erste Schritte in der Programmierung Knut Lickert 7. März 2007 Dieser Text zeigt einige einfache Lua-Anweisungen und welchen Effekt sie haben. Weitere Informationen oder eine aktuelle Version dieses

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Java Tipps für Lehrer. Table des matières. Einleitung

Java Tipps für Lehrer. Table des matières. Einleitung Java Tipps für Lehrer Table des matières Einleitung..1 Tipp 1: Gültige Objekte erzeugen.2 Tipp 2: Objekte nicht wiederverwenden.3 Tipp 3: Direkt auf die eigenen Attribute zugreifen4 Tipp 4: Ausgabe-Strings

Mehr

Microsoft Visual C# 2008

Microsoft Visual C# 2008 John Sharp 13 Microsoft Visual C# 2008 Schritt für Schritt 13 13 14 15 15 16 16 17 17 17 21 22 22 23 25 26 II 40 51 Press 53 54 54 55 55 56 56 57 58 63 63 64 Inhaltsverzeichnis Einleitung 13 Einführung

Mehr

Let s get started with Java

Let s get started with Java Let s get started with Java ChriZ 2011 Geschichte: - 1995 entsteht Java aus der Programmiersprache Oak - Zwischen 1998 und 2011 gibt es insgesamt 6 Updates für Java - die Sprache an sich ist jedoch erst

Mehr

4. Objektorientierte Programmierung

4. Objektorientierte Programmierung 4. Objektorientierte Programmierung In Abschnitt 3 ging es um fundamentale Basiskonzepte von Java, wie es sie in jeder anderen gängigen Programmiersprache so oder so ähnlich auch gibt. In Abschnitt 4 nun

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

Nino Simunic M.A. Computerlinguistik, Campus DU

Nino Simunic M.A. Computerlinguistik, Campus DU Vorlesung 2. Sitzung Grundlegende Programmiertechniken Wintersemester 2007/2008 Dozent Nino Simunic M.A. Computerlinguistik, Campus DU Grundlegende Programmiertechniken, WS 2007/2008 Programm, Algorithmus

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Grundlagen der Programmierung. Eine Einführung mit Java

Grundlagen der Programmierung. Eine Einführung mit Java . Eine Einführung mit Java VHS Murrhardt März 2009 Einführung Grundlagen der objektorientierten Programmierung Entwicklungsumgebung Eclipse Teil I 6. März 2009 1 Einführung 2 Grundlagen der objektorientierten

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Aufgaben: 2 JDK/SDK/JRE und Java Entwicklungswerkzeuge Objektorientierte Programmierung OOP Programmieren mit Java 1. Installation von Java 2. Erstes Java Programm Hello World 3. Dreimal Hallo Olten 2

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 1)

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor

Inhaltsverzeichnis. 4.1 Programme compilieren und starten 4.2 Arbeiten mit dem Editor 4.3 Der Objekt-Inspektor Inhaltsverzeichnis Vorwort 1 Was ist Delphi? 1.1 Die Wurzeln von Delphi 1.2 Der Konkurrent - Visual Basic 1.3 Die komponentenbasierte Entwicklung 1.4 Object-Pascal 2 Programmieren mit Delphi 2.1 Das ))visuelle((

Mehr

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper Python Programmierung Kontaktdaten Homepage: http://wwwlehre.dhbw-stuttgart.de/~schepper/ Email: Volker. Schepper [A@T] yahoo.de Vorlesung Skriptsprachen Vorlesung: 06.03.2013 13.03.2013 20.03.2013 27.03.2013

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Erster Bug: eine Motte

Erster Bug: eine Motte SOFTWAREFEHLER Der erste Bug Erster Bug: eine Motte Der Begriff Bug (deutsch: Motte) stammt aus dem Jahre 1945, als Ingenieure in einem Schaltrelais eines Computers (Harvard Mark II-System) eine Motte

Mehr

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java JUSTUS-LIEBIG-UNIVERSITÄT GIESSEN ALLG. BWL UND WIRTSCHAFTSINFORMATIK UNIV.-PROF. DR. AXEL C. SCHWICKERT Informationen zur WBT-Serie Einführung in die Programmierung mit Java Univ.-Prof. Dr. Axel C. Schwickert

Mehr

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik

Bachelor-Klausur im WiSe 2013 / 2014. Grundlagen der Informatik Fachhochschule Kaiserslautern FB Informatik und Mikrosystemtechnik Prof. Dr. M. Duque-Antón Bachelor-Klausur im WiSe 2013 / 2014 im Fach Grundlagen der Informatik Angewandte Informatik / Medieninformatik

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Inhaltsverzeichnis. TEIL I Swift. 1 Hello World! 29. Vorwort... 25

Inhaltsverzeichnis. TEIL I Swift. 1 Hello World! 29. Vorwort... 25 Inhaltsverzeichnis Vorwort... 25 TEIL I Swift 1 Hello World! 29 1.1»HelloWorld«imPlayground... 30 Voraussetzungen... 30 AppleDeveloperProgram... 30 DenPlaygroundstarten... 30 HelloWorld!... 31 GrafischeDarstellungvonDaten...

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Compilerbau I Sommersemester 2008

Compilerbau I Sommersemester 2008 Fachbereich 12 Informatik und Elektrotechnik Programmiersprachen Kurt Sieber Benedikt Meurer Compilerbau I Sommersemester 2008 Übungsblatt 1 Aufgabe 1 Der erweiterte reguläre Ausdruck α{m, n erkennt zwischen

Mehr

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung

Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Java Kurs für Anfänger LMU SS09 Einheit 1 Javaumgebung Ludwig-Maximilians-Universität München Institut für Informatik Programmierung und Softwaretechnik (PST) Prof. Wirsing 6. Mai 2009 1 Der Name Java

Mehr

Exceptions: Parameterprüfung import java.io.ioexception;

Exceptions: Parameterprüfung import java.io.ioexception; PPK2 Java Exceptions, Dateien Seite 1 von 31 Exceptions: Parameterprüfung import java.io.ioexception; public class Parameters public static String Methode(String str,exception obj,int index, String[] array)

Mehr

Einführung in die Informatik 1 - Javainstallationsanleitung

Einführung in die Informatik 1 - Javainstallationsanleitung Einführung in die Informatik 1 - Javainstallationsanleitung Die Tutoren Stand: 19. Oktober 2009 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einfhrung in Java 1 1.1 Installation von Java unter Mac...............................

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Grundlagen der Informatik Ausnahmebehandlung & Threads

Grundlagen der Informatik Ausnahmebehandlung & Threads Grundlagen der Informatik Ausnahmebehandlung & Threads Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Inhalt Ausnahmebehandlung

Mehr

1 Programmiersprachen

1 Programmiersprachen 1 Programmiersprachen Um einen Algorithmus in einer von einer Maschine ausführbaren Form beschreiben zu können, verwenden wir eine formale Sprache. formale Beschreibung des Aufbaus der Worte und Sätze,

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr