summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100034.html
blob: f81f9ae258396f270e0acb1916cdfdcf06b1bcd5 (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
<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">&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="k100030.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100033.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100035.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.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 5 - Ausdr&uuml;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&uuml;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&uuml;gung und bietet dar&uuml;ber hinaus die M&ouml;glichkeit,
das Auswertungsverhalten der Operanden zu beeinflussen. Anders als
die meisten anderen Programmiersprachen, stellt Java die UND- und
ODER-Verkn&uuml;pfungen in zwei verschiedenen Varianten zur Verf&uuml;gung,
n&auml;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&uuml;r das Ergebnis des Gesamtausdrucks noch von Bedeutung ist.
Falls in dem Ausdruck <font color="#000077"><tt>A &amp;&amp; B</tt></font>
also bereits <font color="#000077"><tt>A</tt></font> falsch ist, wird
zwangsl&auml;ufig immer auch <font color="#000077"><tt>A &amp;&amp;
B</tt></font> falsch sein, unabh&auml;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">&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>

<p>
Der in Java ebenfalls verf&uuml;gbare <a name="ixa100354"><i>EXKLUSIV-ODER-Operator</i></a>
muss nat&uuml;rlich immer in der langen Variante ausgewertet werden.
<a href="k100034.html#logischeoperatoren">Tabelle 5.3</a> gibt eine
&Uuml;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>&amp;&amp;</td>
<td valign=top align=left>UND mit Short-Circuit-Evaluation</td>
<td valign=top align=left>a &amp;&amp; b ergibt true, wenn sowohl
a als auch b wahr sind. Ist a bereits falsch, so wird false zur&uuml;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&uuml;cke a oder b wahr ist. Ist bereits a wahr, so
wird true zur&uuml;ckgegeben und b nicht mehr ausgewertet. </td></tr>
<tr>
<td valign=top align=left>&amp;</td>
<td valign=top align=left>UND ohne Short-Circuit-Evaluation</td>
<td valign=top align=left>a &amp; b ergibt true, wenn sowohl a als
auch b wahr sind. Beide Teilausdr&uuml;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&uuml;cke a oder b wahr ist. Beide Teilausdr&uuml;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&uuml;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">&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="k100030.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100033.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100035.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100040.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>