1. Literały całkowite

A teraz nowy ciekawy temat - literały. Dane wprowadzane bezpośrednio do kodu programu nazywane są literałami . W tym przypadku nie mówimy o żadnych danych, ale o wartościach typów pierwotnych i typu String.

Na przykład masz kod:

Kod Literały
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

Literały w tym kodzie to number 5, number 10i string Sum=.

Wszystko w Javie ma swój typ, w tym literały. Wszystkie literały całkowite (liczby całkowite) w kodzie są typu int. Typ int jest standardowym typem całkowitym w Javie.

Jeśli jednak zdecydujesz się przypisać literał całkowity do zmiennej typu bytelub w swoim kodzie short, nie będzie żadnych problemów. Konieczne jest jedynie, aby wartość literału mieściła się w zakresie dostępnych wartości typu zmiennej.

Kompilator w Javie jest wystarczająco sprytny, aby zorientować się, że zmiennej typu bytemożna bez problemu przypisać literał całkowity 100.

Przykłady:

Kod Opis
int a = 300;
Doskonale się kompiluje.
byte a = 100; 
Doskonale się kompiluje.
byte a = 300;
Wystąpi błąd kompilacji: maksymalna wartość typu byteto 127.

Możesz także pisać literały, takie jak long. Aby to zrobić, na końcu liczby całkowitej musisz napisać łacińską literę L lub l.

Przykłady:

Kod Opis
long a = 3000000000L; 
Doskonale się kompiluje.
long a = 3000000000; 
Błąd kompilacji: 3 miliardy to za dużo dla literału typu int.
int a = 3000000000L; 
Błąd kompilacji: literał ma typ długi, ale zmienna ma typ int. Ponadto 3 miliardy to więcej niż maksymalna liczba typu int.

Czy zauważyłeś, jak trudne jest odczytanie dużych liczb składających się z 10 lub więcej znaków? Nie od razu zrozumiesz, 3 miliardy w kodzie czy 30? Aby kod był łatwiejszy do odczytania (a to ważne!), Java umożliwiła wstawianie podkreśleń do literałów numerycznych (nie wpływają one na wartość liczby).

Powyższy przykład można przepisać, używając podkreśleń, i stanie się on nieco jaśniejszy:

Kod Opis
long a = 3_000_000_000L; 
Doskonale się kompiluje.
long a = 3_000_000_000; 
Błąd kompilacji: 3 miliardy to za dużo dla literału typu int.
int a = 3_000_000_000L; 
Błąd kompilacji: literał ma typ długi, ale zmienna ma typ int. Ponadto 3,0 miliarda to więcej niż maksymalna liczba typu int.

Nie można użyć przecinka wewnątrz literału liczbowego, ponieważ jest on już używany. Na przykład, aby oddzielić argumenty od siebie podczas wywoływania metody.



2. Literały liczb rzeczywistych

W kodzie można określić nie tylko liczby całkowite, ale także literały zmiennoprzecinkowe (liczby rzeczywiste).

W rzeczywistości zasada jest bardzo prosta: jeśli w kodzie jest liczba, aw jej zapisie jest kropka, to ta liczba jest literałem zmiennoprzecinkowym. I to nie tylko literał, ale literał z typem double.

Możesz także utworzyć literał zmiennoprzecinkowy, ale aby to zrobić, musisz dodać literę F (lub f) do liczby na końcu.

Przykłady:

Kod Opis
double a = 100.0; 
Doskonale się kompiluje.
double a = 100.;
Doskonale się kompiluje.
double a = .0;
Doskonale się kompiluje.
float a = 100.0f; 
Doskonale się kompiluje.
float a = 100.0; 
Wystąpi błąd kompilacji: zmienna typu float, literał typu double.

Nawiasem mówiąc, możesz jawnie zamienić literał całkowity na literał zmiennoprzecinkowy lub literał podwójny, po prostu dodając do niego przyrostek F (dla float) lub D (dla double). Przykłady:

Kod Opis
double a = 100D;
Doskonale się kompiluje.
float a = 100F; 
Doskonale się kompiluje.
int a = 300D; 
Wystąpi błąd kompilacji: zmienna typu int, literał typu double.

Literały zmiennoprzecinkowe mają „ notację naukową ”: oprócz części ze znakiem liczby można również określić stopień dziesiąty tej liczby. Przykład:

Dosłowny Notacja matematyczna Wartość końcowa
1.23E2
1.23 * 102
123.0
1.23E3
1.23 * 103
1230.0
1.23E-6
1.23 * 10-6
0.00000123
1E6
1.0 * 106
1000000.0
1E-10
1.0 * 10-10
0.0000000001


3. Literały łańcuchowe

W kodzie można również określić całe wiersze tekstu. Aby kompilator traktował ciąg jako dane (wiersz tekstu), a nie jako część kodu, cały ciąg jest ujęty z obu stron w podwójne cudzysłowy.

Jeśli w jednym wierszu kodu występuje wiele podwójnych cudzysłowów, są one dzielone na pary. Pierwszy podwójny cudzysłów oznacza początek literału, następny oznacza koniec literału. Po nim następuje ponownie początek nowego literału, po nim następuje koniec drugiego literału. Itp.

Każdy taki literał ma typ String.

Przykłady

Kod Wyjaśnienie
"+" + "+" + "+" + "+" + "+"
W łańcuchu jest 5 literałów, z których każdy składa się z jednego znaku +
""
Literał jest pustym łańcuchem. Ciąg, który nie zawiera żadnych znaków.
"2+3" + "-5"
Mamy tu do czynienia z dwoma literałami. Wynikiem będzie ciąg znaków, 2+3-5ale nie liczba
"return" + ";"
Istnieją również dwa literały. Nie ma tutaj deklaracji zwrotu.

Jeśli literał łańcuchowy jest zbyt długi, można go podzielić na wiele wierszy i skleić za pomocą operatora plus:

Kod Wyjaśnienie
String s = "Буря мглою небо кроет "
         + "Вихри снежные крутя "
         + "То Jak зверь она завоет "
         + "То заплачет Jak дитя";
Jeśli wydrukujesz ten wiersz na ekranie, cały tekst zostanie wyświetlony w jednym wierszu!


4. Literały znakowe

W kodzie można określić nie tylko literały łańcuchowe, ale także literały pojedynczych znaków. W tym przypadku nie mówimy o łańcuchu składającym się z jednego znaku, ale o literałach typu char.

Literał znakowy jest otoczony pojedynczymi cudzysłowami , w przeciwieństwie do ciągu znaków. Wewnątrz pojedynczych cudzysłowów musi znajdować się symbol i tylko jeden. Nie może być pustych pojedynczych cudzysłowów.

Przykłady:

Kod Wyjaśnienie
'A'
Literał typu char. Zawiera łacińską literę A.
'@' 
Literał typu char. Zawiera symbol @
'' 
Literał typu char. Zawiera japoński znak. Tak, to też jest możliwe.
'\u1f3a'
Literał typu char. Zawiera znak Unicode określony przez jego numer.

Ostatni przykład określa znak z kodowania Unicode za pomocą specjalnej notacji: najpierw jest przedrostek \u, a następnie 4 znaki szesnastkowe. Więcej na ten temat w kolejnych wykładach.