summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100041.html
blob: c0d8c87913a4d0c0c5a4a315d7e45bf7c06b99c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
<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,k100040.html;106,k100040.html;107,k100042.html;108,k100046.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="k100040.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100042.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100046.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 6 - Anweisungen
</table>
<hr>


<!-- Section -->
<a name="sectlevel2id006001"></a>
<h2>6.1 Elementare Anweisungen </h2>
<hr>
<ul>
<li><a href="k100041.html#sectlevel2id006001">6.1 Elementare Anweisungen</a>
<ul>
<li><a href="k100041.html#sectlevel3id006001001">6.1.1 Die leere Anweisung</a>
<ul>
<li><a href="k100041.html#sectlevel4id006001001001">Syntax</a>
<li><a href="k100041.html#sectlevel4id006001001002">Bedeutung</a>
</ul>
<li><a href="k100041.html#sectlevel3id006001002">6.1.2 Der Block</a>
<ul>
<li><a href="k100041.html#sectlevel4id006001002001">Syntax</a>
<li><a href="k100041.html#sectlevel4id006001002002">Bedeutung</a>
</ul>
<li><a href="k100041.html#sectlevel3id006001003">6.1.3 Variablendeklarationen </a>
<ul>
<li><a href="k100041.html#sectlevel4id006001003001">Syntax</a>
<li><a href="k100041.html#sectlevel4id006001003002">Bedeutung</a>
</ul>
<li><a href="k100041.html#sectlevel3id006001004">6.1.4 Ausdrucksanweisungen</a>
<ul>
<li><a href="k100041.html#sectlevel4id006001004001">Syntax</a>
<li><a href="k100041.html#sectlevel4id006001004002">Bedeutung</a>
</ul>
</ul>
</ul>
<hr>


<!-- Section -->
<a name="sectlevel3id006001001"></a>
<h3>6.1.1 Die <a name="ixa100382">leere Anweisung</a> </h3>


<!-- Section -->
<a name="sectlevel4id006001001001"></a>
<h4>Syntax </h4>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
;
</pre>
</font>
</td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id006001001002"></a>
<h4>Bedeutung </h4>

<p>
Die einfachste Anweisung in Java ist die leere Anweisung. Sie besteht
nur aus dem Semikolon und hat keinerlei Effekt auf das laufende Programm.
Eine leere Anweisung kann da verwendet werden, wo syntaktisch eine
Anweisung erforderlich ist, aber von der Programmlogik her <i>nichts</i>
zu tun ist. 

<!-- Section -->

<a name="sectlevel3id006001002"></a>
<h3>6.1.2 Der <a name="ixa100383">Block</a> </h3>


<!-- Section -->
<a name="sectlevel4id006001002001"></a>
<h4>Syntax </h4>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
{
  Anweisung1;
  Anweisung2;
  ...
}
</pre>
</font>
</td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id006001002002"></a>
<h4>Bedeutung </h4>

<p>
Ein Block ist eine Zusammenfassung von Anweisungen, die nacheinander
ausgef&uuml;hrt werden. Alle im Block zusammengefassten Anweisungen
gelten in ihrer Gesamtheit als <i>eine einzelne</i> Anweisung und
d&uuml;rfen &uuml;berall da verwendet werden, wo syntaktisch eine
einzelne elementare Anweisung erlaubt w&auml;re. Ein Block darf auch
Anweisungen zur Deklaration von lokalen Variablen haben. Diese sind
dann nur innerhalb des Blocks g&uuml;ltig und sichtbar. 

<!-- Section -->

<a name="sectlevel3id006001003"></a>
<h3>6.1.3 Variablendeklarationen<a name="ixa100384"></a> <a name="ixa100385"></a>
</h3>


<!-- Section -->
<a name="sectlevel4id006001003001"></a>
<h4>Syntax </h4>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
Typname VariablenName;
</pre>
</font>
</td>
</tr>
</table>

<p>
oder 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
Typname VariablenName = InitialerWert;
</pre>
</font>
</td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id006001003002"></a>
<h4>Bedeutung </h4>

<p>
Die Deklaration einer <a name="ixa100386">lokalen Variable</a> gilt
in Java als ausf&uuml;hrbare Anweisung. Sie darf daher &uuml;berall
dort erfolgen, wo eine Anweisung verwendet werden darf. Die Sichtbarkeit
einer lokalen Variable erstreckt sich von der Deklaration bis zum
Ende des umschlie&szlig;enden Blocks. 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

