Was hat dieser Operator in Java zu bedeuten?

...komplette Frage anzeigen

6 Antworten

In Java ist "=+" kein richtiger, bzw. ein Pseudo-Operator, der eigentlich aus Zweien besteht, aber vorher erst mal etwas Grundlagenwissen:

Wenn du "a += 123" schreibst, ist es das selbe wie "a = a + 123". Du addierst also einen Wert zu einer Variablen, und weist das Ergebnis eben dieser Variablen zu. Weil das ein sehr häufiger Vorgang ist, hat man sich in einigen Programmiersprachen dazu entschlossen, eine Art Kurzform mit gleichzeitiger Zuweisung einzuführen. (Davon abgesehen arbeiten viele CPUs intern genau so!)

Wenn du also von einer Variablen den Betrag 42 abziehen willst, dann kannst du statt ...

wert = wert - 42;

... einfach ...

wert -= 42;

... schreiben, was kürzer und langfristig leichter lesbar ist. :)

Zurück zu deiner eigentlichen Frage: Ich vermute, dass du einfach nur "=+" mit "+=" verwechselt hast, aber "=+" ist einfach eine Konvertierung in einen Integer mit evtl. einem Unboxing davor.

Das Unäre Plus wandelt seinen Operanden in einen Integer um:

Short s = new Short(123);
int i = +s;

Das kann man tun, um deutlich auszudrücken, dass die Konvertierung in einen Integer ausdrücklich erwünscht ist, ist aber m. M. n. nicht sonderlich schick und ich würde es vermeiden.

Auf jeden Fall kannst du das Leerzeichen auch verschieben, sodass dort Folgendes steht:

int i =+ s;

... das ist die gleiche Zuweisung nach einer Integer-Konvertierung wie im Beispiel davor, nur sieht das Gleichheitszeichen und das Plus jetzt zusammen aus, wie ein eigenständiger Operator; was es aber nicht ist!

Noch ein Beispiel zum Schluss:

Short s = new Short(123);
int i = 0;

i += s; // i ist jetzt 123
i =+ s; // i ist jetzt 123
i += s; // i ist jetzt 246

Aber wie gesagt, ich vermute einfach, dass du nur "+=" mit "=+" verwechselt hast. Gewöhne dir obigen Unsinn bitte nicht an! :)

Schönen Tag noch! :)

Hallo blackoutX2

+= ist ein Zuweisungsoperator den du nutzen kannst um eine Variable um einen gewissen wert zu erhöhen:

Statt

x = x+1;

kannst du

 x+=1;

schreiben, ähnliches gibt es auch für die anderen Rechenoperationen.

LG

Darkmalvet

Das ist ein Verbundoperator, der in Langform folgendes macht:

int a = 1;
a = (int) (a + b);

// kurz:
int a = 1;
a += b;

Zum einen wird der Wert der Variablen mit einem anderen Wert addiert und in a gespeichert, zum anderen nimmt Java einen impliziten Typecast vor.

Das bedeutet, auch dieser Ausdruck würde funktionieren:

int a = 1;
a += 1.5;

Beim Verwenden solltest du zudem die Priorität der Ausführung beachten. Ein Beispiel:

int a = 2;
a *= 1 + 2;

 In diesem Fall wird erst die Summe gebildet und danach das Produkt.

Bezüglich der Verwertung wird ein rechter komplexer Ausdruck nur einmal berechnet. 

Kurzschreibweise für a = a + ...

a += ...

blackoutX2 30.06.2017, 22:01

hä ? also ist es gar nicht ähnlich mit <= ?

0
Rosenbaum 30.06.2017, 22:14
@blackoutX2

Nein. <= ist ein Vergleich. += weißt der linken Seite was neues zu, und zwar die um die rechte Seite erhöhte Linke Seite.

a +=1

danach steht in a  a+1

0

Also =+ gibt es nicht soviel ich weiß.

==, <= >= usw... sind Vergleichsoperatoren. Die werden verwendet um Variablen miteinander zu vergleichen. Der Wert in einer Variable wird dabei nicht verändert.

Während += eine Variable verändert.

a wird mit 5 gesetzt: a = 5
5 addieren: a += 5
2 addieren: a += 2
1 subtrahieren: a -= 1
1 addieren: a++;
1 subtrahieren: a--;

Ich hoffe das war verständlich ;)

JesterFun 30.06.2017, 22:08

Ich habe nochmal gegoogled: =+ wird von vielen Programmiersprachen wie folgt interpretiert:

a =+ 5

ist wie

a = +5

Also wie:

a = 5

0

Also in der Programmiersprache C ist das so:

a = a + b 

man kann aber auch die verkürtzte Version davon schreiben:

a += b

ist beides das gleiche

PeterLustig1999 30.06.2017, 22:06

Nicht ganz, da bei der ersten Variante der Speichermanager öfter aufgerufen wird. Aufrufe an diesen sind immer ziemlich langsam, daher ist Variante 2 effizienter als Variante 1.

2

Was möchtest Du wissen?