„Amigo, zazdroszczę Ci. Uczenie się nowych rzeczy jest takie cudowne! A dziś czeka na Ciebie nowy i ciekawy temat — literatura”.

„Najwyraźniej powinienem powiedzieć, że jestem najszczęśliwszym robo-uczniem na planecie, Rishi. Cóż, jestem gotowy, aby chłonąć nową wiedzę!”

„Więc przejdźmy do tego od razu. Literały to określone dane zapisywane bezpośrednio w kodzie programu. Nie mówimy o byle jakich danych. Mówimy tylko o typach pierwotnych i ciągach znaków.

Załóżmy na przykład, że masz ten 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 liczba 5 , liczba 10 i ciąg znaków „ Sum = ”.

Literały całkowite

„W Javie wszystko, łącznie z literałami, ma typ. Wszystkie literały całkowite (liczby całkowite) w kodzie to int . Typ int to standardowy typ liczb całkowitych w Javie”.

„Znam ten typ. Używałem go”.

„Czy pamiętasz inne typy liczb całkowitych oprócz int? Niektóre, które zajmują mniej miejsca w pamięci?”

„Oczywiście! Bajtowo i krótko”.

„To są te. Więc jeśli w swoim kodzie zdecydujesz się przypisać literał całkowity do zmiennej typu byte lub short, nie będzie żadnych problemów. Najważniejsze, że wartość literału mieści się w zakresie wartości, które typ zmiennej może przechowywać Kompilator Java jest wystarczająco inteligentny, aby zrozumieć, że zmiennej bajtowej można przypisać literał całkowity 100.

Przykłady:

Kod Opis
int a = 300;
To się skompiluje dobrze.
byte a = 100; 
To się skompiluje dobrze.
byte a = 300;
Wystąpi błąd kompilacji, ponieważ maksymalna wartość bajtu wynosi 127.

„A co z długą czcionką?”

„Możemy również pisać literały tego typu w naszym kodzie. Aby to zrobić, dodaj łacińską literę „L” lub „l” na końcu liczby całkowitej.

Przykłady:

Kod Opis
long a = 3000000000L; 
To się skompiluje dobrze.
long a = 3000000000; 
Błąd kompilacji: 3 miliardy to za dużo dla literału typu int.
int a = 3000000000L; 
Błąd kompilacji: literał jest długi, ale zmienna jest typu int. Ponadto 3 miliardy to więcej niż maksymalna wartość int.

„Czy zauważyłeś, jak trudno jest odczytać duże liczby składające się z 10 lub więcej cyfr?

„Tak, jeśli nie masz włączonego robovision, nie będzie od razu jasne, czy mówimy o 3 miliardach, czy o 30”.

„Aby uczynić kod bardziej czytelnym (a to jest ważne!), Java umożliwia wstawianie podkreśleń do literałów numerycznych (nie wpływają one na wartość liczby).

„Powyższy przykład można przepisać z podkreśleniami, aby był trochę jaśniejszy:

Kod Opis
long a = 3_000_000_000L; 
To się skompiluje dobrze.
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ł jest długi, ale zmienna jest typu int. Ponadto 3 miliardy to więcej niż maksymalna wartość int.

„To jest o wiele wygodniejsze do czytania, chociaż przecinek zamiast podkreślenia byłby bardziej znajomy!”

„Ale nie możemy używać przecinków w literałach liczbowych, ponieważ są one już używane do innego celu. Na przykład do oddzielania argumentów od siebie podczas wywoływania metody.

Literały liczb rzeczywistych

„Prawdopodobnie już się domyśliłeś, że w swoim kodzie możesz podać nie tylko liczby całkowite, ale także literały zmiennoprzecinkowe (liczby rzeczywiste).”

— Podwaja się i pływa?

„Tak. Właściwie zasada jest dość prosta: jeśli liczba w kodzie ma kropkę dziesiętną, to jest to literał zmiennoprzecinkowy. I to nie byle jaki, ale podwójny. Aby utworzyć literał zmiennoprzecinkowy , należy umieścić literę „F” (lub „f”) na końcu numeru .

