Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Robert Lubkoll/Java Kurs/Tag1/Teil1/Zusammenfassung

Hier noch einmal zum Nachschlagen all das was in LE1 behandelt wurde. Die Folien der ersten Vorlesung findet ihr hier:

Folien der ersten Vorlesung


HelloWorld in Java

public class HelloWorld{
 public static void main(String[] arguments){
  System.out.println("Hallo Welt");
 }
}

Javaprogramme sind in Blöcken strukturiert, die immer von einer { begonnen und einer } beendet werden. Vor der { steht ein Ausdruck, der festlegt, um was für eine Art von Block es sich handelt.

Die erste Zeile im HelloWorld-Programm legt fest, dass alles nun Folgende zu einer Klasse namens HelloWorld gehört, warum da ein public steht ist ersteinmal egal. Die zweite Zeile leitet eine Methode ein, die in (genau) dieser Form die Sonderrolle hat, dass mit ihr das Javaprogramm beginnt. Da wir uns bisher noch keine Sorgen um andere Methoden machen (LE2), verwenden wir die main einfach und schreiben unser komplettes Programm hier.

System.out.println("Text"); gibt “Text“ auf der Console aus und bricht die Zeile um.

Wichtig! : Die Datei, in der ihr euer Programm speichert, muss denselben Namen tragen wie eure Klasse und auf .java enden. Anderenfalls bekommt ihr eine Fehlermeldung von javac.

compilieren und ausführen

javac

Aufruf: javac HelloWorld.java

Zunächst muss das Programm in ausfürbaren Bytecode übersetzt (compiliert) werden. In Java heißt der dafür zuständige Compiler javac.

javac erzeugt aus der HelloWorld.java Datei eine HelloWorld.class Datei, die zwar nicht länger lesbar ist aber von java als Programm ausgeführt werden kann. Wenn ihr beim schreiben eures Programms Fehler gemacht habt werdet ihr in der Regel bereits hier von einem verwirrten Compiler darauf hin gewiesen.

java

Aufruf: java HelloWorld

Ist die HelloWorld.class Datei erfolgreich erzeugt worden kann sie ausgefürt werden.

Wichtig! : HelloWorld ist hier weder die .class Datei noch die .java Datei sondern die in der .class Datei compilierte Klasse. Also hängt hier keine Endung dran, sonst gibt es eine Fehlermeldung.

Variablen

Deklaration / Zuweisungen

int number_1 = 7;
int number_2 = 8;
number_1 = number_1 + number_2;

Variablen Müssen in Java vor der Benutzung deklariert, also angelegt werden.

Formal:

Typ Variablenname;
// oder wenn ihr schon wisst was in die Variable hinnein soll
Typ Variablenname = Wert;

Ist eine Variable ersteinmal deklariert können ihr innerhalb des Blocks in dem sie deklariert wurde Werte zugewiesen werden. Diese Zuweisung ist keine Mathematische Gleichung, sondern alles was auf der rechten seite des Gleichheitszeichens steht wird ausgewertet und das Ergebnis dieser Auswertung wird der neue Wert der Variablen links vom Gleichheitszeichen.

Wichtig : Beim Rechnen mit Variablen gilt Punkt vor Strichrechnung und die normalen Klammerregeln.

wichtigste Basistypen

Die wichtigsten Typen mit denen ihr hier im Kurs arbeiten werdet sind die folgenden Basystypen:

  • int
Eine Ganze Zahl zwischen - 2E31 und 2E31 -1
  • double
Eine Kommazahl zwischen - 1.79769313486231570 *10E308 und 1.79769313486231570 *10E308
Wichtig : es wird kein Komma verwendet, sondern ein Punkt.
  • String
Eine Zeichenkette. Text der in Anführungszeichen gesetzt ist wird als String verwertet. z.B: String text = "Text";
Zwei Zeichenketten oder auch eine Zeichenkette und ein anderer Basystyp können mit dem Operator + verkettet werden. aus "Ergebnis: "+7 wird hier z.B. "Ergebnis: 7".
Das das Plus in Java gleich mehrere Bedeutungen hat kann verwirrend sein. Wenn irgendwo am Plus ein String hängt verwendet Java es um den string mit dem rest zu verknüpfen. Anderenfalls als Rechenoperator.
"Ergebnis: "+(7+3) würde beispielsweise "Ergebnis: 10" ergeben.
  • boolean
Ein Warheitswert. die beiden zulässigen Zustände sind true und false.
Die drei wichtigsten Operatoren sind:
  1. && (logisch und)
  2. || (logisch oder)
  3.  ! (logisch nicht)

Fallunterscheidung

boolean condition = true;
if( condition ){
 // condition war true
}else{
 // condition war false
}

Ist die condition, hier als Variable dargestellt, true wird der {} Klammerblock hinter dem if abgearbeitet und der {} Klammerblock hinter dem else übersprungen. Ist sie False passiert das Ganze genau anders herrum, es wird also der else Block abgearbeitet.

boolean condition = true;
if( condition ){
 // condition war true
}

Will man einen Programmteil nur dann ausführen wenn eine bestimmte Bedingung erfüllt ist und sonst einfach das Programm fortsetzen, kann man den else Teil der Fallunterscheidung auch weck lassen.


Blöcke

Alles was in Java mit einer { Klammer beginnt muss irgendwo auch wieder mit einer } Klammer enden und stellt einen Block dar. Blöcke schreibt ihr z.B. bei Fallunterscheidungen, aber auch Klassen und Methoden (wie die main) stellen Blöcke dar. Blöcke können selbstverständlich auch weitere Blöcke enthalten. Damit man bei diesen Verschachtelungen nicht die Übersicht verliert empfielt es sich alle was innerhalb eines Blockes steht mit dem Tabulator einzurücken. Das sieht dann ungefähr so aus:

if(true){          // erster Blog
   if(true){       // zweiter Blog
       
   }
}

Variablen die ihr innerhalb dieser Blöcke verändert bleiben auch nach deren Abarbeitung verändert.


Wichtig !: Wenn ihr allerdings innerhalb eines Blockes eine Variable neu anlegt existiert diese nur innerhalb dieses Blockes und allen Blöcken die in diesem Block enthalten sind.

Beispiel

if(true){
   String name = "Robert";   // Deklaration der Variablen im Block1

   if(true){
       name = "Ellen";       // Verwendung der Variablen im Block2
   }
   name = "Artur";           // Verwendung der variablen im Block1
}
                             // ab hier existiert die Variable nicht mehr (Block0)

Kommentare

// Einzeiliger Kommentar

/*
 Kommentarblock
*/

Fehlersuche

Enthält euer Programm Fehler so wird sich in der Regel bereits der compiler javac beschweren und euch einen Hinweis darauf geben an welcher Stelle er nicht weitergekommen ist.

Angezeigt wird euch:

  1. die Datei in der der Fehler aufgetreten ist
  2. die Zeile in welcher der Fehler aufgetreten ist
  3. was javac an der Stelle an der er nicht weiter weiß erwartet hätte (was ber nur ein Hinweis und nicht immer wirklich der Fehler ist)
  4. was es an der Problemstelle in eurem Code tatsächlich vorgefunden hat.
  • Wie geht man vor?
Man schaut zunächst in der von javac angegebenden Zeile nach ob man den Fehler vielleicht bereits hier findet.
Ist das nicht der Fall durchsucht man sein Programm ausgehend von dieser Zeile Shritt für Schritt in Richtung Programmanfang nach einem Fehler. In die andere Richtung muss man nicht suchen da javac diesen Teil noch nicht einmal bearbeitet hatte als der Fehler auftrat!