Kleines Java Tutorial

in german language/auf deutsch
Post Reply
User avatar
bad_brain
Site Owner
Site Owner
Posts: 11609
Joined: 06 Apr 2005, 16:00
16
Location: The zone.
Contact:

Kleines Java Tutorial

Post by bad_brain »

Naja,eigentlich weniger n Tutorial als eine Stichwortsammlung :wink:

<b>Java</b>


<b>Eigenschaften:</b>
Sicher durch Verwendung von Bytecode. Bytecode ist kein ausführbarer Code, sondern auf die Java Virtual Machine (JVM) zugeschnittene Anweisungen. Der Sicherheitsaspekt liegt darin dass dieser Bytecode somit nur innerhalb der Java Laufzeitumgebung abläuft.

Java wird interpretiert, es ist möglich Teile zu kompilieren jedoch nicht das ganze Programm.

<b>Applet in HTML-Dokument einbinden:</b>
<body>
<applet code="appletname.class" width=200 height=233>
</applet>


<b>Kommentare:</b>
Einzeilige Kommentare: // am Anfang der Zeile
Mehrzeilige Kommentare: /* am Anfang und */ am Ende des Kommentars

<b>If-Schleife:</b> if (Bedingung) Anweisung;
<b>For-Schleife:</b> for (Initialisierung; Bedingung; Iteration) Anweisung;
Initialisierung legt den Startwert fest,z.B.x=0
Bedingung legt fest wie lange die Schleife läuft,z.B. x==1000 //kann auch negativer Wert sein!
Iteration legt fest was nach jedem Durchgang passiert,z.B. x++ //können auch mehrere sein: x++,z--

<b>Abbruch einer Schleife durch Eingabe:</b>
class Abbruch {
public static void main(String args[])
throws java.io.IOException {
int i;
System.out.println("Geben Sie S zum Beenden ein!");
for (i=0; (char) System.in.read() !='S';i++)
System.out.println("Durchlauf # "+i);
}
}

<b>Endlos-Schleife:</b>
for (;; )
{
//...
}

Variable kann auch innerhalb der Schleife deklariert werden, sie ist dann ausserhalb der Schleife unbekannt:
for (int i=1;i<=5;i++)

<b>Variablen:</b>
char: Zeichen, kann aber auch als Zahl festgelegt werden, da in ASCII jedem Zeichen eine Zahl zugewiesen ist,z.B. 122=z char wird mit einfachem Anführungszeichen initialisiert wenn ein Zeichen und nicht der Zahlenwert für das Zeichen angegeben wird,z.B. char x; x='p'

int: ganze Zahl, jedoch Zählen verschiedene Typen zu int: byte,short,int,long
boolean: true oder false

Variablen können auch erst innerhalb eines Block Initialisiert/Definiert werden, nich zwingendermaßen am Anfang der Klasse. Bei der Definition einer variablen innerhalb eines Blocks ist die Variable aber auch nur innerhalb dieses Blocks gültig!

Mit static wird aus einer Instanzvariablen (gilt nur innerhalb einer Instanz,also innerhalb eines Blocks) eine Klassenvariable welche innerhalb der ganzen Klasse gültig ist.


<b>Escape-Zeichen:</b>
Werden benutzt um spezielle Zeichen (char) wie " oder ' darzustellen, bzw. um Funktionen wie "neue Zeile (<br>) umzusetzen.
z.B.:
char x;
x=`\n`; //neue Zeile
Escape-Zeichen beginnen immer mit \

<b>Operatoren:</b>
x++ gleichbedeutend mit x=x+1
x-- gleichbedeutend mit x=x-1
% ist der sog. Modulo-Operator, er ermittelt den restwert aus einer Division (/),
z.B.:
10/3 =3 (bei int-Variablen werden die Komma-Stellen einfach abgeschnitten)
10%3 =1 <== Restwert der Division 10/3

== gleich
! ungleich
< kleiner
> grösser
>= grösser oder gleich
<= kleiner oder gleich

<b>Logische Operatoren für den Datentyp boolean:</b>
& und
| oder
^ exklusives oder
! nicht! (NOT)

