Java Exzerpt

Kurze Informationen zum Thema

Eine Quellcode-Datei wird erstellt. Der javac-Compiler kompiliert diesen Quellcode in den kompilierten Bytecode. Der wird dann in einer virtuellen Java-Maschine ausgeführt.

Begriffe und Erläuterung

Arrays sind gut geeignet für Listen von Dingen. Damit ist ein schneller und wahlfreier Zugriff möglich. Jedes Element in einem Array ist eine Variable, entweder eine der elementaren Typen oder eine Referenzvariable.

Arrays sind immer Objekte.
Dabei spielt es keine Rolle, ob sie elementare Typen oder Objektreferenzen festhalten. Arrays können ein Arrayobjekt haben. Das Array ist nie ein elementarer Typ. Das Array kann Elemente haben, die elementare Typen sind.

Ein 'byte' kann in ein int-Array gesteckt werden, weil ein 'byte' immer in einen Becher mit int-Größe passt.
Nicht in ein int-Array passt 'double', weil etwas verschüttet werden könnte.

Es werden drei Dateien erstellt. Die werden idealerweise in einem Ordner gespeichert.

public class Ratespiel {
		// Ratespiel drei Instanzen fuer die drei Spieler-Objekte.
		Spieler s1;
		Spieler s2;
		Spieler s3;

		public void starteSpiel() {
			// Erstellt drei Spieler-Objekte und
			// weist sie den Spieler-Instanzvariablen zu.
			s1 = new Spieler();
			s2 = new Spieler();
			s3 = new Spieler();
			
			// Deklariert drei Variablen, welche die Tipps
			// festhalten, welche die Spieler abgeben.
			int tipp1 = 0;
			int tipp2 = 0;
			int tipp3 = 0;
			
			// Deklariert drei Variablen, die, abhaengig von der
			// Antwort des Spielers, 'true' oder 'false' enthalten.
			boolean s1hatRecht = false;
			boolean s2hatRecht = false;
			boolean s3hatRecht = false;
			
			// Findet eine 'Zielzahl', welche die Spieler erraten muessen.
			int zielZahl = (int) (Math.random() * 10);
			System.out.println("Ich denke mit einen Zahl zwischen 0 und 9 aus ...");
			
			while(true) {
				System.out.println("Die zu ratende Zahl ist " + zielZahl);
			
				// Ruft die raten()-Methode des Spielers auf.
				// Wird in anderer Datei 'Spieler' weiter unten definiert.
				s1.raten();
				s2.raten();
				s3.raten();
			
			// Ruft den Tipp jedes Spielers ab (das Ergebnis der
			// Ausfuehrung ihrer raten()-Methode),
			// in dem auf die zahl-Variable jedes Spielers
			// zugegriffen wird.
			tipp1 = s1.zahl;
			System.out.println("Spieler eins tippte " + tipp1);
			
			tipp2 = s2.zahl;
			System.out.println("Spieler zwei tippte " + tipp2);
			
			tipp3 = s3.zahl;
			System.out.println("Spieler drei tippte " + tipp3);
			
			// Prueft die Tipps aller Spieler, um zu sehen,
			// ob einer der Zielzahl entspricht; wenn ein 
			// Spieler recht hat, wird die Variable dieses
			// Spielers auf 'true' gesetzt (daran denken, dass die
			// per default auf 'false' gesetzt sind.
			if (tipp1 == zielZahl) {
				s1hatRecht = true;
			}
			if (tipp2 == zielZahl) {
				s2hatRecht = true;
			}
			if (tipp3 == zielZahl) {
				s3hatRecht = true;
			}
			
			// Wenn Spieler eins ODER Spieler zwei ODER Spieler
			// drei recht hat... (der ||-Operator bedeutet ODER)
			if (s1hatRecht || s2hatRecht || s3hatRecht) {
				
				System.out.println("Wir haben einen Gewinner!");
				System.out.println("Spieler eins hat richtig geraten? "+ s1hatRecht);
				System.out.println("Spieler zwei hat richtig geraten? "+ s2hatRecht);
				System.out.println("Spieler drei hat richtig geraten? "+ s3hatRecht);
				System.out.println("Das Spiel ist aus.");
				break; //Das Spiel ist zuende, also aus der Schreife ausbechen.
				
			} else {
				// Wir muessen weitermachen, weil keiner der Speiler richtig geraten hat.
				// Anderenfalls wird die Schleife weiter ausgefuehrt, und die Spieler 
				// werden um einen neuen Tipp gebeten.
				System.out.println("Die Spieler muessen es erneut versuchen.");
			} // if/else-Ende
		} // Schleifenende
	} // Methodenende
} // Klassenende
// Weitere Datei Spieler
// das Ratespiel ausfuehren

public class Spieler {
	int zahl = 0; // hier kommt der Tipp rein
	
	public void raten() {
		zahl = (int) (Math.random() * 10);
		System.out.println("Ich tippe auf die Zahl: " + zahl);
	}
}
// Weitere Datei Spielstarter

public class SpielStarter {
	public static void main (String[] args) {
		Ratespiel spiel = new Ratespiel();
		spiel.starteSpiel();
	}
}

Quelle: A.a.o., 39f.

< (kleiner als)
> (größer als)
== (gleich) zwei Gleichheitszeichen

Dateiendeung: .class

Das Programm ausführen bedeutet für einen Windows-Rechner, in der Eingabeauffoderung zum Beispiel 'java MeineErsteAnwendung' einzugeben und die Eingabetaste zu drücken.
Die Endung .class wird nicht mit angegeben.

