Legen Sie ein Projektverzeichnis an, zum Beispiel: 'D:\MeinWorkspace\MeineErstenVersuche'.
Speichern Sie in diesem Verzeichnis die folgende Datei 'Polymorphie.java':
import java.util.Vector; abstract class Figur { abstract double getFlaeche(); } class Rechteck extends Figur { private double a, b; public Rechteck( double a, double b ) { this.a = a; this.b = b; } public double getFlaeche() { return a * b; } } class Kreis extends Figur { private double r; public Kreis( double r ) { this.r = r; } public double getFlaeche() { return Math.PI * r * r; } } public class Polymorphie { public static void main( String[] args ) { double flaeche = 0; // Instanziiere Figur-Objekte: Rechteck re1 = new Rechteck( 3, 4 ); Figur re2 = new Rechteck( 5, 6 ); Kreis kr1 = new Kreis( 7 ); Figur kr2 = new Kreis( 8 ); Vector vec = new Vector(); // Fuege beliebig viele beliebige Figuren hinzu: vec.add( re1 ); vec.add( re2 ); vec.add( kr1 ); vec.add( kr2 ); // Berechne die Summe der Flaechen aller Figuren: for( int i=0; i<vec.size(); i++ ) { Figur f = (Figur)(vec.get( i )); flaeche += f.getFlaeche(); } System.out.println( "Gesamtflaeche ist: " + flaeche ); } }
Öffnen Sie ein Kommandozeilenfenster (unter Windows XP: 'Start' | 'Alle Programme' | 'Zubehör' | 'Eingabeaufforderung') und geben Sie folgende Befehle ein (unter Windows XP können Sie den Kommandotext im Webbrowser mit gedrückter Maustaste markieren, mit 'Strg+C' zwischenspeichern und irgendwo im Kommandozeilenfenster mit rechter Maustaste, 'Einfügen' und 'Return' ausführen):
cd \MeinWorkspace\MeineErstenVersuche
javac Polymorphie.java
java Polymorphie
Doku zu 'Vector' und 'Math.PI' finden Sie unter
http://docs.oracle.com/javase/7/docs/api/java/util/Vector.html und
http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#PI.
Legen Sie ein Projektverzeichnis an, zum Beispiel: 'D:\MeinWorkspace\MeineErstenVersuche'.
Speichern Sie in diesem Verzeichnis die folgende Datei 'TextEinAusgabe1.java':
import java.io.*; public class TextEinAusgabe1 { public static void main( String[] args ) { System.out.println( "Text eingeben und mit Return abschliessen:" ); try { BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) ); String s = in.readLine(); System.out.println( "Der eingelesene Text lautet: " + s ); } catch( IOException ex ) { System.out.println( ex.getMessage() ); } } }
Öffnen Sie ein Kommandozeilenfenster (unter Windows XP: 'Start' | 'Alle Programme' | 'Zubehör' | 'Eingabeaufforderung') und geben Sie folgende Befehle ein (unter Windows XP können Sie den Kommandotext im Webbrowser mit gedrückter Maustaste markieren, mit 'Strg+C' zwischenspeichern und irgendwo im Kommandozeilenfenster mit rechter Maustaste, 'Einfügen' und 'Return' ausführen):
cd \MeinWorkspace\MeineErstenVersuche
javac TextEinAusgabe1.java
java TextEinAusgabe1
Doku zu 'BufferedReader' und 'InputStreamReader' finden Sie unter
java-io.htm,
http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html und
http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'TextEinAusgabe2.java':
import java.awt.*; import java.awt.event.*; public class TextEinAusgabe2 extends Frame { TextField eingabe; Label ausgabe; public static void main( String[] args ) { TextEinAusgabe2 meinFenster = new TextEinAusgabe2( "Text-Ein-/Ausgabe" ); meinFenster.setSize( 400, 200 ); meinFenster.setVisible( true ); } public TextEinAusgabe2( String fensterTitel ) { super( fensterTitel ); Label hinweis = new Label( "Text eingeben und mit Return abschliessen" ); eingabe = new TextField(); ausgabe = new Label(); add( BorderLayout.NORTH, eingabe ); add( BorderLayout.CENTER, hinweis ); add( BorderLayout.SOUTH, ausgabe ); eingabe.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ev ) { meineMethode(); } } ); addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent ev ) { dispose(); System.exit( 0 ); } } ); } void meineMethode() { ausgabe.setText( "Der eingelesene Text lautet: " + eingabe.getText() ); } }
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac TextEinAusgabe2.java
java TextEinAusgabe2
Sehen Sie sich die API-Javadoc an zu 'Frame', 'Label', 'TextField' und 'BorderLayout'.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'TextEinAusgabe3.java':
import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class TextEinAusgabe3 extends Applet { TextField eingabe; Label ausgabe; public void init() { Label hinweis = new Label( "Oben Text eingeben und mit Return abschliessen" ); eingabe = new TextField( " " ); ausgabe = new Label(); setLayout( new BorderLayout() ); add( BorderLayout.NORTH, eingabe ); add( BorderLayout.CENTER, hinweis ); add( BorderLayout.SOUTH, ausgabe ); eingabe.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent ev ) { meineMethode(); } } ); } void meineMethode() { ausgabe.setText( "Der eingelesene Text lautet: " + eingabe.getText() ); } }
Speichern Sie im gleichen Verzeichnis die folgende Datei 'TextEinAusgabe3.html':
<html><body> <applet code="TextEinAusgabe3.class" width=350 height=80></applet> </body></html>
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac TextEinAusgabe3.java
appletviewer TextEinAusgabe3.html
start TextEinAusgabe3.html
Falls das letzte Kommando nicht funktioniert, ist im Webbrowser entweder kein Java oder eine zu alte Java-Version registriert. Weiteres hierzu siehe java-plugin.htm und http://www.oracle.com/technetwork/java/index-jsp-141438.html.
Bitte beachten Sie, dass im vorigen Beispiel 'TextEinAusgabe2' von 'Frame' abgeleitet wurde, während diese Klasse 'TextEinAusgabe3' von 'Applet' abgeleitet wird.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'FirstHello.java':
import java.applet.Applet; import java.awt.*; public class FirstHello extends Applet { Font f1 = new Font( "Helvetica", Font.BOLD, 11 ); Font f2 = new Font( "Helvetica", Font.BOLD, 48 ); Color c1 = new Color( 255, 0, 0 ); Color c2 = new Color( 0, 0, 255 ); String s; public void init() { // Parameter aus HTML-Datei übernehmen: s = getParameter( "Zeichenkette" ); } public void paint( Graphics g ) { g.setColor( c1 ); if( null == s || 0 >= s.length() ) { g.setFont( f1 ); g.drawString( "Keine 'Zeichenkette' gefunden: " + "wahrscheinlich wurde Applet ohne HTML-Datei gestartet.", 50, 65 ); } else { g.setFont( f2 ); g.drawString( s, 50, 65 ); } g.setColor( c2 ); g.drawOval( 20, 0, 205, 95 ); } }
Speichern Sie im gleichen Verzeichnis die folgende Datei 'FirstHello.html':
<html><body> <h3>Ausgabe eines Java-Applets:</h3> <applet code="FirstHello.class" width=250 height=100> <param name="Zeichenkette" value="Hallo !"> <br>Bitte Java-Support einschalten !<br> </applet> </body></html>
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac FirstHello.java
appletviewer FirstHello.html
start FirstHello.html
Falls das letzte Kommando nicht funktioniert, ist im Webbrowser entweder kein Java oder eine zu alte Java-Version registriert. Weiteres hierzu siehe java-plugin.htm und http://www.oracle.com/technetwork/java/index-jsp-141438.html.
Sehen Sie sich die API-Javadoc an zu 'Applet', 'Font', 'Color', 'Graphics'.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'SystemProperties.java':
public class SystemProperties { public static void main( String[] args ) { System.out.println( System.getProperties().toString().replace( ',', '\n' ) .replace( '{', ' ' ) .replace( '}', ' ' ) ); } }
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac SystemProperties.java
java SystemProperties
start http://www.torsten-horn.de/techdocs/ShowSystemPropertiesApplet.htm
Sehen Sie sich die API-Javadoc an zu 'System' und 'String'.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'LesenSchreibenTextdatei.java':
import java.io.*; import java.text.*; import java.util.*; public class LesenSchreibenTextdatei { public static void main( String[] args ) { final String[] KEYS = { "user.name", "user.language", "user.home", "os.name", "java.version" }; Vector vec = new Vector(); String s; // Lies Textzeilen aus der Datei in einen Vector: try { BufferedReader in = new BufferedReader( new InputStreamReader( new FileInputStream( "MeineTextDatei.txt" ) ) ); while( null != (s = in.readLine()) ) { vec.add( s ); } } catch( FileNotFoundException ex ) { } catch( Exception ex ) { System.out.println( ex ); } finally { if( in != null ) in.close(); } // Falls es keine Datei gab, erzeuge Einträge im Vector: if( 0 >= vec.size() ) { for( int i=0; i<KEYS.length; i++ ) { vec.add( KEYS[i] + " = " + System.getProperty( KEYS[i] ) ); } } // Füge weiteren Eintrag hinzu: vec.add( "Zeitstempel = " + new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss,SSS" ).format( new Date() ) ); // Schreibe alle Elemente als Textzeilen in die Datei: try { BufferedWriter out = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( "MeineTextDatei.txt" ) ) ); for( int i=0; i<vec.size(); i++ ) { s = vec.get( i ).toString(); System.out.println( s ); out.write( s, 0, s.length() ); out.newLine(); } } catch( IOException ex ) { System.out.println( ex ); } finally { if( out != null ) out.close(); } } }
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac LesenSchreibenTextdatei.java
java LesenSchreibenTextdatei
java LesenSchreibenTextdatei
java LesenSchreibenTextdatei
type MeineTextDatei.txt
Rufen Sie 'java LesenSchreibenTextdatei' mehrmals auf, um zu sehen, dass der alte Zeitstempel gelesen wurde und der neue hinzugefügt wird.
Sehen Sie sich die API-Javadoc an zu 'Vector', 'BufferedReader', 'InputStreamReader', 'FileInputStream', 'BufferedWriter' und 'OutputStreamWriter' und 'FileOutputStream'.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' die folgende Datei 'SerializeVector.java':
import java.io.*; import java.util.Vector; public class SerializeVector { public static void main( String[] args ) { // Read my objects from a file into a Vector: Vector vecMyObjs = null; try { ObjectInputStream in = new ObjectInputStream( new FileInputStream( "MyObjs.dat" ) ); vecMyObjs = (Vector)in.readObject(); } catch( FileNotFoundException ex ) { } catch( Exception ex ) { System.out.println( ex ); } finally { if( in != null ) in.close(); } if( vecMyObjs == null ) vecMyObjs = new Vector(); // Do some intelligent stuff with vecMyObjs ... vecMyObjs.addElement( new String( "Hello" + vecMyObjs.size() ) ); System.out.println( vecMyObjs ); // Write my objects into a file: try { ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream( "MyObjs.dat" ) ); out.writeObject( vecMyObjs ); out.flush(); } catch( IOException ex ) { System.out.println( ex ); } finally { if( out != null ) out.close(); } } }
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac SerializeVector.java
java SerializeVector
java SerializeVector
java SerializeVector
type MyObjs.dat
Rufen Sie 'java SerializeVector' mehrmals auf, um zu sehen, dass das vorherige 'Vector'-Objekt korrekt gespeichert und erweitert wurde.
Das Kommando 'type MyObjs.dat' macht nicht wirklich Sinn, aber zeigt, dass dies eine Binärdatei ist.
Sehen Sie sich die API-Javadoc an zu 'Vector', 'ObjectInputStream', 'FileInputStream', 'ObjectOutputStream' und 'FileOutputStream'.
Erzeugen Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche' das Package-Unterverzeichnis 'mypckg'.
Speichern Sie im Verzeichnis 'D:\MeinWorkspace\MeineErstenVersuche\mypckg' die folgende Datei 'RunClassForName.java':
package mypckg; public class RunClassForName { public static void main( String[] args ) throws Exception { if( 1 > args.length ) { System.out.println( "Klassenname (z.B. 'mypckg.MyClass1') als Parameter benoetigt." ); System.exit( 1 ); } Object obj = instantiateClassForName( args[0] ); if( obj instanceof Runnable ) ((Runnable)obj).run(); else System.out.println( obj ); } public static Object instantiateClassForName( String className ) throws Exception { Class c = Class.forName( className ); if( null == c ) throw new Exception( "Error: Unable to access class '" + className + "'." ); Object o = c.newInstance(); if( null == o ) throw new Exception( "Error: Unable to create instance of class '" + className + "'." ); return o; } } class MyClass1 implements Runnable { public void run() { System.out.println( "Ausfuehrung von MyClass1.run()" ); } } class MyClass2 implements Runnable { public void run() { System.out.println( "Ausfuehrung von MyClass2.run()" ); } }
Geben Sie folgende Befehle im Kommandozeilenfenster ein:
cd \MeinWorkspace\MeineErstenVersuche
javac mypckg/RunClassForName.java
java mypckg.RunClassForName
java mypckg.RunClassForName mypckg.MyClass1
java mypckg.RunClassForName mypckg.MyClass2
Sehen Sie sich die API-Javadoc an zu 'Class.forName()', 'Class.newInstance()' und 'Runnable'.
Ein ausführlicheres Beispiel inklusive Suche im Classpath finden Sie unter ClassFinder.java.