1. Egész literálok

És most egy új érdekes témáról - szó szerint. A közvetlenül a programkódba írt adatokat literáloknak nevezzük . Nem régi adatokról beszélünk, hanem a primitív típusok és a Stringtípus értékeiről.

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

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

Ebben a kódban a literálok5 a szám , a szám 10és a " Sum = " karakterlánc.

A Java nyelven mindennek van típusa, beleértve a literálokat is. Alapértelmezés szerint a kódban szereplő összes egész literál (egész szám) ints. Az int típus a szabványos Java egész típus.

Sőt, ha úgy döntesz, hogy egy bájtváltozóhoz vagy egy rövid változóhoz integer literált rendelsz, akkor nem lesz probléma. Csak meg kell győződnie arról, hogy a literális érték azon az értékeken belül van, amelyeket a változó típusa tárolhat.

A Java fordító elég okos ahhoz, hogy megértse, hogy egy byteváltozóhoz probléma nélkül hozzá lehet rendelni a 100-at.

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.

longA kódodba literálokat is írhatsz . Ehhez adja hozzá a 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.

Észrevette, hogy milyen nehéz nagy, 10 vagy több számjegyből álló számokat olvasni? Nem lehet azonnal megmondani, hogy a kódban 3 milliárd vagy 30 milliárd szerepel. 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ásjelekkel, 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.

De nem használhatunk vesszőt a numerikus literálokban, mert 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.



2. Valós számliterálok

A kódban nem csak egész számokat, hanem lebegőpontos literálokat (valós számokat) is megadhat.

Valójában a szabály nagyon egyszerű: ha a kódban egy számban van tizedesvessző, akkor a szám lebegőpontos literál. És nem akármilyen szó szerinti, hanem doubleszó szerinti.

Létrehozhat egy lebegő literált, de ehhez az „F” (vagy „f”) betűt kell a szám végére tenni .

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.

Egyébként az egész literált egyszerűen lebegőpontossá vagy dupla literállá alakíthat át egyszerűen ). Példák: appending the suffix 'F' (for float) or D (for double)

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 tíz hatványt is megadhat. Példa:

Szó szerinti Matematikai jelölés Végső érték
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. String literálok

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

Ha egy kódsorban több dupla idézőjel van, akkor azokat párokra osztjuk. Az első kettős idézőjel a literál kezdetét jelzi. A következő a literál végét jelzi. Az ezt követő következő ismét egy új literál kezdetét jelzi. A következő pedig a második literál végét jelenti. Stb.

Minden ilyen literál egy String.

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 " " karakterlánc lesz 2+3-5, 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 összeragasztható a „plusz operátorral”:

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!


4. Karakterliterálok

A kódban nem csak karakterlánc-literálokat adhat meg, hanem egyedi karakterekből álló literálokat is. Ne feledje, hogy nem egyetlen karakterből álló karakterláncról beszélünk, hanem olyan literálokról, amelyek típusa char.

A karakterláncoktól eltérően a literált egyetlen idézőjel veszi körül . Az idézőjelekben egy karakternek és csak egy karakternek kell lennie. Nem használhat ü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őtagot kapjuk \u, amelyet 4 hexadecimális karakter követ. A következő leckék részletes információkat tartalmaznak erről.