Unärer Umkehrungsoperatorfür booleans?

Hallo,

da mich das schon immer stört würde ich gerne wissen, ob es sowas wie
Java:
int i = 0;
++i; // i = i + 1;
auch für boolsche Werte gibt. Zum Beispiel:
Java:
boolean b = false;
!*b; // Soll kurz für "b = !b;" stehen.

Das wie gesagt nur als Beispiel.
 

Schwertfisch

Mitglied
Hey,

es geht so wie du es schon in deinem Komtar geschrieben hast.
Java:
boolean b = false;
b = !b;
...wird b zu true. So "drehst" du den aktuellen wert deines Booleans.



mfg
 
Zuletzt bearbeitet:
M

maki

Gast
"sowas" nennt sich preincrement (++i) oder postincrement (i++) operatoren, gibt auch die passenden decrement operatoren (-- und i--).

Sowas wie decrement/increment für booleans gibt aber nunmal nicht.
 
Ok. Danke.

Wie ich es mühsam umdrehen kann, wusste ich schon. Ich dachte aber, dass es doch irgend sowas geben muss, weil man es schon häufiger braucht und es dann nervt, bei langen Bezeichnern das ganze doppelt zu schreiben.
 
S

SlaterB

Gast
wenn du in ein Objekt einer eigenen Klasse investierst, kannst du Methoden dafür einbauen,

hat aber natürlich diverse Unterschiede als Konsequenzen,
bei veränderlichen Objekten besonders wenn man Werte übernimmt

Bool a = ..;
Bool b = a; // geht ja mit boolean
b.chg(); // a auch geändert..
 

langhaar!

Bekanntes Mitglied
Bei Operationen mit zwei Operatoren snd die abkürzenden Schreibweisen möglich.
Z.B.:

Java:
b |= c; // b = b | c

b &= c; // b = b & a;

Sieht merkwürdig aus; ich verwende es gelegentlich.
 
Zuletzt bearbeitet:
wenn du in ein Objekt einer eigenen Klasse investierst, kannst du Methoden dafür einbauen [...]
Dann bekomme ich aber Haue wenn ich das für boolean mache :-D

@langhaar!:
Ich fand Deinen Beitrag sehr interessant, weil mir diese Schreibweise für logische Operatoren unbekannt war.
Mir stellt sich nur die Frage, welchen Sinn das macht, weil man in der Regel ja wegen der Performanz || und && verwenden möchte. Natürlich ist es, einmalig aufgerufen, noch kein Problem, aber in einer mehrdimensionalen Schleife macht sich das vielleicht nicht mehr so nett. ;-)
 
S

Spacerat

Gast
Bei Operationen mit zwei Operatoren snd die abkürzenden Schreibweisen möglich.
Z.B.:

Java:
b |= c; // b = b | c

b &= c; // b = b & a;

Sieht merkwürdig aus; ich verwende es gelegentlich.

Mindestens eine hast du vergessen:
Java:
b ^= c; // b = b ^ c (Exclusiv-Oder, XOR, Antivalenz)
Für booleans würde das dann dem "!=" entsprechen. Dieses ist in Java aber bereits ein Vergleichs- und kein Zuweisungsoperator.
 
Zuletzt bearbeitet von einem Moderator:

faetzminator

Gesperrter Benutzer
Mir stellt sich nur die Frage, welchen Sinn das macht [...]

Wenn ich ab und zu generierten Code verwenden muss, dann sind die Methodennamen dort teils so lange, dass man nicht mehrere Prüfungen (in einer if-Abfrage) auf eine Zeile pressen kann. Sobald es zu gross wird, arbeite ich gerne mit einem boolean:
Java:
boolean hasError = false;
hasError |= ...;
hasError |= ...;
hasError |= ...;
hasError |= ...;
if (hasError) {
    // ...
}
 
Die Idee dahinter finde ich sehr gut. Es überrascht mich immer wieder wie viele Tricks es gibt, die man in so kurzer Zeit lernen kann. Allerdings würde ich es beim boolan als
Java:
hasError = (hasError || ...);
implementieren.

Eine sinnvolle Verwendung von |= und &= sehe ich eher zum Beispiel darin:
Java:
int a = 5;
int b = 8;
a |= b; // a = 13
 

Ähnliche Java Themen

Neue Themen


Oben