Java Syntaxsammlung

Java Syntaxsammlung Java Syntaxsammlung

mv.fh.duesseldorf.de
von mv.fh.duesseldorf.de Mehr von diesem Publisher
06.10.2013 Aufrufe

Java Syntaxsammlung Nachfolgende Syntaxbeispiele ersetzen keine syntaktisch vollständige Sprachbeschreibung. Meist werden Kodierempfehlungen formuliert. Bei allen Variablennamen, Klassennamen, Methodennamen gilt : Groß- und Kleinschreibung beachten !

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!