Prymitywne typy danych - Oracle doc mówi zakres long
w Javie jest -9,223,372,036,854,775,808
do 9,223,372,036,854,775,807
. Ale kiedy robię coś takiego w moim zaćmieniu
long i = 12345678910;
pokazuje The literal 12345678910 of type int is out of range
błąd „ ”.
Są 2 pytania.
1) Jak zainicjować za long
pomocą wartości 12345678910
?
2) Czy wszystkie literały liczbowe są domyślnie typu int
?
java
long-integer
aamadmi
źródło
źródło
Long
- ze względu na automatyczne boksowanie, możesz użyćLong i = 12345678910L
lub użyćLong i = Long.valueOf(12345678910L)
w przypadkach, w których nie możesz użyć automatycznego boksowania.Odpowiedzi:
L
:long i = 12345678910L;
.BTW: nie musi to być duża litera L, ale mała litera jest mylona z
1
wieloma razy :).źródło
0x200000000L
0x20000000L
?0x20000000L
działałoby, ale nadal może być reprezentowane przezint
(32-bitową liczbę całkowitą), więc0x20000000
działałoby równie dobrze.0x200000000L
przekracza tę granicę, powodującL
konieczność spływu końcowego .Musisz dodać
L
znak na końcu numeru, aby Java rozpoznała go jako długi.Tak.
Zobacz Podstawowe typy danych, które mówią: „Literał całkowity jest typu długiego, jeśli kończy się na literę L lub l; w przeciwnym razie jest typu int”.
źródło
Musisz dodać wielkie litery
L
na końcu w ten sposóbTo samo dotyczy float z
3.0f
Które powinny odpowiedzieć na oba pytania
źródło
Aby długo zainicjować, musisz dodać „L” na końcu.
Może być wielka lub mała.
Wszystkie wartości liczbowe są domyślnie
int
. Nawet jeśli wykonasz dowolną operacjębyte
z dowolną liczbą całkowitą,byte
najpierw jest promowana,int
a następnie wykonywane są dowolne operacje.Spróbuj tego
Wystąpił błąd, ponieważ
2
jest domyślnieint
.Dlatego staramy się mnożyć
byte
sięint
. Stąd wynik zostajeint
przypisany do typu, do którego nie można go przypisać z powrotembyte
.źródło