JAVA kann nicht konvertieren von int zu short
Hallo ich bin neu hier und dies ist meine erste Frage:
Ich habe einen code mit einfachen aritmetic Betreiber.
Aber es hat nicht funktioniert:
int a = 10;
short premennaTypuShort = (short)a; /*retyped variable a into short type and entered into new variable*/
premennaTypuShort = premennaTypuShort - 7;
/*now i am trying to decrease the number but eclipse wrote that cannot convert from int to short.*/
ich versuche, verringern Sie die angegebene Zahl als kurze, aber eclipse schrieb, die nicht konvertieren von int zu kurz. Ich don ' T undertand, warum.
also, wo ist das problem ? wie kann ich das reparieren dieses Fehlers?
- Wenn der Umgang mit short und int arithmetische Operationen in java return Ergebnis in
int
so haben Sie festgelegt, dass inint
premennaTypuShort -= 7;
- festgelegten, die in
short
nicht inint
sorry für Tippfehler - stackoverflow.com/questions/2294934/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
java 32 bit. Das bedeutet, dass, Wann immer irgendeine arithmetische operation durchgeführt wird, wird es wieder in der 32-bit-Wert. Sie müssen also werfe es kurz wieder, etwa so:
Das problem ist, dass, um zu berechnen
premennaTypuShort - 7
,premennaTypuShort
erste muss konvertiert werden, um eineint
, so das Ergebnis der Berechnung ist einint
.Dies wiederum bedeutet, dass Sie dann versuchen, weisen Sie eine
int
zurück zu einemshort
variable, die erfordert eine explizite niedergeschlagen auf Ihrem Teil.7
wie diese:premennaTypuShort - (short)7
. Aber afaik Java nicht immer führenshort
Arithmetik. Es wird immer Verallgemeinerungshort
s zuint
um die arithmetische Operationen ausführen. Sie müssen sich also im Inhalt mit der Berechnung getan, mitint
rechnen, und dann müssen Sie explizit niedergeschlagen das Ergebnisshort
.long
arithmetisch, so ist es nicht wie kann es nur tunint
Arithmetik. Aber es wird nicht kleiner alsint
, ja.Wenn man mit einem
byte
eineshort
oder einechar
zum durchführen von arithmetischen Operationen mitints
, es ist ein automatischer Aufstieg in dieint
primitiven Typ.Hier, Sie versuchen zu vergeben
int
zurück zu einemshort
.Eine Lösung wäre, den Zuweisungsoperator
-=
, dadurch vermeiden Sie die Umstellung auf eineint
WARNUNG
Dem Zuweisungsoperator hat eine schlechte Seite zu. Betrachten Sie den folgenden code.
Durch hinzufügen
1
zu Kurz.MAX_VALUE (32767
), Sie sind überfüllt, die kurz und wird zu unerwarteten Ergebnissen kommen.Additive Operatoren (+ und -) sind "Numerische Integer-Operator". Und Numerische Integer-Operatoren ergeben immer einen Wert vom Typ int oder long.
Weil jede Ganzzahl-operator außer shift-operator, der mindestens 1 operand vom Typ long ist durchgeführt mit 64-bit-Präzision und das Ergebnis ist vom Typ long.
Ansonsten ist der Betrieb erfolgt mit 32 bit-Präzision und das Ergebnis ist vom Typ int.
Deshalb ist hier der Ausdruck
premennaTypuShort – 7
produziert ein Ergebnis vom Typint
und speichern eineint
Wert auf eineshort
Sie brauchen, um konkret wirken zushort
wie die folgenden, die bekannt ist als Verengung.