Przykłady:

Kod Opis
double a = 100.0; 
To się skompiluje dobrze.
double a = 100.;
To się skompiluje dobrze.
double a = .0;
To się skompiluje dobrze.
float a = 100.0f; 
To się skompiluje dobrze.
float a = 100.0; 
Wystąpi błąd kompilacji: zmienna jest zmiennoprzecinkowa, ale literał jest podwójny.

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

Kod Opis
double a = 100D;
To się skompiluje dobrze.
float a = 100F; 
To się skompiluje dobrze.
int a = 300D; 
Wystąpi błąd kompilacji: zmienna to int, ale literał to double .

„Literały zmiennoprzecinkowe mogą wykorzystywać notację naukową : oprócz części ze znakiem liczby można również podać potęgę dziesięciu. Przykład:

Dosłowny Notacja matematyczna Wartość końcowa
1,23 E 2 1,23*10 2 123,0
1,23 E 3 1,23*103 1230.0
1,23E - 6 1,23*10 -6 0,00000123
1 E 6 1,0 *10 6 1000000,0
1E - 10 1,0*10 -10 0,0000000001

Literały łańcuchowe

„Możesz również określić całe wiersze tekstu w swoim kodzie. Aby powiedzieć kompilatorowi, aby traktował ciąg jako dane (literał), a nie jako część kodu, cały ciąg jest otoczony podwójnymi cudzysłowami po obu stronach.

„Jeśli pojedyncza linia kodu ma kilka podwójnych cudzysłowów, to są one dzielone na pary. Pierwszy podwójny cudzysłów wskazuje początek literału. Następny wskazuje koniec literału. początek nowego literału. A następny oznacza koniec drugiego literału. I tak dalej.

„Każdy taki literał to String .

Przykłady

Kod Wyjaśnienie
"+"+"+"+"+"+"+"+"+"
W linii jest 5 literałów. Każdy z nich składa się z pojedynczego znaku „+”.
""
Ten literał jest pustym łańcuchem. Ciąg bez znaków.
"2+3"+"-5"
Mamy tu do czynienia z dwoma literałami. Wynikiem będzie ciąg „2+3-5”, a nie liczba
"return"+";"
Są tu również dwa literały. Nie ma tutaj deklaracji zwrotu.

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

Kod Wyjaśnienie
String s = "I hold it true, whate'er befall"
         + "I feel it when I sorrow most;"
         + "'Tis better to have loved and lost"
         + "Than never to have loved at all.";
Jeśli wyślesz ten wiersz na ekran, cały tekst zostanie wyświetlony w jednym wierszu!

Literały znakowe

„Co zrobić, jeśli potrzebuję literału, który jest pojedynczym znakiem, a nie ciągiem? Czy powinienem utworzyć ciąg składający się z jednego znaku?”

„Nie, w takim przypadku potrzebny jest literał, którego typem jest char. Czy potrafisz zgadnąć, jak oznaczony jest początek i koniec takiego literału?”

"Pojedyncze cytaty?"

„Tak, a wewnątrz pojedynczych cudzysłowów musi znajdować się znak i tylko jeden znak. Nie można używać pustych pojedynczych cudzysłowów.

Przykłady:

Kod Wyjaśnienie
'A'
Literał, którego typem jest char. Zawiera łacińską literę „A”.
'@' 
Literał, którego typem jest char. Zawiera znak „@”.
'' 
Literał, którego typem jest char. Zawiera japoński znak. I to też jest możliwe.
'\u1f3a'
Literał, którego typem jest char. Zawiera znak Unicode określony przez jego numer.

„Ostatni przykład przypisuje znak Unicode za pomocą specjalnej notacji: najpierw mamy przedrostek \\u, a następnie 4 znaki szesnastkowe. Dowiesz się o tym więcej w następnych lekcjach.”