Systematische Übersicht

Kommentar // Dies ist ein Kurzkommentar (bis Zeilenende)

/*
 *  Dies ist ein mehrzeiliger Kommentar
*/

/** Dies ist ein Kommentar, der von Java in
  * die Dokumentation der Klasse
/*  übernommen wird.
Kommentare werden vom Compiler nicht übersetzt, sie dienen nur der Übersicht.
Programme sollte man stets so ausführlich kommentieren, dass ein fachkundiger Leser (bzw. der Programmautor nach einem halben Jahr) ohne allzu große Anstrengung ihren Sinn versteht. Hierzu dient auch, dass Variablen und Methoden möglichst aussagekräftige Namen bekommen.
Programm class NeueKlasse {
  public static void main(String[] args) {
    (Anweisungen)
  }
}
Ein Programm ist in Java nichts anderes als eine spezielle Klasse, die vom Betriebssystem  ausgeführt werden kann.
Im Java-Editor kann der komplette Programm-rahmen für ein Java-Konsolenprogramm mit Klick auf erstellt werden.
(Als Konsole bezeichnet man ein Gerät (Tastatur und nicht grafikfähiger Bildschirm) zur textbasierten Ein- und Ausgabe von Befehlen und Daten.)
Klasse class MeineKlassse {

  String name;
  double größe;
  double gewicht;
 
  double bmi(double gr,gew) {
     return gew/(gr*gr);
  }

  void stellDichVor() {
    System.out.println("Mein Name ist"+name+
     " und mein BMI "+bmi(größe,gewicht));
  }
Klassen sind die Bausteine, aus denen Java-Anwendungen aufgebaut sind. Aus einer Klasse können konkrete Objekte erzeugt werden. Dazu stellt die Klasse sowohl Variablen bereit, um Daten aufzunehmen, als auch  Methoden, die das Verhalten dieser Objekte beschreiben.

Klassennamen werden großgeschrieben. Sie müssen mit dem Dateinamen (MeineKlasse.java) übereinstimmen.

Die Namen von Variablen und Methoden beginnen mit Kleinbuchstaben und werden durch Großschreibung im Wortinneren gegliedert.
Klassenbibliotheken java.lang.*;       // automatisch vorhanden


import java.util.* 
import java.awt.*
import java.io.*
enthält z.B. die Klassen System, Math, String, Integer, Double, ... mit statischen Methoden.

nötig z.B. für Scanner
nötig für GUI
Methoden    public static void main(String[] args) {
   ...
  }
Jede als Programm ausführbare Klasse muss eine main-Methode enthalten, die als public (öffentlich, von außerhalb aufrufbar), static (zur Klasse selbst, nicht zu einem konkreten Objekt dieser Klasse gehörig) und void (ohne Ausgabewert) deklariert sein muss.

Einem Konsolenprogramm können beim Programmstart Parameter übergeben werden. Diese werden von Java im Stringfeld args gespeichert und stehen im Programm als args[0], args[1] usw.  zur Verfügung.

Methodenaufruf
im Programm




System.out.println();



bodyMassIndex = bmi(größe,gewicht);
Methodenaufrufe erkennt man an den runden Klammern.
Hier wird die Methode println() des Objekts out aus der Klasse System aufgerufen. Diese Art des Methodenaufrufs heißt auch Anweisung.

Hier wird der Variable bodyMassIndex das Ergebnis der Methode bmi() zugewiesen. Diese Art des Methodenaufrufs heißt auch Funktion.
Trennzeichen ;
Nach jeder Anweisung steht ein Semikolon Das Leerzeichen und der Zeilenwechsel unterbrechen Anweisungen nicht.
Anweisungsblock class XY {
  main { 
  }
}
Ein Anweisungsblock in Java fasst mehrere Anweisungen zusammen, etwa die Anweisungen, die zu einer Klasse oder Methode gehören. Er ist von geschweiften Klammern begrenzt. Eine Variable "lebt" immer nur in dem Anweisungs-block, innerhalb dessen sie deklariert worden ist.

Eingabe import java.utils.*;

Eingabe= new Scanner(System.in);

String s = Eingabe.next():
String s = Eingabe.nextLine();
int i = Eingabe.nextInt();
double d = Eingabe.nextDouble();
Vor Beginn der eigentlichen Klasse wird die Utils-Bibliothek importiert.

Zu Beginn der main-Methode wird ein Objakt der Klasse Scanner erzeugt.
Bit dem Scanner können Strings, Zeilen (mit Leerzeichen) Integer oder double eingelesen werden;
Fehler abfangen Eingabe= new Scanner(System.in);
String antwort = Eingabe.next();
try {
  alter = Integer.parseInt(antwort);
} catch (Exception e) {
  System.out.println("Falsche Eingabe.");
  return;
}
Wenn die Operation nach try (hier eine Umwandlung String --> Integer) fehlschlägt, wird die von Java erzeugte Exception abgefangen und stattdessen eine benutzerdefinierte Fehlermeldung ausgegeben. Baut man alles (außer der Scannerdeklaration) in eine Schleife ein, so kann der Vorgang so lange wiederholt werden, bis die Eingabe gültig ist.
Ausgabe System.out.println();
System.out.print(s);
System.out.println(s);
Leerzeile ausgeben.
String s ausgeben (ohne Zeilenwechsel)
String s ausgeben (mit Zeilenwechsel);
Variablen int p;
int anzahl = 312;
double körperGewicht = 105.7;
String name = "Oskar";
char f = 'c';
erwachsen = alter>=18;
Variablen stellen Speicherplatz für Zahlen und Texte bereit. Vor der erstmaligen Verwendung müssen Variablen deklariert werden (der Variablentyp muss angegeben werden). Dabei können sie gleichzeitig initialisiert (mit einem Anfangswert versehen) werden. Der Speicherplatz für primitive Variablen (Variablen mit festem Speicherbedarf) wird beim Kompilieren des Programms direkt im Programm reserviert, für  Strings wird dagegen nur eine Referenz angelegt (die Adresse des tatsächlichen Speicherplatzes)

Wertzuweisung anzahl = 5;
mittelWert = (a+b)/2;
i++;
Einer Variablen wird ein Wert zugewiesen (es kann auch das Ergebnis einer Formel sein) oder ihr Wert wird modifiziert. Mehr...
Variablentypen
Name Wertebereich Speicher
byte Ganzzahlen -127 bis +127 8 Bit
short Ganzzahlen -32768 bis +32767 16 Bit
int Ganzzahlen -231 bis +231+1 32 Bit
long Ganzzahlen -263 bis +263-1 64 Bit
float Kommazahlen etwa 8 Stellen genau 32 Bit
double Kommazahlen etwa 17 Stellen genau 64 Bit
boolean true / false 8 Bit
char Einzelnes Zeichen 16 Bit
String Zeichenkette variabler Länge variable
 
Typecast int i = 5; double d = i;

double d = 8.3; int i = (int) d;

double d = 1/5;
double d = 1.0/5;
Zuweisungen an Typen mit größerer Genauigkeit sind problemlos möglich.
Zuweisungen an Typen mit geringerer Genauigkeit müssen durch einen Typecast bestätigt werden.
Dies würde eine Ganzzahldivision auslösen.
So kommt wirklich 0.2 heraus.
Zahl->String int i = 8; String s = String.valueOf(i);
int n = 4; String s = "Hauptstraße"+n;
Manchmal muss man explizit umwandeln,
manchmal geht es auch automatisch. Mehr...
String -> Zahl String s = "46"; int i = Integer.parseInt(s);
double d = Double.parseDouble("4.8");
 
Stringverkettung String name = vorname +" "+nachname; + verkettet Strings Mehr...
Stringanalyse String1.equals(String2) : boolean
String1.compareTo(String2) : integer
String1.contains(String2) : boolean
String.replace(char1 ,char2) : String
String.length() : integer
String.indexOf(char) : integer
String.charAt(integer): char
 Mehr...
Stringformatierung System.out.format("Sende mir %3d Stück.",k)
System.out.format("Zahle bitte %5.2f" €", b);
Baue Integer k mit 3 Stellen in Ausgabe ein.
Baue Double b mit insgesamt 5 Stellen, davon 2 Nachkommastellen in Ausgabestring ein.
Steuerzeichen \n 
\t 
\b
\f
\r
\"
\'
\\
\x00
\u0000
neue Zeile
Tabulator
Backspace
Seitenvorschub
Wagenrücklauf
Anführungszeichen im String
Anführungszeichen im String
Backslash im String
Hexadezimazahl
Unicode-Zeichen über Nummer
Zahloperatoren Ganzzahltypen:
+ - * / % 
Kommazahlen:
+ - * /
double w = Math.sqrt(r);
double p = Math.pow(b,e)

double d = Math.random()*10;

int i = (int) Math.random()*6+1
Ganzzahldivision liefert nur ganzzahligen Anteil,
Rest kann mit % ermittelt werden.


w wird die Quadratwurzel von r zugewiesen.
p wird b hoch e zugewiesen.

ermittelt  wird eine Kommazahl 0<=d<10

ergibt eine ganze Zufallszahl zwischen 1 und 6
if ( ) { } else { } if (alter<14) System.out.println("Kind");

if (alter>=18) {
  erwachsen=true;
}

if (erwachsen) {
  System.out.println("Alkohol erlaubt");
} else {
  System.out.println("Alkohol verboten");
}
Die Ausführung einzelner Anweisungen oder ganzer  Anweisungsblöcke kann von einer Bedingung abhängig gemacht werden.
And - Or - Not (a>0) && (a<5) // Alle Bedingungen gelten
(a<0) || (a>5) // Mind. eine Bedingung gilt
!(a<3)         // Bedingung darf nicht gelten
Anstelle einer einzelnen Bedingung können auch verknüpfte Bedingungen stehen.
Boolesche Variable boolean jugendlich = (alter>=14) && (alter<18) Das Ergebnis einer Bedingung kann in einer booleschen Variable gespeichert werden.
Zahlvergleich a<b, a<=b, a==b, a>b, a>=b Achtung: doppeltes Gleichheitszeichen!
Stringvergleich if (antwort.equals("ja"))
if (s1.compareTo(s2)<0)
Test auf Gleichheit   Mehr...
Test ob String s1 alphabetisch vor s2 kommt
switch ( ) case { } int e=8;
switch (e) {
  case 1 : Anweisung1;
           Anweisung2;
           break;
  case 2 : ...
           break;
  default : Anweisung1;
            Anweisung2;
}
Abhängig von der Integervariablen hinter switch wird an verschiedenen Stellen in den Anweisungsblock eingestiegen und beim nächsten break wieder ausgestiegen.
default deckt die von der Variablen nicht erfassten Fälle ab.

Mehr...
do { } while  ( ) String a = "";
do {
  System.out.println("ja oder nein?");
  a = Eingabe.next();
} while (!a.equals("ja") && a.equals("nein")); 
 
Block wird wiederholt, solange Bedingung nicht erfüllt ist (mindestens einmal).

Mehr...
while ( ) { } int a = 5, f = 0;
while (a>1) {
  f = f*a;
  a--;
Block wird wiederholt, solange Bedingung nicht erfüllt ist (eventuell gar nicht).

Mehr...
for ( ) { } for (int i=0; i<10; i++) {
  System.out.println(i);
}
Zählschleife. In der runden Klammer wird Laufvariable initialisiert, Bedingung für Ausstieg genannt, Laufvariable inkrementiert (oder dekrementiert)
Mehr...
break;   Schleife wird vorzeitig verlassen
continue;   For-Schleife wird vor Ende des Blocks mit nächstem Wert fortgesetzt
return;   Klasse wird beendet und an die auffordernde Ebene zurückgesprungen.
Zeit nehmen  long start = System.currentTimeMillis();
// Platz für den eigentlichen Vorgang
double dauer = ((double) System.currentTimeMillis()-start) / 1000;
System.out.println("Dauer: "+dauer+ "Sekunden.");
Vor dem eigentlichen Vorgang wird die aktuelle zeit in der Variablen start gespeichert, hinterher wird die Endzeit ermittelt und die Startzeit abgezogen. Das System arbeitet in Millisekunden, deshalb ist eine Division durch 1000 notwendig.