"Amigo, irigyellek. Új dolgokat tanulni olyan csodálatos! És ma egy új és érdekes téma vár rád - szó szerint."

"Úgy látszik, azt kellene mondanom, hogy én vagyok a legboldogabb robo-tanuló a bolygón, Rishi. Nos, készen állok az új tudás magába szívására!"

"Akkor azonnal térjünk rá. A literálok konkrét adatok, amelyek közvetlenül a program kódjába vannak írva. Nem beszélünk akármilyen adatról. Csak primitív típusokról és karakterláncokról beszélünk.

Tegyük fel például, hogy rendelkezik ezzel a kóddal:

Kód Szó szerint
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

"A kód literáljai az 5-ös szám , a 10-es szám és a " Sum = " karakterlánc.

Egész literálok

"A Java-ban mindennek, beleértve a literálokat is, van típusa. A kódban szereplő összes egész literál (egész szám) int . Az int típus a szabványos Java egész típus."

– Ismerem ezt a típust. Használtam.

"Emlékszel más egész számtípusokra az int-en kívül? Olyanokra, amelyek kevesebb helyet foglalnak a memóriában?"

"Persze! Byte és short."

"Ezek azok. Tehát, ha a kódjában úgy dönt, hogy egy byte vagy short típusú változóhoz integer literált rendel, akkor nem lesz probléma. A lényeg az, hogy a literál értéke azon az értéktartományon belül legyen, amelyet a A Java fordító elég okos ahhoz, hogy megértse, hogy egy bájtváltozóhoz hozzárendelhető az egész literál 100.

Példák:

Kód Leírás
int a = 300;
Ez jól fog összeállni.
byte a = 100; 
Ez jól fog összeállni.
byte a = 300; 
Fordítási hiba lesz, mert a maximális bájtérték 127.

– Mi a helyzet a hosszú típussal?

"Kódunkban ilyen típusú literálokat is írhatunk, ehhez adjunk hozzá egy latin "L" vagy "l" betűt az egész szám végéhez.

Példák:

Kód Leírás
long a = 3000000000L; 
Ez jól fog összeállni.
long a = 3000000000; 
Összeállítási hiba: 3 milliárd túl nagy egy int literálhoz.
int a = 3000000000L; 
Fordítási hiba: a literál hosszú, de a változó int. Ráadásul 3 milliárd több, mint a maximális int.

"Észrevetted, milyen nehéz nagy, 10 vagy több számjegyből álló számokat olvasni?

"Igen, ha nincs engedélyezve a robovision, akkor nem lesz azonnal világos, hogy 3 milliárdról vagy 30-ról beszélünk."

"A kód olvashatóbbá tétele érdekében (és ez fontos!), a Java lehetővé teszi aláhúzásjelek beszúrását a numerikus literálokba (ezek nem befolyásolják a szám értékét).

"A fenti példa átírható aláhúzásokkal, hogy egy kicsit világosabb legyen:

Kód Leírás
long a = 3_000_000_000L; 
Ez jól fog összeállni.
long a = 3_000_000_000; 
Összeállítási hiba: 3 milliárd túl nagy egy int literálhoz.
int a = 3_000_000_000L; 
Fordítási hiba: a literál hosszú, de a változó int. Ráadásul 3 milliárd több, mint a maximális int.

"Ezt sokkal kényelmesebb olvasni, bár az aláhúzás helyett a vessző ismerősebb lenne!"

"De nem használhatunk vesszőt a numerikus literálokban, mert azokat már más célra használják. Például az argumentumok egymástól való elválasztására metódus hívásakor.

Valós számliterálok

"Valószínűleg már sejtette, hogy a kódjában nem csak egész számokat, hanem lebegőpontos literálokat (valós számokat) is megadhat."

– Dupla és úszó is?

"Igen. Valójában a szabály nagyon egyszerű: ha a kódban egy számban van tizedesvessző, akkor a szám egy lebegőpontos literál. És nem akármilyen literál, hanem dupla literál . Lebegőliterál létrehozásához 'F' (vagy 'f') betűt kell tenni a szám végére .