Sobald Java ein Objekt erzeugt, existiert es in einem Speicherbereich, der als 'Heap' bezeichnet wird. Alle erzeugten Objekte befinden sich in diesem Bereich.

Beim Erzeugen des Objektes alloziert Java den benötigten Speicherplatz. Wird der Speicherplatz nicht mehr benötigt, dann wird das Objekt zur 'Garbage Collecion' freigegeben. Sollte der Speicherplatz aufgebraucht sein, wird der Gabrage Collector ausgeführt. Unerreichbare Objekte werden entfernt.

Jede Java-Anwendung hat mindestens eine Klasse und mindestens eine 'main-Methode' (eine main-Methode pro Anwendung). Ganz gleich, wie umfangreich das Programm ist bzw. wie viele Klassen es hat. es muss immer eine 'main-Methode' geben.

In Java kommt alles in eine Klasse. Die Quellcode-Datei mit der Erweiterung '.java' wird eingegeben, dann kompiliert. Ausgeführt wird immer die Klasse.

Beispiel: EingabeauffoRderung zum Beispiel 'java MeineErsteAnwendung'

Eine Objektreferenz ist eine 'Fernsteuerung', die für die Steuerung unterschiedlicher Objekte programmiert werden kann. Sie kann zum Beispiel einen Hund referenzieren und nach einigen Minuten einen anderen Hund. Es muss nur ein Hund sein.

Wenn sie als 'final' markiert ist, kann sie nicht einen anderen Hund referenzieren, sie kann nicht auf etwas anderes umprogrammiert werden.

Eine Referenzierung auf den Wert 'null' ist möglich. Dann ist die Programmierung gelöscht und niemand kommt mehr an das Objekt heran, auf das referenziert wurde.

Der Punktoperator teilt einer Referenzvariablen etwas mit:
Nimm das Ding vor dem Punktoperator,
um mir das Ding nach dem Punkt zu besorgen.

Beispiel: meinHund.bellen();
Nimm das Objekt, das die Variable meinHund referenziert, um die Methode bellen() aufzurufen.
Stellen Sie sich vor, Sie würden einen Knopf auf der Fernbedienung drücken.

Dateiendung: .java

Inhalt:
Klassendefinition, die Klasse muss in einem Paar geschweifter Klammern geschrieben werden.

Methoden
In der Klasse stehen eine oder mehrere Methoden. Die Methoden werden in geschweiften Klammern geschrieben.

Anweisungen
In den geschweiften Klammern innerhalb der Methode stehen die Anweisungen. Jede Anweisung muss mit einem Semikolon enden.

Jede Java-Anwendung muss mindestens ein Klasse und mindestens eine Main-Methode enthalten. Es muss nicht für jede Klasse eine Main-Methode vorhanden sein.

Speichern, kompilieren, ausführen

Kompilieren Beispiel
Bei einem Windows-Rechner in der Eingabeaufforderung eingeben:
'javac MeineErsteAnwendung.class'

Es gibt drei Standardschleifenkonstukte:
while, do-while, for

Die Bedingung wird zu einem boolschen Wert ausgegeben, der entweder 'true# (wahr) oder 'false' (falsch) ist.

Es gibt zwei Arten von Variablen:
'elementare (primitive) Typen' und
'Objektreverenzen'.

Elementare Typen enthalten Ganzzahlen, Boolesche Werte, Fließkommazahlen.

Objektreferenzen enthalten Objekte.

Man muss zwei Deklarationsregeln befolgen:
Variablen müssen einen Typ Vhaben.
Variablen müssen einen Namen haben.
Beispiel: Typ 'int', Name 'count'.

Vorstellung: Die Variable ist ein Becher, der etwas enthält. Es gibt vier elementare Typen in unterschiedlichen Größen für ganze Zahlen:
von links nach rechts kleiner werdend:
'long', 'int', 'short', 'byte'.

Jeder Becher hat einen Namen, das ist ein 'int' mit einem Zahlenwert.
Von links nach rechts aufsteigend:
byte - 8 | short - 16 | int - 32 | long - 64 |

Für Fließkommazahlen sind es diese hier
float - 32 | double - 64
Bei Fließkommazahlen muss ein 'f' hinter der Zahl stehen, Beispiel: 'float f = 32.5f;' Java denkt, dass alles mit einem Dezimaltrenner ein 'double' ist, wenn nicht das 'f' nachgestellt wird.

Beispiele
int größe = 32; deklariert einen int namens 'größe' und weist ihm den Wert '32' zu.
char initial = 'j'; deklariert einen char namens 'initial' und weist ihm den Wert 'j' zu.
double d = 456.7; deklariert einen double namens 'd' und weist ihm den Wert '456,7 zu.
boolean is Verrueckt; deklariert einen boolean namens 'isVerrueckt' (keine Zuweisung).
isVerrueckt = true; deklariert einen boolean namens 'isVerrueckt' und weist ihm den Wert 'true' zu.
int y = x + 456; deklariert einen int namens ' y' und weist ihm einen Wert zu, der die Summe des aktuellen Wertes x plus 456 ist.

Zum Namen der Variablen

Merksatz

boolean char byte short int long float double

Beim charmanten Bären sind Ihre leckeren Früchte dahin.

Quelle
Sierra, Kathy; Bates, Bert, Java von Kopf bis Fuß, Heidelberg, 3. korrigierter Nachdruck 2008