Java Syntaxsammlung
Java Syntaxsammlung Java Syntaxsammlung
Java Syntaxsammlung Nachfolgende Syntaxbeispiele ersetzen keine syntaktisch vollständige Sprachbeschreibung. Meist werden Kodierempfehlungen formuliert. Bei allen Variablennamen, Klassennamen, Methodennamen gilt : Groß- und Kleinschreibung beachten !
- Seite 2 und 3: Syntax Beispiel Bemerkung unäre Op
- Seite 4 und 5: Syntax Beispiel Bemerkung Verzweigu
- Seite 6 und 7: Syntax Beispiel Bemerkung Modifikat
- Seite 8 und 9: Syntax Beispiel Bemerkung Methoden
- Seite 10 und 11: Syntax Beispiel Bemerkung } interfa
- Seite 12 und 13: Syntax Beispiel Bemerkung //Es wird
<strong>Java</strong> <strong>Syntaxsammlung</strong><br />
Nachfolgende Syntaxbeispiele ersetzen keine syntaktisch vollständige Sprachbeschreibung. Meist werden Kodierempfehlungen formuliert.<br />
Bei allen Variablennamen, Klassennamen, Methodennamen gilt : Groß- und Kleinschreibung beachten !
Syntax Beispiel Bemerkung<br />
unäre Operatoren ++ -- int i = 0;<br />
i++; //jetzt steht 1 in i<br />
arithmetische Operatoren<br />
* / % + -<br />
Vergleichsoperatoren<br />
< kleiner als<br />
größer als<br />
>= größer gleich<br />
== identisch<br />
!= ungleich<br />
logische Operatoren<br />
& logisches und<br />
| logisches oder<br />
^ logisches xor<br />
! logisches nicht<br />
Basisdatentypen<br />
Name Länge in byte Werteintervall<br />
//interessant nur % modulo<br />
int i = 12;<br />
i = i % 7; //5 in i<br />
//in logischen Ausdrücken<br />
int i = 8;<br />
int j = -3;<br />
boolean b = (i >= j);<br />
//in b steht jetzt true<br />
if(i
Syntax Beispiel Bemerkung<br />
Implizite Typumwandlung und cast<br />
Folgende Datentypen werden implizit<br />
(automatisch) ineinander umgewandelt:<br />
char ⇾ int<br />
byte ⇾ short<br />
short ⇾ int<br />
int ⇾ long<br />
long ⇾ float<br />
float ⇾ double<br />
Eine Typumwandlung kann man mit cast<br />
erzwingen.<br />
Der cast hat die Syntax:<br />
(neuerdatentyp)<br />
Felder<br />
feld deklarieren<br />
feldelementtyp [] name;<br />
feld instanzieren<br />
name = new feldelementtyp[laenge];<br />
feld deklarieren und instanzieren<br />
feldelementtyp [] name =<br />
new feldelementtyp[laenge];<br />
oder<br />
feldelementtyp[] name = {Werteliste};<br />
feld Index<br />
feldname[index]<br />
char vc = 'z';<br />
float f;<br />
f = vc; //in f steht 122.0<br />
int i = 127;<br />
byte b;<br />
b = (byte)i; //die 127 passt so<br />
//gerade eben in b rein<br />
int[] x;<br />
double[][] matrix;<br />
int[] x;<br />
x = new int[50];<br />
byte[] b = new byte[10];<br />
int[] x = {1,2,7,-3};<br />
int[] x = {1,2,7,-3};<br />
j = x[0]; //in j steht 1<br />
j = x[2]; //in j steht 7<br />
Es wird implizit (automatisch) immer von "wenig<br />
Speicherplatz" nach "Mehr Speicherplatz"<br />
gewandelt..<br />
Beim erzwungenen Typumwandeln mittels cast<br />
können Datenverluste und Verfälschungen<br />
vorkommen:<br />
int i = (int)47.11; // 47 in i<br />
x ist 1-dim Feld von unbekannt vielen int-Werten<br />
matrix ist 2-dim Feld von unbekannt vielen double-<br />
Werten<br />
x ist 1-dim Feld mit 50 int-Werten<br />
b ist 1-dim Feld mit 10 byte-Werten<br />
x ist 1-dim Feld mit 4 int-Werten<br />
Der Feldindex beginnt immer bei 0
Syntax Beispiel Bemerkung<br />
Verzweigungen<br />
if(logischer Ausdruck){<br />
//wenn true<br />
}<br />
if(logischer Ausdruck){<br />
//wenn true<br />
}else{<br />
//wenn false<br />
}<br />
switch(variable) {<br />
case konstante_1:<br />
//anweisungen<br />
break;<br />
...<br />
case konstante_n:<br />
//anweisungen<br />
break;<br />
}<br />
default:<br />
//anweisungen<br />
break;<br />
if(j>0 & i0 | k
Syntax Beispiel Bemerkung<br />
Schleifen<br />
for(Start; Endebedingung; Schritt){<br />
//anweisungen<br />
}<br />
while(logischer Ausdruck){<br />
//anweisungen<br />
}<br />
do{<br />
//anweisungen<br />
}while(logischer Ausdruck);<br />
String<br />
String s;<br />
int i = 4711;<br />
double d = 47.11;<br />
s = "textabc "+i+"/"+d;<br />
System.out.println(s);<br />
textabc 4711/47.11<br />
int i,j=0;<br />
for(i=1; i
Syntax Beispiel Bemerkung<br />
Modifikatoren für Klassen, Klassenvariablen, Klassenmethoden und Konstruktoren<br />
leer nur im eigenen packet sichtbar<br />
Klasse Klassenmethode Klassenvariable Konstruktoren<br />
in allen Klassen des eigenen packet<br />
sichtbar<br />
in allen Klassen des eigenen<br />
packet sichtbar<br />
in allen Klassen des eigenen<br />
packet sichtbar<br />
public in allen packet's sichbar in allen Klassen sichtbar in allen Klassen sichtbar in allen Klassen sichtbar<br />
private<br />
protected<br />
static<br />
nur in geschachtelten Klassen erlaubt,<br />
sonst verboten. Ineinander<br />
geschachtelte Klassendefinitionen<br />
werden aber i.d.R. nicht verwendet<br />
nur in geschachtelten Klassen erlaubt,<br />
sonst verboten. Ineinander<br />
geschachtelte Klassendefinitionen<br />
werden aber i.d.R. nicht verwendet<br />
nur in geschachtelten Klassen erlaubt,<br />
sonst verboten. Ineinander<br />
geschachtelte Klassendefinitionen<br />
werden aber i.d.R. nicht verwendet<br />
final Klasse kann nicht vererben<br />
nur innerhalb der eigenen Klasse<br />
sichtbar<br />
innerhalb der eigenen Klasse sichtbar,<br />
innerhalb des eigenen packet sichtbar,<br />
in allen abgeleiteten Klassen sichtbar<br />
Methode gehört nur zur Klasse, nicht zu<br />
einer Klasseninstanz (mit new gebildet)<br />
Methode ist in abgeleiteter Klasse nicht<br />
überschreibbar<br />
nur innerhalb der eigenen<br />
Klasse sichtbar<br />
innerhalb der eigenen Klasse<br />
sichtbar, innerhalb des eigenen<br />
packet sichtbar, in allen<br />
abgeleiteten Klassen sichtbar<br />
Variable gehört nur zur Klasse,<br />
nicht zu einer Klasseninstanz<br />
(mit new gebildet) verboten<br />
nicht überschreibbar (also eine<br />
Konstante) verboten<br />
abstract Abstrakte Klasse : keine Instanz erlaubt Methode hat keinen { } Block verboten verboten<br />
Klassen<br />
modifikatoren class name{<br />
// Sinnvoller Inhalt einer Klasse:<br />
// 1. alle Klassenvariablen (auch<br />
// Attribute genannt)<br />
// 2. alle Konstruktoren<br />
// 3. alle Methoden<br />
}<br />
public class auto{<br />
private double ps; //Klassenvariable<br />
public auto(){ //Standardkonstruktor<br />
this.ps = 0;<br />
}<br />
public double in_kw(){// eine Methode<br />
return this.ps * 0.735499;<br />
}}<br />
nur innerhalb der eigenen<br />
Klasse sichtbar<br />
innerhalb der eigenen Klasse<br />
sichtbar, innerhalb des eigenen<br />
packet sichtbar, in allen<br />
abgeleiteten Klassen sichtbar<br />
Als Modifikatoren sind leer, public und final in<br />
allen Kombinationen erlaubt.
Syntax Beispiel Bemerkung<br />
Klassenvariablen (auch Attribute genannt)<br />
modifikatoren typ name; class beispiel{<br />
private int a;<br />
public short s;<br />
protected char p;<br />
Konstruktoren<br />
modifikatoren<br />
klassenname(parameterliste){<br />
}<br />
}<br />
final int d = 12;<br />
static long l;<br />
class beispiel{<br />
}<br />
//Standardkonstruktor<br />
//mit leerer Parameterliste<br />
public beispiel(){<br />
//anweisungen<br />
}<br />
//noch ein Konstruktor<br />
public beispiel(int i, double x){<br />
//anweisungen, dabei stehen<br />
//die Variablen i und x zur<br />
//Verfügung<br />
}<br />
Kombinierbarkeit der Modifikatoren<br />
final mit static,public,private,protected<br />
static mit final,public,private,protected<br />
Klassenvariablen werden innerhalb der Klasse mit<br />
this.variablenname aufgerufen<br />
Klassenvariablen (auch Klassenattribute) können<br />
auch Felder und Klasseninstanzen sein.<br />
Ein Konstruktor darf niemals einen Rückgabetyp<br />
haben.<br />
Ein Konstruktor muss immer den Namen der<br />
Klasse haben.<br />
Konstruktoren innerhalb einer Klasse unterscheiden<br />
sich durch ihre unterschiedliche<br />
parameterliste.<br />
Eine parameterliste ist entweder leer (kein<br />
Parameter) oder ist<br />
typ1 variablenname1, typ2 variablenname2, ...
Syntax Beispiel Bemerkung<br />
Methoden<br />
modifikatoren rückgabetyp methodenname (parameterliste){<br />
}<br />
class beispiel{<br />
}<br />
//...Klassenvariablen und Konstruktoren<br />
//Methoden der Klasse<br />
public int getintegerwert(){<br />
// anweisungen<br />
return k; //k ist int<br />
}<br />
private void macheetwas(int k, float x, boolean b){<br />
//die Variablen k, x, b stehen zur Verfügung<br />
//anweisungen<br />
}<br />
Vererben<br />
modifikatoren class subklassenname extends superklassenname{<br />
//...<br />
}<br />
public class kind extends eltern{<br />
//anweisungen wie in class<br />
}<br />
Methoden müssen einen Rückgabetyp haben.<br />
Wenn kein Wert mit return zurückgegeben<br />
werden soll, muß als rückgabetyp void<br />
gesetzt werden.<br />
Methoden dürfen auch mehrere return<br />
Anweisungen haben<br />
Sichtbarkeit von Elementen der Elternklasse<br />
public überall<br />
protected Elternklasse und<br />
Kindklasse<br />
private Elternklasse
Syntax Beispiel Bemerkung<br />
Vererben, Zugriff auf super-Klasse<br />
//Zugriff auf Standardkonstruktor der super Klasse<br />
super();<br />
//Zugriff auf Konstruktor der super Klasse mit Parametern<br />
super(werteliste);<br />
//Zugriff auf Klassenvariable der super (Eltern)klasse<br />
super.variable_aus_eltern;<br />
//Zugriff auf Methode der super (Eltern)klasse<br />
super.methode_aus_eltern(parameterliste);<br />
abstract<br />
abstract methoden<br />
abstract sichtbarkeitsmodifikator rückgabetyp methodenname(parameterliste);<br />
abstract public void elternmethode1(int var1, double var2);<br />
abstract protected boolean elternmethode2();<br />
abstract Klassen<br />
abstract sichtbarkeitsmodifikator class Klassenname{<br />
//Klassendefinition<br />
}<br />
abstract class Dim3Koerper {<br />
//Konstruktoren DUERFEN NICHT abstract sein<br />
public Dim3Koerper() {<br />
}<br />
//Abstrakte Methoden<br />
protected abstract double volumen();<br />
//protected double abstract Achtung: Diese Reihenfolge der<br />
Es gelten hier die Sichtbarkeitsregeln aus<br />
Vererben<br />
super(4711, "noch ein String!");<br />
1. Als sichtbarkeitsmodifikatoren<br />
sind leer, public, protected erlaubt;<br />
2. private ist verboten!<br />
3. static und final sind verboten !<br />
4. Es gibt keinen Anweisungsblock { }<br />
sondern statt dessen ein Semikolon ;<br />
1. eine Klasse ist abstract, wenn<br />
mindestens eine Methode der Klasse<br />
abstract ist<br />
2. eine abstract Klasse kann nicht<br />
instanziert werden , d.h. kein Objekt<br />
erzeugen<br />
3. Beim Vererben muss eine abgeleitete<br />
Subklasse alle abstract Methoden der<br />
super Klasse überschreiben (Inhalt<br />
definieren) oder sie ist selber wieder<br />
abstract
Syntax Beispiel Bemerkung<br />
}<br />
interface<br />
interface definieren<br />
//modifikatoren GEHT NICHT!<br />
abstract protected double oberflaeche();//das geht<br />
// abstrakte Methoden MIT Parametern sind erlaubt<br />
abstract protected double testmitparametern(int i, double b);<br />
modifikator interface Interfacename<br />
{<br />
modifikatoren Typ Variable=Wert;<br />
abstract modifikator Typ<br />
methodenname();<br />
}<br />
interface wird von anderen Interfaces ableiten<br />
modifikator interface Interfacename<br />
extends SuperInterfaceliste<br />
{<br />
// Anweisungen für Interface<br />
}<br />
class wird um interfaces erweitert<br />
modifikator class klassenname<br />
implements Interfaceliste<br />
{<br />
// Anweisungen für Klasse<br />
}<br />
interface vektoraddition {<br />
public Vektor plus(Vektor v);<br />
public Vektor minus(Vektor v);<br />
}<br />
4. Als sichtbarkeitsmod sind erlaubt leer und<br />
public.<br />
public class Vektor implements vektoraddition, vektormultiplikation<br />
{<br />
//...<br />
}
Syntax Beispiel Bemerkung<br />
try catch<br />
try{<br />
//anweisungen, bei denen etwas<br />
//falsch laufen kann<br />
}<br />
catch(exceptiontyp variable){<br />
//anweisungen, falls Fehler<br />
// exceptiontyp vorliegt<br />
}<br />
int j = 0;<br />
try{<br />
i = i/j;<br />
}<br />
catch(ArithmeticException e){<br />
System.out.println("Fehler");<br />
}<br />
try{<br />
//anweisungen zum Öffnen, Schreiben, Lesen und Schliessen einer Datei<br />
}<br />
catch(FileNotFoundException e){<br />
//etwas Sinnvolles tun<br />
}<br />
catch(IOException e){<br />
//etwas Sinnvolles tun<br />
}<br />
Datei I/O FileReader / FileWriter<br />
Einem try-Block können mehrere<br />
catch-Blöcke mit unterschiedlichen Exceptions<br />
folgen.<br />
Einem try-Block muß mindestens ein catch-<br />
Block folgen.<br />
In den try-Block kommen die Anweisungen, die<br />
zum Programmabbruch führen können, in die<br />
catch-Blöcke kommen die Anweisungen, die<br />
dann ausgeführt werden.<br />
Dateizugriffe müssen in einem try-catch<br />
Konstrukt eingebettet sein.<br />
FileWriter fw = new FileWriter(new File("testdatei2.txt")); Eine Datei mit dem angegebenen Namen wird in<br />
jedem Fall neu angelegt.<br />
Eine bestehende Datei mit dem gleichen Namen<br />
wird überschrieben<br />
FileWriter fw = new FileWriter(new File("testdatei2.txt"), true); Eine Datei mit dem angegebenen Namen wird ineu<br />
angelegt, falls sie noch nicht existiert.<br />
An eine schon bestehende Datei mit dem gleichen<br />
Namen wird Text angehängt.<br />
//Eine Textzeile / einen String in eine Datei schreiben<br />
String zeile1 = "Das ist die eine Zeile in der Datei";<br />
fw.write(zeile1+"\n");<br />
Schreiben eines Strings in eine (vorher geöffnete<br />
Datei).<br />
Soll ein Zeilenvorschub nach dem String<br />
ausgeführt werden, muß hier ein “\n“ an den String<br />
angehängt werden.(Bei Windows "\n\r")
Syntax Beispiel Bemerkung<br />
//Es wird eine Zeichenkette aus einer Datei gelesen<br />
try{<br />
File f = new File("testdatei2.txt");//Objekt File erzeugen<br />
FileReader fr = new FileReader(f); //FileReader für File öffnet Datei<br />
puffer = new char[(int)f.length()]; //char[] Feld für Dateiinhalt<br />
int anzahlgelesen = fr.read(puffer);//Zeichenkette in puffer<br />
}<br />
catch(FileNotFoundException e){}//etwas Sinnvolles tun<br />
catch(IOException e){} //etwas Sinnvolles tun<br />
//Eine (vorher geöffnete) Datei schliessen<br />
fr.close();<br />
Datei I/O Bytestreams / Binärdaten<br />
Binärdaten schreiben<br />
double d = 234.56E+124; //zwei Basisdatentypen<br />
long l = 23456711; //als Beispiel<br />
try{<br />
File v = new File("testdateibinaer1"); //Dateizugriff<br />
einrichten<br />
FileOutputStream fos = new FileOutputStream(v); //Datei öffnen<br />
DataOutputStream dos = new DataOutputStream(fos);//DataStream öffnen<br />
dos.writeDouble(d); //einen double-Wert schreiben (8byte)<br />
dos.writeLong(l); //einen long-Wert schreiben (8 byte)<br />
dos.close(); //die Ressourcen freigeben<br />
fos.close();<br />
}<br />
catch(FileNotFoundException e){//etwas Sinnvolles tun}<br />
catch(IOException e){//etwas Sinnvolles tun}<br />
FileReader öffnet eine existierende Datei. Gibts die<br />
Datei nicht, wird eine Exception<br />
FileNotFoundException ausgelöst.<br />
Jede geöffnete Datei muß (nach Gebrauch) wieder<br />
geschlossen werden.<br />
Klasse DataOutputStream stellt Methoden zur<br />
Binärdatenausgabe für alle Basisdatentypen zur<br />
Verfügung
Syntax Beispiel Bemerkung<br />
Binärdaten lesen<br />
try{<br />
File v = new File("testdateibinaer1"); //Dateizugriff einrichten<br />
FileInputStream fis = new FileInputStream(v); //Datei öffnen<br />
DataInputStream dis = new DataInputStream(fis); //DataStream öffnen<br />
double d_input = dis.readDouble(); // mit Methoden für jeden Basisdatentyp<br />
long l_input = dis.readLong(); // aus DataInputStream binäre Daten lesen<br />
dis.close(); //die Ressourcen freigeben<br />
fis.close();<br />
}<br />
catch(FileNotFoundException e){//etwas Sinnvolles tun}<br />
catch(IOException e){//etwas Sinnvolles tun}<br />
Konsolen I/O<br />
von der Konsole (Tastatur) lesen<br />
BufferedReader tastatur = new BufferedReader(new InputStreamReader(System.in));<br />
System.out.print("Bitte Text eingeben : ");<br />
String zeile = "";<br />
try {<br />
zeile = tastatur.readLine();<br />
} catch (IOException e) {<br />
// was tun<br />
}<br />
auf den Bildschirm schreiben<br />
System.out.println("Folgendes wurde eingetippt : " + zeile);