A short, az int és a long
A short, az int és a long teljesen azonos módon használható, mint a byte, a különbség mindössze az értéktartományban van (illetve abban, hogy a long típus literál használatához a szám mögé egy l karaktert kell írnunk):
-
short: -32768 – 32768
-
int: –2147483648 – 2147483647
-
long: -9223372036854775808l – 9223372036854775807l
Ha nem adunk meg egy egész szám literál után módosító karaktert, akkor a nyelv szabályai szerint a fordító megpróbálja konvertálni arra a típusra, ami a használt változó típusa, egyéb esetben a literál típusa int lesz.
A char
A többi nyelvhez hasonlóan a char egy öszvér adattípus, alapvetően számokat tartalmaz, de ha az értékét kiírjuk, akkor karaktereket kapunk eredményül. A Java nyelv úttörő volt a tekintetben, hogy a char típus alapja nem a 8 bites byte, hanem az 32 bites integer, hiszen a Java nem ASCII alapú, hanem UTF-8 az alapértelmezett karakter kódolása, mivel ismert világ összes karaktere nem fér el 8 biten.
Nézzük meg ezt a gyakorlatban:
view plaincopy to clipboardprint?
-
char betű = 64;
-
System.out.print(betű);
-
betű = ’\n’;
-
System.out.print(betű);
-
betű = ’a’;
-
System.out.print(betű);
-
betű = ’\t’;
-
System.out.print(betű);
-
betű = ’\\’;
-
System.out.print(betű);
-
betű = ’\’’;
-
System.out.print(betű);
-
betű = ’"’;
-
System.out.print(betű);
-
betű = ’\070’;
-
System.out.print(betű);
-
betű = ’\u003F’;
-
System.out.print(betű);
Eredményül az alábbi (ránézésre értelmetlen) karakter halmazt kapjuk:
view plaincopy to clipboardprint?
-
@
-
a \’"8?
Lássuk a dekódolást:
-
A @ karakter UTF-8 (és ASCII) kódja a 64 szám, ezért a @ az első kiírt karakter.
-
A \n karakter az újsor kódja, ez nem látható karakter, viszont a (szintén nem látható) kurzort a következő sorba teszi.
-
A következő sor elején kiírt a betű egyértelmű kell legyen, hiszen ezt adtuk értékül a betű nevű változónak.
-
A negyedik kiírt karakter ismét egy nem látható karakter (\t), amely egy tabulátor pozícióval jobbra mozgatja a kurzort.
-
Biztos felmerült, hogy a \ karaktert hogy tudjuk kiírni: egyszerűen a \\ karaktert kell használnunk. A \ (backslash vagy visszaper jel) egy speciális karakter, amely az őt követő karakternek is speciális jelentést ad.
-
A szimpla idézőjel kiírásához a \’ karaktereket kell használnunk.
-
A dupla idézőjel kiírható, ha szimpla idézőjelek között van.
-
A \070 kódolás oktális formátumú számot hordoz, a 070 oktális szám azonos az 56 decimális számmal, amely az UTF-8 kódrendszerben a ’8’ karakternek felel meg.
-
A \u003F kódolás hexadecimális formátumú számot jelent, a 003F szám azonos a 63 decimális számmal, amelynek a ’?’ karakter felel meg.
Mint láthatjuk, eléggé változatos módon tudunk karaktereket megadni, azonban a char kettős természetét az is meghatározza, hogy tudunk vele műveleteket végezni:
view plaincopy to clipboardprint?
-
char betű = 64;
-
betű++;
-
System.out.print(betű);
-
betű += 0;
-
System.out.print(betű);
-
betű += ’0’;
-
System.out.print(betű);
Az eredmény az AAq karaktersorozat lesz, hiszen a 64 az ’@’ karaktert kódolja, amihez ha hozzáadunk egyet, akkor ’A’ betű lesz, amit a 65 kódol. Ha ehhez hozzáadunk nullát (0), akkor az eredmény továbbra is 65 marad, de ha karakteresen adunk hozzá nullát (’0’), amelynek a számszerű értéke 48, akkor az eredmény 113 lesz (mivel 65+48 az 113), amely szám a ’q’ karaktert kódolja.
A karakter literálok két szimpla idézőjel közötti karakterek. Általában egy karakter, de ha az első karakter visszaper jel (\), akkor több karakter is lehet a két idézőjel között. Érdemes megtanulni a speciális karakter literálok használatát, mivel használatuk sok esetben szükséges a szövegfeldolgozáshoz.
|