Példák:

Kód Leírás
double a = 100.0; 
Ez jól fog összeállni.
double a = 100.;
Ez jól fog összeállni.
double a = .0;
Ez jól fog összeállni.
float a = 100.0f; 
Ez jól fog összeállni.
float a = 100.0; 
Fordítási hiba lesz: a változó float, de a literál dupla.

"Mellesleg, explicit módon konvertálhat egy egész literált lebegőpontos vagy dupla literálra úgy, hogy egyszerűen hozzáfűzi az "F" utótagot (a float ) vagy a D (a dupla ) utótagot. Példák:

Kód Leírás
double a = 100D; 
Ez jól fog összeállni.
float a = 100F; 
Ez jól fog összeállni.
int a = 300D; 
Fordítási hiba lesz: a változó egy int, de a literál egy double .

"A lebegőpontos literálok használhatnak tudományos jelölést : a szám előjeles részén kívül megadhat tíz hatványt is. Példa:

Szó szerinti Matematikai jelölés Végső érték
1,23 E 2 1,23*10 2 123,0
1,23 E 3 1,23*103 1230,0
1,23 E -6 1,23*10 -6 0,00000123
1 E 6 1.0 *10 6 1000000,0
1 E -10 1,0*10 -10 0,0000000001

String literálok

"A kódban egész sornyi szöveget is megadhat. Annak érdekében, hogy a fordító megmondja, hogy egy karakterláncot adatként (literálként) kezeljen, és ne a kód részeként, a teljes karakterláncot mindkét oldalon dupla idézőjel veszi körül.

"Ha egy kódsorban több dupla idézőjel van, akkor azokat párokra osztják. Az első kettős idézőjel a literál elejét jelöli. A következő a literál végét jelzi. Az utána következő ismét a egy új literál kezdete. És a következő a második literál végét jelenti. És így tovább.

"Minden ilyen literál egy karakterlánc .

Példák

Kód Magyarázat
"+"+"+"+"+"+"+"+"+"
5 literál van egy sorban. Mindegyik egyetlen „+” karakterből áll
""
Ez a literál egy üres karakterlánc. Karakterek nélküli karakterlánc.
"2+3"+"-5"
Itt két literál van. Az eredmény a „2+3-5” karakterlánc lesz, nem egy szám
"return"+";"
Két literál is van itt. Itt nincs visszatérési nyilatkozat.

"Ha egy karakterlánc-literál túl hosszú, akkor több sorra bontható, és a plusz operátorral összeragasztható:

Kód Magyarázat
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.";
Ha ezt a sort kiírja a képernyőre, akkor az összes szöveg egyetlen sorban jelenik meg!

Karakter literálok

"Mi van, ha olyan literálra van szükségem, amely egyetlen karakterből áll, nem pedig karakterláncból? Létrehozzam egy karakterláncot, amely egyetlen karakterből áll?"

"Nem, ebben az esetben szükséged van egy literálra, amelynek típusa char. Kitalálod, hogyan jelölik egy ilyen literál elejét és végét?"

– Egyetlen idézet?

"Igen, és az idézőjelekben egy karakternek és csak egy karakternek kell lennie. Nem használhatsz üres idézőjeleket.

Példák:

Kód Magyarázat
'A'
Egy literál, amelynek típusa char. A latin „A” betűt tartalmazza.
'@' 
Egy literál, amelynek típusa char. Ez tartalmazza a „@” szimbólumot
'' 
Egy literál, amelynek típusa char. Japán karaktert tartalmaz. És ez is lehetséges.
'\u1f3a'
Egy literál, amelynek típusa char. Egy Unicode karaktert tartalmaz, amelyet a szám határozza meg.

"Az utolsó példa egy Unicode karaktert rendel hozzá egy speciális jelöléssel: először az előtag van \u, majd 4 hexadecimális karakter. Erről többet megtudhat a következő leckékben."