<p>
Lokale Variablen d&uuml;rfen sich nicht gegenseitig verdecken. Es
ist also nicht erlaubt, eine bereits deklarierte Variable <font color="#000077"><tt>x</tt></font>
in einem tiefer geschachtelten Block erneut zu deklarieren. Das Verdecken
von Klassen- oder Instanzvariablen dagegen ist zul&auml;ssig und wird
besonders h&auml;ufig in Konstruktoren bei der Initialisierung von
Instanzvariablen verwendet:</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<a name="listingid006001"></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="#0000AA">class</font> Punkt
<font color="#555555">002 </font>{
<font color="#555555">003 </font>  <font color="#006699">int</font> x;
<font color="#555555">004 </font>  <font color="#006699">int</font> y;
<font color="#555555">005 </font>
<font color="#555555">006 </font>  Punkt(<font color="#006699">int</font> x, <font color="#006699">int</font> y)
<font color="#555555">007 </font>  {
<font color="#555555">008 </font>    <font color="#006699">this</font>.x = x;
<font color="#555555">009 </font>    <font color="#006699">this</font>.y = y;
<font color="#555555">010 </font>  }
<font color="#555555">011 </font>}</pre>
</font>
</td>
</tr>
</table>
<i>
Listing 6.1: Verdecken von Klassen- oder Instanzvariablen</i></p>

<p>
Hier wird eine Klasse <font color="#000077"><tt>Punkt</tt></font>
definiert, die zwei Instanzvariablen <font color="#000077"><tt>x</tt></font>
und <font color="#000077"><tt>y</tt></font> enth&auml;lt. Der Konstruktor
initialisiert die Instanzvariablen mit den gleichnamigen Parametern.
Um nun nicht f&uuml;r die formalen Parameter neue Namen erfinden zu
m&uuml;ssen, lassen sich durch lokale Variablen verdeckte Instanzvariablen
dadurch wieder aufdecken, dass sie mit dem <a href="index_t.html#ixb100273"><font color=#000080><tt>this</tt></font></a>-Pointer
qualifiziert werden. 

<p>
Das vorliegende Beispiel erscheint zum jetzigen Zeitpunkt sicherlich
schwer verst&auml;ndlich, denn bisher wurden weder Klassen noch Methoden
noch Konstruktoren eingef&uuml;hrt. Nach Lekt&uuml;re von <a href="k100046.html#kapiteloop1">Kapitel 7</a>,
das sich mit den objektorientierten Eigenschaften von Java besch&auml;ftigt,
wird es verst&auml;ndlicher sein. Einpr&auml;gen sollte man sich diesen
Stil aber jetzt schon, denn er wird in Java h&auml;ufig verwendet.


<!-- Section -->
<a name="sectlevel3id006001004"></a>
<h3>6.1.4 <a name="ixa100387">Ausdrucksanweisungen</a> </h3>


<!-- Section -->
<a name="sectlevel4id006001004001"></a>
<h4>Syntax </h4>
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100% bgcolor="#EEFFCC">
<tr>
<td valign=top width=100%>
<font color="#660066">
<pre>
Ausdruck;
</pre>
</font>
</td>
</tr>
</table>


<!-- Section -->
<a name="sectlevel4id006001004002"></a>
<h4>Bedeutung </h4>

<p>
Ausdrucksanweisungen dienen dazu, Ausdr&uuml;cke in einem Anweisungskontext
auszuf&uuml;hren. Sie werden erzeugt, indem an den Ausdruck ein Semikolon
angeh&auml;ngt wird. Da der R&uuml;ckgabewert des Ausdrucks dabei
ignoriert wird, macht eine Ausdrucksanweisung nur dann Sinn, wenn
der Ausdruck <a name="ixa100388">Nebeneffekte</a> hat. Tats&auml;chlich
ist es in Java so, dass innerhalb einer Ausdrucksanweisung nur ganz
bestimmte Ausdr&uuml;cke auftauchen d&uuml;rfen: 
<ul>
<li>Zuweisung
<li>Inkrement und Dekrement
<li>Methodenaufruf
<li>Instanzerzeugung
</ul>

<p>
W&auml;hrend es in C beispielsweise m&ouml;glich ist, den Ausdruck
<font color="#000077"><tt>2+4</tt></font> in eine Ausdrucksanweisung
<font color="#000077"><tt>2+4;</tt></font> zu verpacken, ist dies
in Java nicht erlaubt. Eine solche Anweisung ist aber auch wenig sinnvoll,
und es war daher nur vern&uuml;nftig, dies in Java nicht zuzulassen.
<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="k100040.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100042.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100046.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>