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
|
<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,k100030.html;106,k100033.html;107,k100035.html;108,k100040.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"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100030.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100033.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100035.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">Kapitel 5 - Ausdrücke
</table>
<hr>
<!-- Section -->
<a name="sectlevel2id005004"></a>
<h2>5.4 <a name="ixa100348">Logische Operatoren</a><a name="ixa100349"></a></h2>
<hr>
<ul>
<li><a href="k100034.html#sectlevel2id005004">5.4 Logische Operatoren</a>
</ul>
<hr>
<p>
Logische Operatoren dienen dazu, <i>boolesche</i> Werte miteinander
zu verknüpfen. Im Gegensatz zu den relationalen Operatoren, die
durch Vergleiche erst Wahrheitswerte produzieren, werden logische
Operatoren zur Weiterverarbeitung von Wahrheitswerten verwendet.
<p>
Java stellt die Grundoperationen <a name="ixa100350"><i>UND</i></a>,
<a name="ixa100351"><i>ODER</i></a> und <a name="ixa100352"><i>NICHT</i></a>
zur Verfügung und bietet darüber hinaus die Möglichkeit,
das Auswertungsverhalten der Operanden zu beeinflussen. Anders als
die meisten anderen Programmiersprachen, stellt Java die UND- und
ODER-Verknüpfungen in zwei verschiedenen Varianten zur Verfügung,
nämlich mit <a name="ixa100353"><i>Short-Circuit-Evaluation</i></a>
oder ohne.
<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>
Bei der Short-Circuit-Evaluation eines logischen Ausdrucks wird ein
weiter rechts stehender Teilausdruck nur dann ausgewertet, wenn er
für das Ergebnis des Gesamtausdrucks noch von Bedeutung ist.
Falls in dem Ausdruck <font color="#000077"><tt>A && B</tt></font>
also bereits <font color="#000077"><tt>A</tt></font> falsch ist, wird
zwangsläufig immer auch <font color="#000077"><tt>A &&
B</tt></font> falsch sein, unabhängig von dem Resultat von <font color="#000077"><tt>B</tt></font>.
Bei der Short-Circuit-Evaluation wird in diesem Fall <font color="#000077"><tt>B</tt></font>
gar nicht mehr ausgewertet. Analoges gilt bei der Anwendung des ODER-Operators.</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"> Hinweis </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<p>
Der in Java ebenfalls verfügbare <a name="ixa100354"><i>EXKLUSIV-ODER-Operator</i></a>
muss natürlich immer in der langen Variante ausgewertet werden.
<a href="k100034.html#logischeoperatoren">Tabelle 5.3</a> gibt eine
Übersicht der logischen Operatoren. <a name="logischeoperatoren"></a>
<p>
<table cols=3 border width=100%>
<tr>
<td valign=top align=left width=33%><b>Operator</b></td>
<td valign=top align=left width=33%><b>Bezeichnung</b></td>
<td valign=top align=left width=33%><b>Bedeutung </b></td></tr>
<tr>
<td valign=top align=left>!</td>
<td valign=top align=left>Logisches NICHT</td>
<td valign=top align=left>!a ergibt false, wenn a wahr ist, und true,
wenn a falsch ist. </td></tr>
<tr>
<td valign=top align=left>&&</td>
<td valign=top align=left>UND mit Short-Circuit-Evaluation</td>
<td valign=top align=left>a && b ergibt true, wenn sowohl
a als auch b wahr sind. Ist a bereits falsch, so wird false zurückgegeben
und b nicht mehr ausgewertet. </td></tr>
<tr>
<td valign=top align=left>||</td>
<td valign=top align=left>ODER mit Short-Circuit-Evaluation</td>
<td valign=top align=left>a || b ergibt true, wenn mindestens einer
der beiden Ausdrücke a oder b wahr ist. Ist bereits a wahr, so
wird true zurückgegeben und b nicht mehr ausgewertet. </td></tr>
<tr>
<td valign=top align=left>&</td>
<td valign=top align=left>UND ohne Short-Circuit-Evaluation</td>
<td valign=top align=left>a & b ergibt true, wenn sowohl a als
auch b wahr sind. Beide Teilausdrücke werden ausgewertet. </td></tr>
<tr>
<td valign=top align=left>|</td>
<td valign=top align=left>ODER ohne Short-Circuit-Evaluation</td>
<td valign=top align=left>a | b ergibt true, wenn mindestens einer
der beiden Ausdrücke a oder b wahr ist. Beide Teilausdrücke
werden ausgewertet. </td></tr>
<tr>
<td valign=top align=left>^</td>
<td valign=top align=left>Exklusiv-ODER</td>
<td valign=top align=left>a ^ b ergibt true, wenn beide Ausdrücke
einen unterschiedlichen Wahrheitswert haben. </td></tr>
</table>
<p><i>
Tabelle 5.3: Logische Operatoren </i></p>
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </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="k100030.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100033.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100035.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">© 1998, 2007 Guido Krüger & Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>
|