summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100115.html
diff options
context:
space:
mode:
authorSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
committerSven Eisenhauer <sven@sven-eisenhauer.net>2023-11-10 15:11:48 +0100
commit33613a85afc4b1481367fbe92a17ee59c240250b (patch)
tree670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100115.html
downloadStudium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz
Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2
add new repoHEADmaster
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100115.html')
-rw-r--r--Master/Reference Architectures and Patterns/hjp5/html/k100115.html406
1 files changed, 406 insertions, 0 deletions
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100115.html b/Master/Reference Architectures and Patterns/hjp5/html/k100115.html
new file mode 100644
index 0000000..a527abb
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100115.html
@@ -0,0 +1,406 @@
+<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100114.html;106,k100114.html;107,k100116.html;108,k100120.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100114.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100114.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100116.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">Kapitel 17 - Utility-Klassen II
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectionregex"></a>
+<h2>17.1 <a name="ixa101142">Regul&auml;re Ausdr&uuml;cke</a></h2>
+<hr>
+<ul>
+<li><a href="k100115.html#sectionregex">17.1 Regul&auml;re Ausdr&uuml;cke</a>
+<ul>
+<li><a href="k100115.html#sectlevel3id017001001">17.1.1 Die Klasse Pattern</a>
+<li><a href="k100115.html#sectlevel3id017001002">17.1.2 Die Klasse Matcher</a>
+<li><a href="k100115.html#sectlevel3id017001003">17.1.3 Vergleich einer Zeichenkette mit einem regul&auml;ren Ausdruck</a>
+<li><a href="k100115.html#sectlevel3id017001004">17.1.4 Teilen einer Zeichenkette mit einem regul&auml;ren Ausdruck</a>
+</ul>
+</ul>
+<hr>
+
+<p>
+Seit der Version 1.4 enth&auml;lt das JDK auch Klassen zur Verwendung
+von regul&auml;ren Ausdr&uuml;cken. Dabei handelt es sich um Muster,
+die Mengen von Zeichenketten beschreiben und stellvertretend f&uuml;r
+diese stehen.
+
+<p>
+Wenn Sie schon einmal die Datei-Suchfunktionalit&auml;t Ihres Betriebssystems
+verwendet haben, haben Sie wahrscheinlich - ohne es zu bemerken -
+einen regul&auml;ren Ausdruck verwendet. Um beispielsweise alle Dateien
+in einem Ordner aufzulisten, suchen Sie typischerweise mit dem Muster
+<font color="#000077"><tt>*.*</tt></font>. Dabei steht der Stern stellvertretend
+f&uuml;r eine beliebige Zeichenkette und schon haben Sie einen (wenn
+auch recht einfachen) regul&auml;ren Ausdruck verwendet, um nicht
+jeden Dateinamen einzeln hinschreiben zu m&uuml;ssen.
+
+<!-- Section -->
+
+<a name="sectlevel3id017001001"></a>
+<h3>17.1.1 Die Klasse <a name="ixa101143">Pattern</a></h3>
+
+<p>
+Um einen regul&auml;ren Ausdruck zu erzeugen, h&auml;lt das JDK die
+Klasse <font color="#000077"><tt>Pattern</tt></font> im Package <font color="#000077"><tt>java.util.regex</tt></font>
+bereit. So ist <font color="#000077"><tt>a*b</tt></font> beispielsweise
+ein <font color="#000077"><tt>Pattern</tt></font> zur Beschreibung
+der Zeichenketten <font color="#000077"><tt>b</tt></font>, <font color="#000077"><tt>ab</tt></font>,
+<font color="#000077"><tt>aab</tt></font> und so weiter. Wobei der
+Stern - wie allgemein &uuml;blich - f&uuml;r eine beliebige Menge
+von Zeichen steht. Der obige Ausdruck lie&szlig;t sich also: &#187;Eine
+beliebige Anzahl von kleinen <font color="#000077"><tt>a</tt></font>s,
+gefolgt von einem <font color="#000077"><tt>b</tt></font>&#171;.
+
+<p>
+Die folgende Tabelle zeigt einige h&auml;ufig verwendete Platzhalter.
+Die M&ouml;glichkeiten regul&auml;rer Ausdr&uuml;cke in Java sind
+dabei so vielf&auml;ltig, dass Sie allein ein ganzes Kapitel f&uuml;llen
+w&uuml;rden. Eine vollst&auml;ndige Liste findet man z.B. in den JavaDocs
+zur Klasse <font color="#000077"><tt>Pattern</tt></font>. <a name="tableid017001"></a>
+
+<p>
+<table cols=2 border width=66%>
+
+<tr>
+<td valign=top align=left width=20%><b>Symbol</b></td>
+<td valign=top align=left width=80%><b>Bedeutung</b></td></tr>
+<tr>
+<td valign=top align=left>.</td>
+<td valign=top align=left>Ein beliebiges einzelnes Zeichen</td></tr>
+<tr>
+<td valign=top align=left>*</td>
+<td valign=top align=left>Eine beliebige Menge von Zeichen</td></tr>
+<tr>
+<td valign=top align=left>\d</td>
+<td valign=top align=left>Eine Zahl zwischen 0 und 9</td></tr>
+<tr>
+<td valign=top align=left>\D</td>
+<td valign=top align=left>Ein Zeichen das keine Zahl darstellt.</td></tr>
+<tr>
+<td valign=top align=left>\s</td>
+<td valign=top align=left>Ein beliebiges Leerzeichen (Whitespace)</td></tr>
+<tr>
+<td valign=top align=left>\S</td>
+<td valign=top align=left>Ein Zeichen, das kein Leerzeichen ist</td></tr>
+</table>
+<p><i>
+Tabelle 17.1: H&auml;ufige Elemente f&uuml;r regul&auml;re Ausdr&uuml;cke
+in Java</i></p>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=1></td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+Achten Sie bei der Programmierung von regul&auml;ren Ausdr&uuml;cken
+darauf, dass das Baskslash-Zeichen (<font color="#000077"><tt>\</tt></font>)
+in Strings reserviert ist und durch einen doppelten Backslash (<font color="#000077"><tt>\\</tt></font>)
+kodiert werden muss.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
+<tr>
+<td><font color="#FFFFFF">&nbsp;Warnung&nbsp;</font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+
+
+<!-- Section -->
+<a name="sectlevel3id017001002"></a>
+<h3>17.1.2 Die Klasse <a name="ixa101144">Matcher</a></h3>
+
+<p>
+W&auml;hrend die Klasse <font color="#000077"><tt>Pattern</tt></font>
+einen regul&auml;ren Ausdruck repr&auml;sentiert, k&ouml;nnen Sie
+mit Hilfe der Methode <a href="index_m.html#ixb100873"><font color=#000080><tt>matcher</tt></font></a>
+ein <font color="#000077"><tt>Matcher</tt></font>-Objekt erzeugen,
+das verwendet werden kann, um eine beliebige Zeichenkette auf den
+regul&auml;ren Ausdruck zu testen.
+
+<p>
+Die Klassen f&uuml;r Pattern und Matcher sind dabei getrennt worden,
+da erstere auf der einen Seite relativ komplexe Objekte sind, auf
+der anderen allerdings auch threadsafe programmiert sind und in nebenl&auml;ufigen
+Programmen von verschiedenen Threads gemeinsam genutzt werden k&ouml;nnen.
+<font color="#000077"><tt>Matcher</tt></font> auf der anderen Seite
+sind leichtgewichtige Objekte, die nur von einem Thread verwendet
+werden sollten. In einem Satz: Sie k&ouml;nnen jeden ben&ouml;tigten
+Ausdruck durch ein global zu verwendendes <font color="#000077"><tt>Pattern</tt></font>
+beschreiben und von diesem bei Bedarf beliebig viele <font color="#000077"><tt>Matcher</tt></font>-Objekte
+erzeugen lassen.
+
+<!-- Section -->
+
+<a name="sectlevel3id017001003"></a>
+<h3>17.1.3 Vergleich einer Zeichenkette mit einem regul&auml;ren Ausdruck</h3>
+
+<p>
+Neben der M&ouml;glichkeit, Zeichenketten untereinander auf (partielle)
+Gleichheit zu &uuml;berpr&uuml;fen, wie es in <a href="k100072.html#vergleichzeichenketten">Abschnitt 11.2.4</a>
+beschrieben wird, kann mit Hilfe von regul&auml;ren Ausdr&uuml;cken
+auch &uuml;berpr&uuml;ft werden, ob eine Zeichenkette von einem Ausdruck
+beschrieben wird. Hierzu erzeugt man zun&auml;chst ein Pattern-Objekt,
+das den Ausdruck repr&auml;sentiert und anschlie&szlig;end ein <font color="#000077"><tt>Matcher</tt></font>-Objekt,
+das zum Testen verwendet werden kann. Das folgende Listing verdeutlicht
+dies:
+<a name="listingid017001"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing1701.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> java.util.regex.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing1701
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">// Erzeugen eines Pattern-Objektes f&uuml;r den Ausdruck a*b</font>
+<font color="#555555">010 </font> Pattern p = Pattern.compile(<font color="#0000FF">"a*b"</font>);
+<font color="#555555">011 </font>
+<font color="#555555">012 </font> <font color="#00AA00">// Erzeugen eines Matcher-Objektes f&uuml;r die Zeichenkette</font>
+<font color="#555555">013 </font> Matcher m = p.matcher(<font color="#0000FF">"aaaaab"</font>);
+<font color="#555555">014 </font>
+<font color="#555555">015 </font> <font color="#00AA00">// Test, ob die Zeichenkette vom Ausdruck beschrieben wird</font>
+<font color="#555555">016 </font> <font color="#006699">boolean</font> b = m.matches();
+<font color="#555555">017 </font> }
+<font color="#555555">018 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing1701.java"><font color="#000055" size=-1>Listing1701.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 17.1: Regul&auml;re Ausdr&uuml;cke</i></p>
+
+<p>
+Auff&auml;llig an diesem Listing ist, dass weder <font color="#000077"><tt>Pattern</tt></font>
+noch <font color="#000077"><tt>Matcher</tt></font> &uuml;ber einen
+Konstruktor erzeugt werden. Stattdessen verwenden wir die statische
+Methode <font color="#000077"><tt>compile</tt></font>, die ein Pattern-
+Objekt zur&uuml;ck gibt und die Methode <font color="#000077"><tt>matcher</tt></font>,
+um einen <font color="#000077"><tt>Matcher</tt></font> zu erzeugen.
+Der Grund liegt m&ouml;glicherweise darin, dass das JDK die Pattern
+auf diese Weise intern cachen kann und auch bei der &#187;zweiten&#171;
+Kompilierung das gleiche Objekt zur&uuml;ckgibt - aber verlassen Sie
+sich nicht darauf.
+
+<p>
+Wie bereits weiter oben beschrieben lassen sich einmal erzeugte Pattern
+f&uuml;r viele Matcher wiederverwenden und helfen so, wertvolle Ressourcen
+zu sparen. Um nur eine einzige Zeichenkette auf ein Pattern zu testen,
+kann man aber auch die folgende Kurzform verwenden:
+<a name="listingid017002"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing1702.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> java.util.regex.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing1702
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">// Testet die Zeichenkette auf das Pattern</font>
+<font color="#555555">010 </font> <font color="#006699">boolean</font> b = Pattern.matches(<font color="#0000FF">"a*b"</font>, <font color="#0000FF">"aaaaab"</font>);
+<font color="#555555">011 </font> }
+<font color="#555555">012 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing1702.java"><font color="#000055" size=-1>Listing1702.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 17.2: Kurzer Zeichenketten-Vergleich mit regul&auml;ren Ausdr&uuml;cken</i></p>
+
+<p>
+Bei dieser Kurzversion wird das Pattern intern kompiliert, anschlie&szlig;end
+ein passender Matcher erzeugt und schlie&szlig;lich nur das Resultat
+zur&uuml;ckgegeben. Dieser &#187;Einzeiler&#171; ist zwar markant,
+allerdings l&auml;sst sich das Pattern nicht wiederverwenden.
+
+<p>
+Und es geht sogar noch k&uuml;rzer und ohne explizite Verwendung der
+Klassen im Package <font color="#000077"><tt>java.util.regex</tt></font>,
+wie es das folgende Listing demonstriert. Seit dem JDK 5 stellt die
+Klasse <font color="#000077"><tt>String</tt></font> n&auml;mlich die
+Methode <font color="#000077"><tt>matches</tt></font> zur Verf&uuml;gung,
+hinter der sich nichts anderes als oben beschriebene Kurzform verbirgt.
+<a name="listingid017003"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing1703.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing1703
+<font color="#555555">004 </font>{
+<font color="#555555">005 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">006 </font> {
+<font color="#555555">007 </font> <font color="#00AA00">// Testet die Zeichenkette auf das Pattern</font>
+<font color="#555555">008 </font> <font color="#006699">boolean</font> b = <font color="#0000FF">"aaaaab"</font>.matches(<font color="#0000FF">"a*b"</font>);
+<font color="#555555">009 </font> }
+<font color="#555555">010 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing1703.java"><font color="#000055" size=-1>Listing1703.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 17.3: Strings und regul&auml;re Ausdr&uuml;cke</i></p>
+
+
+<!-- Section -->
+<a name="sectlevel3id017001004"></a>
+<h3>17.1.4 Teilen einer Zeichenkette mit einem regul&auml;ren Ausdruck</h3>
+
+<p>
+Neben dem Test auf &Auml;quivalenz erlauben es regul&auml;re Ausdr&uuml;cke
+auch, Teile einer Zeichenkette zu ersetzen oder lange Zeichenketten
+in mehrere Teile aufzuspalten (engl. <i>Splitting</i>). F&uuml;r letzteres
+besitzt die Klasse <font color="#000077"><tt>Pattern</tt></font> die
+Methoden <a href="index_s.html#ixb100540"><font color=#000080><tt>split</tt></font></a>
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
+<tr>
+<td valign=top width=100%>
+<font color="#660066">
+<pre>
+public String[] split(CharSequence input)
+
+public String[] split(CharSequence input, int limit)
+</pre>
+</font>
+</td>
+<td valign=top>
+<a href="../jdkdocs/api/java/util/regex/Pattern.html" onClick="this.href=getApiDoc('java.util.regex.Pattern')"><font color="#660066" size=-1>java.util.regex.Pattern</font></a></td>
+</tr>
+</table>
+
+<p>
+Mit Hilfe des zweiten Parameters kann dabei angegeben werden, in wieviele
+Teile die Zeichenkette maximal aufgeteilt werden soll. Er ist eine
+Obergrenze f&uuml;r die Gr&ouml;&szlig;e des zur&uuml;ckgegebenen
+Arrays. Wird als Limit eine negative Zahl angeben, wird die Zeichenkette
+beliebig oft durch das Pattern geteilt. Beide Methoden verhalten sich
+dann identisch.
+
+<p>
+Das folgende Listing zeigt das Splitting der Zeichenkette, die uns
+schon im Kapitel &uuml;ber Strings begegnet ist:
+<a name="listingid017004"></a>
+
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#DDDDDD">
+<tr>
+<td valign=top>
+<font color="#000055">
+<pre>
+<font color="#555555">001 </font><font color="#00AA00">/* Listing1704.java */</font>
+<font color="#555555">002 </font>
+<font color="#555555">003 </font><font color="#0000AA">import</font> java.util.regex.*;
+<font color="#555555">004 </font>
+<font color="#555555">005 </font><font color="#0000AA">public</font> <font color="#0000AA">class</font> Listing1704
+<font color="#555555">006 </font>{
+<font color="#555555">007 </font> <font color="#0000AA">public</font> <font color="#0000AA">static</font> <font color="#006699">void</font> main(String[] args)
+<font color="#555555">008 </font> {
+<font color="#555555">009 </font> <font color="#00AA00">// Der zu verwendende Testsatz</font>
+<font color="#555555">010 </font> String satz = <font color="#0000FF">"Dies ist nur ein Test"</font>;
+<font color="#555555">011 </font>
+<font color="#555555">012 </font> <font color="#00AA00">// Jedes Whitespace-Zeichen soll zur </font>
+<font color="#555555">013 </font> <font color="#00AA00">// Trennung verwendet werden</font>
+<font color="#555555">014 </font> Pattern p = Pattern.compile(<font color="#0000FF">"\\s"</font>);
+<font color="#555555">015 </font>
+<font color="#555555">016 </font> <font color="#00AA00">// Verwendung der Methode split</font>
+<font color="#555555">017 </font> String[] result = p.split(satz);
+<font color="#555555">018 </font> <font color="#0000AA">for</font> (<font color="#006699">int</font> x=0; x&lt;result.length; x++) {
+<font color="#555555">019 </font> System.out.println(result[x]);
+<font color="#555555">020 </font> }
+<font color="#555555">021 </font> }
+<font color="#555555">022 </font>}</pre>
+</font>
+</td>
+<td valign=top align=right>
+<a href="../examples/Listing1704.java"><font color="#000055" size=-1>Listing1704.java</font></a></td>
+</tr>
+</table>
+<i>
+Listing 17.4: Zerlegen von Zeichenketten</i></p>
+
+<p>
+Soll das Pattern nicht wiederverwendet werden, kann man auch in diesem
+Fall auf eine &auml;quivalente Methode der Klasse <font color="#000077"><tt>String</tt></font>
+zur&uuml;ckgreifen, wie bereits in <a href="k100072.html#stringzerlegen">Abschnitt 11.2.7</a>
+beschrieben.
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100114.html">&nbsp;&lt;&lt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100114.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100116.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html">&nbsp;&gt;&gt;&nbsp;</a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
+<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>