Zuweisung Ich sehe keinen klaren Grund dies geschieht ..int wörtlich nach Long in Java
public class wrappers
{
public static void main(String []args)
{
short s1=32767; // (primitive) works fine without compile error
short s2=32768; fails as this is beyond short's range
Short s3=32767; //(wrapper) works fine without compile error
Short s4=32768; fails as this is beyond short's range
long l1 =34 // (wrapper)works fine (with_in_range)
Long l2 =34 // fails, without 34L (with_in_range)
}
Ich weiß, dass, wenn Sie int
wörtliche für Wrapper-Klassen zuweisen, valueOf()
genannt wird;
während für Short(Wrapper)
scheint dies zu funktionieren, aber für Long(wrapper)
über Zuweisungen im Code fehlgeschlagen.
Gibt es Regeln für die Zuweisung dieser Wrapper-Klassen?
gefunden Sie einen schönen Ecke Fall. Ich glaube, das 'Short s4 = 32767' sollte auch nicht funktionieren. Wie auch immer, Sie können den 'Long'-Fall wie folgt beheben:' Long l1 = 12L; // Kapital L'. Für den Rekord, der Begriff für [Autoboxing] (https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html), können Sie dafür googeln. –
Ja, es gibt Regeln. Sie werden als [Java Language Specifications] (https://docs.oracle.com/javase/specs/) bezeichnet. – Andreas
Sie geben die Werte nicht an. genau wie 'int a = 100.1' wird nicht kompiliert, wie oben beschrieben. –