Beispiel:
b1=true;
b2=false;
if (b1 | b2) System.out.println("test"); // zur Ausgabe von "test" müssen entweder b1 ODER b2 "true" sein.

<b>Shortcuts logischer Operatoren:</b>
&& shortciruit und
|| shortcircuit oder
Shortcuts werten IMMER beide Operanten aus, normale logische Operatoren werten nur bei Bedarf den 2. aus, also wenn der erste "false" ist.

<b>Umwandlung von Datentypen:</b>
Umwandlung von kompatiblen Datentypen ohne CAST möglich, z.B. long nach double:
long b;
double c;
b=c;

<b>Umwandlung inkompatibler Datentypen mit CAST:</b>
double x,y;
int i;
i= (int) (x/y); //cast
Umwandlung gilt für das Ergebnis!
oder z.B.
int i;
byte b;
b=(byte) i; //cast

Bei Operationen mit char oder byte würde das Ergebnis automatisch in int umgewandelt werden, deshalb muss das Ergebnis vorher mit cast gewandelt werden wenn das Ergebnis nicht int sein soll:
byte b;
b=(byte) (b*b); // CAST innerhalb eines Ausdrucks


<b>Zeicheneingabe über Tastatur:</b>
System.in.read(); //System.in=Eingabe read=Eingabemedium,in diesem Fall (read) die Tastatur.
Bei Verwendung von System.in.read MUSS immer throws java.io.IOException vorkommen:
class xxx {
public static void main(String args[]) //KEIN "{"
throws java.io.IOException { //JETZT erst "{"


<b>Mehr zur if-Anweisung:</b>
if (Bedingung) {
Anweisungen
}
else {
(Anweisungen)
}

<b>if-else-Leiter:</b>
if (Bedingung) Anweisung; //if (x==1) System.out.println("x ist 1");
else if (Bedingung) Anweisung; //else if (x==2) System.out.println("x ist 2");
else if (Bedingung) Anweisung; //else if (x==3) System.out.println("x ist 3");
else Anweisung; //else System.out.println("x liegt nicht innerhalb 1-3!");

<b>Switch-Anweisung:</b>
Der Switch-Ausdruck muss vom Typ char,int,byte,short sein!
Switch bewirkt im Prinzip das gleiche wie eine if-else-Leiter, es werden also mehrere Alternativen (Verzweigungen) ermöglicht:

class Switchdemo {
public static void main(String args[]) {
int i;
for (i=0;i<10;i++)
switch (i) { // "{" erst hier!
case 0: // Doppelpunkt beachten!
System.out.println("i ist gleich 1");
break; //break sorgt dafür dass nicht jedes Mal ALLE anweisungen durchlaufen,sondern nur bis der richtige Wert "true" ist!
case 1:
System.out.println("i ist gleich 1");
break;
case 2:
System.out.println("i ist gleich 2");
break;
case 3:
System.out.println("i ist gleich 3");
break;
case 4:
System.out.println("i ist gleich 4");
break;
default: // gibt vor was passiert wenn keiner der case-Werte "true" ist
System.out.println("i ist 5 oder grösser als 5!");
}
}
}

<b>Leere Case-Anweisungen:</b>
Dienen dazu um bei mehreren Fällen die Gleiche Anweisung auszuführen:
switch(i) {
case 1:
case 2:
case 3: System.out.println("i ist 1,2 oder 3!");
break;
case 4: System.out.println("i ist gleich 4");
break;

<b>While-Schleife:</b>
while (Bedingung) Anweisung; //Bedingung besteht aus boole´schem Wert (true oder false)

class Whiledemo {
public static void main(String args[]) {
char ch;
ch='a';
while(ch <='z') {
System.out.println(ch);
ch++;
}
}
}


<b>Modifier:</b> //regeln Zugriffsrechte
-keine Angabe: Nur Klassen innerhalb des selben Packages dürfen zugreifen
-public: freier Zugriff
-protected: Zugriff erlaubt für Klassen innerhalb des Packages sowie Erbklassen
-private:Zugriff nur innerhalb der Klasse erlaubt

<b>Aufbau einer Testklasse:</b>
public class Test {
public static void main(String args[]) {
Kreis k= new Kreis(); //Konstruktormethode
k.r=50; //weist der Variablen r den Wert 50 zu, die Variable ist in der Basisklasse definiert
double umfang=k.umfang(); //führt die Methode umfang() für die Variable k aus, Methode ist in der Basisklasse
System.out.println("kreisumfang: "+umfang); //gibt den Wert für die Variable umfang aus


<b>Konstruktormethoden:</b>
Kreis k= new Kreis(); // neues Objekt der Klasse Kreis mit Namen "k"

selbstdefinierte Methode:
Kreis k=new Kreis(50,200,22,33);

nur möglich wenn in der Basisklasse die Variablen so definiert wurden:
public Kreis(int x,int y,int z,double q)
{
this x=x;
this y=y;
this z=z;
this q=q;
}


<b>Methoden:</b>
return-typ Name(Parameter) { //returntyp kann jeder Datentyp sein, void=keine Rückgabe
rumpf
}

void reichweite() {
System.out.println("Die Reichweite beträgt "+(tankinhalt/verbrauch)*100+ "km")
}


<b>Abstrakte Methoden/Klassen:</b>
Haben im Gegensatz zu "normalen" Methoden keinen Rumpf:
public abstract class Test {

public abstract double flaeche();

public abstract class Figur extends Object { //abstrakte Klasse
protected int x,y;
public void setX(int x) {
this.x=x;
}
public int getX() {
return x;
}
public void setY(int y) {
this.y=y;
}
public int getY {
return y;
}
public abstract double flaeche(); //abstrakte Methode
}

In der Subklasse welche nun auf die abstrakte Basisklasse zugreift muss nun die abstrakte Methode definiert werden:
public class Kreis extends Figur {
private double r;
public static final double PI=3.14159; //Konstante
public Kreis (int x,int y, double r) {
this.x=x;
this.y=y;
this.r=r;
}
public double flaeche() { //abstrakte Basismethode wird nun definiert
return r*r*PI;
}


<b>API</b>
Application Programming Interface
Stellt dem Programmierer vorgefertigte Software-Bausteine zur Verfügung (im Falle von Java in Form von Klassen)
z.B.: java.awt.Graphics paket.unterpaket.Klasse //Klasse wie immer GROSS geschrieben!

<b>Importieren von Klassen:</b>
java.util.Date date=new java.util.Date();
oder
import java.util.Date
public class Test {
........
........
Date date=new Date();

Import von Klassen welche innerhalb des Pakets "lang" liegen nicht nötig, da dies die wichtigsten Standardklassen sind.
Import von kompletten Package durch Verwendung der Wildcard *: import java.awt.*

<b>Paket zur Erstellung von GUIs:</b> java.awt awt= abstract windowing toolkit
<b>Paket für Interaktion:</b> (was passiert wenn ich z.B. auf Knopf einer GUI klicke): java.awt.Event (1.Javaversion)

Enjoy... :wink:

Ameradi
On the way to fame!
On the way to fame!
Posts: 46
Joined: 20 May 2005, 16:00
16
Location: Germany
Contact:

Post by Ameradi »

Bad_brain ...

danke sehr fuers Tutorial
kannst du uns vielleicht deutsche Webseiten postieren ! ( Fuer Anfaenger )

Ach ja , und auch fuer XML , wenn es moeglich waere !

User avatar
bad_brain
Site Owner
Site Owner
Posts: 11609
Joined: 06 Apr 2005, 16:00
16
Location: The zone.
Contact:

Post by bad_brain »

hey Uhdie.... :D
also auf die schnelle erstmal 2 links:
http://www.selfjava.de/

http://de.selfhtml.org/xml/
sind beides sehr gute sites für einsteiger, werde demnächst beide gezippt in die downloads stellen...

hier im download-bereich gibts in den textfiles auch ein echt gutes Java ebook auf deutsch namens "Java ist eine Insel", kann ich echt empfehlen... :wink:

Post Reply