1. Primitív típusok listája
A Java-nak 8 alapvető primitív típusa van. Primitívnek nevezik őket, mivel ezeknek a típusoknak az értékei nem objektumok, és közvetlenül a változókban tárolódnak.
Íme egy táblázat, amely néhány rövid információt tartalmaz ezekről a típusokról:
| típus | Méret bájtban |
Értéktartomány | Alapértelmezett érték | Leírás |
|---|---|---|---|---|
byte |
1 | -128 .. 127 | 0 |
A legkisebb egész típus egy bájt |
short |
2 | -32.768 .. 32.767 | 0 |
Rövid egész szám, két bájt |
int |
4 | -2*10 9 .. 2*10 9 | 0 |
Egész szám, 4 bájt |
long |
8 | -9*10 18 .. 9*10 18 | 0L |
Hosszú egész szám, 8 bájt |
float |
4 | -10 38 .. 10 38 | 0.0f |
Lebegőpontos szám, 4 bájt |
double |
8 | -10 308 .. 10 308 | 0.0d |
Dupla pontosságú lebegőpontos szám, 8 bájt |
boolean |
1 | true,false |
false |
Logikai típus (csak trueés false) |
char |
2 | 0 .. 65.535 | '\u0000' |
Karakterek, 2 bájt, mindegyik nagyobb, mint 0 |
Mellesleg itt van egy fontos árnyalat. Ha deklarál egy példányváltozót (mezőt) vagy egy statikus osztályváltozót, és nem rendel hozzá azonnal értéket, akkor az alapértelmezett értékkel inicializálódik . A táblázat felsorolja ezeket az értékeket.
A metódusban lévő helyi változóknak nincs alapértelmezett értéke. Ha nem rendel értéket az ilyen változókhoz, a rendszer inicializálatlannak tekinti őket, és nem használhatók.
De térjünk vissza a primitív típusokhoz, és nézzük meg őket közelebbről.
2. Egész típusok
A Java-nak 4 egész típusa van: byte, short, intés long. Méretükben és a tárolható értéktartományban különböznek egymástól.
inttípus
A leggyakrabban használt típus a inttípus. A név az int eger (egész szám) szóból származik . Minden egész literál (egész szám) a kódban ints(ha nem végződik L, F, vagy D).
Az ilyen típusú változók értéket vehetnek -2,147,483,648fel +2,147,483,647.
Ez sok, és szinte minden alkalomra elegendő. Szinte minden számot visszaadó függvény egy int.
Példák:
| Kód | Magyarázat |
|---|---|
|
A length()metódus egy karakterlánc hosszát adja vissza |
|
A lengthmező tartalmazza a tömb hosszát. |
shorttípus
A shorttípus a nevét innen kapta short int. Gyakran rövid egész számnak is nevezik . A inttípustól eltérően a hossza mindössze két bájt, a lehetséges értékek tartománya pedig től -ig -32,768terjed +32,767.
Ez azt jelenti, hogy nem tárolhatod benne az egymilliós számot. Vagy akár 50.000. Ez a Java legritkábban használt egész típusa. Használatának fő motivációja a memória megőrzése.
Tegyük fel, hogy van egy olyan helyzet, amikor előre tudja, hogy olyan értékekkel fog dolgozni, amelyek soha nem haladják meg a 30 000-et, és ezekből az értékekből milliónyi lesz.
Tegyük fel például, hogy egy olyan alkalmazást ír, amely ultranagy felbontású képeket dolgoz fel, 10színenként -biteket használva. És egymillió pixel van a képeden. Ez egy olyan forgatókönyv, ahol a használat melletti döntés intszámít short.
longtípus
Ez a típus a nevét innen kapta , és hosszú egész számnaklong int is nevezik . A típustól eltérően mesésen hatalmas értéktartománya van: -tól -ig .int-9*1018+9*1018
Miért nem az alap egész típus?
Mert a Java a 90-es évek közepén jelent meg, amikor a legtöbb számítógép 32 bites volt. Ez azt jelenti, hogy az összes processzort 32 bites számokkal való munkavégzésre optimalizálták. A processzorok 64 bites egész számokkal tudtak dolgozni, de a műveletek lassabbak voltak velük.
Ennek eredményeként a programozók ésszerűen úgy döntöttek, hogy a szabványos egész típust használják int, és csak akkor használják long, ha valóban szükséges.
bytetípus
Ez a legkisebb egész típus a Java-ban, de messze nem a legkevésbé használt. Neve, bytea Java legkisebb címezhető memóriablokkjára is utal.
Nincs annyi érvényes érték a típushoz byte: tól -128-ig +127. De nem ez az erőssége. A bytetípust leggyakrabban akkor használják, ha nagy blobadatokat kell tárolnia a memóriában. Erre a célra egy s tömb byteideális.
Tegyük fel, hogy másolni kell egy fájlt valahova.
Nem kell feldolgoznia a fájl tartalmát: csak létre kell hoznia egy memóriaterületet (puffert), át kell másolnia a fájl tartalmát, majd átírni az adatokat a pufferből egy másik fájlba. Ehhez egy bytetömb kell.
Ne feledje, hogy egy tömbváltozó csak a memória egy területére vonatkozó hivatkozást tárol. Amikor a változót valamilyen metódusnak adjuk át, csak a memóriacím kerül átadásra. Maga a memóriablokk nem másolódik.
byte[] buffer = new byte[1024*1024];
FileInputStream sourceFile = new FileInputStream("c:\\data.txt");
FileOutputStream destFile = new FileOutputStream("c:\\output.txt");
while (true)
{
int size = sourceFile.read(buffer); // Read data from a file into a buffer
destFile.write(buffer, 0, size); // Write data from the buffer to a file
// Stop copying if the buffer is not full
if (size < buffer.length) break;
}
sourceFile.close();
destFile.close();
3. Valódi típusok
A primitív típusok két típust tartalmaznak a valós számok számára. Bár nem teljesen pontos ezt a kifejezést használni. Amikor a számítógépek valós számokat kezelnek, lebegőpontos számoknak hívjuk őket . Az elnevezés a számok ábrázolására szolgáló szabványból származik, amelyben a szám egész és tört részeit pont (pont, nem vessző) választja el.
Minden országnak megvannak a saját szabványai a számok írására (meglepetés!).
one million ones and 153 thousandthsSokan megszokták, hogy pontokat használnak az ezrek elválasztására, vesszőt pedig tizedes elválasztóként: például így írnának 1.000.000,153. De az Egyesült Államokban, ahol a Java alkotói éltek, más szabványt fogadtak el:1000000.153
A Java két lebegőpontos primitív típussal rendelkezik: doubleés float.
Mint korábban említettük, ezeknek a típusoknak nagyon sajátos belső elrendezésük van: valójában ezeknek a típusoknak minden változójában nem egy szám található, hanem kettő:
Például a lebegőpontos szám 987654.321ábrázolható . Ekkor a memóriában két számként jelenik meg (a mantissza , azaz a szám jelentős része) és ( kitevő , azaz tíz hatványa)0.987654321*1069876543216
floattípus
A típus neve a lebegőpontos számbólfloat származik . Ennek a típusnak a mérete meglehetősen kicsi - mindössze 4 bájt (32 bit) -, de től -ig tud értékeket tárolni . 24 bit van lefoglalva a mantisszának, és 8 bit a kitevőnek. Ez a típus mindössze 8 jelentős számjegy tárolására képes.-3.4*10383.4*1038
Ez a megközelítés lehetővé teszi, hogy sokkal nagyobb számokat tároljunk, mint egy int, miközben ugyanazt a 4 bájtot használja. Ennek érdekében azonban feláldozzuk a pontosságot. Mivel a memória egy része a mantisszát tárolja, ezek a változók csak 6-7 tizedesjegyet tárolnak, míg a többit eldobjuk.
Példa:
| Kód | Érték |
|---|---|
|
123.45679 |
|
12346.0 |
|
-1.2345679 |
Amint látja, ennek a típusnak a fő hátránya a nagyon kis számú jelentős számjegy, és a pontosság elvesztése már a nyolcadik számjegynél. Éppen ezért a floattípus nem túl népszerű a Java programozók körében.
doubletípus
A doubletípus a szabványos lebegőpontos típus. A név a dupla pontosságú lebegőpontos számból származik . doubleAlapértelmezés szerint minden valódi literál s.
Ez a típus 8 bájt memóriát (64 bitet) foglal el, és től ig tud értékeket tárolni . Fontos tudnivaló, hogy 53 bit a mantisszához, míg a maradék 11 a kitevőhöz van lefoglalva.-1.7*103081.7*10308
Ez lehetővé teszi 15-17 jelentős számjegy tárolását.
Példa:
| Kód | Érték |
|---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
1234567890.1357913 |
Ez a pontosság, különösen a típushoz képest float, meghatározó: a valós számokkal végzett műveletek 99%-a a doubletípus használatával történik.
11-323bitek vannak lefoglalva a kitevőhöz, ami azt jelenti, hogy tíz -tól -ig hatványokat tárolhat +308(ez kettő -től -ig -1024) +1023. A doubletípus könnyen tárolhat több száz nullát tartalmazó számot a tizedesvessző után:
| Kód | Érték |
|---|---|
|
600.0 |
4. Végtelen
A lebegőpontos számoknak van még egy érdekessége: egy speciális, végtelent jelző értéket tárolhatnak . És képviselheti a pozitív végtelent és a negatív végtelent is .
Példák:
| Kód | jegyzet |
|---|---|
|
|
|
|
|
|
Ha a végtelent megszorozzuk egy számmal, akkor végtelent kapunk. Ha a végtelenhez hozzáadunk egy számot, akkor végtelent kapunk. Ez szuper kényelmes.
Nem szám ( NaN)
Bármely végtelent érintő művelet végtelent eredményez. Nos, a legtöbb, de nem az összes.
A lebegőpontos számok egy másik speciális értéket is tárolhatnak: NaN. A N ot a N umber (nem szám) rövidítése .
A matematikában, ha a végtelent elosztjuk a végtelennel, az eredmény definiálatlan.
De Java nyelven, ha a végtelent elosztja a végtelennel, az eredmény: NaN.
Példák:
| Kód | jegyzet |
|---|---|
|
|
|
|
|
|
NaNBármilyen hozamú művelet NaN.
5. chartípus
A Java primitív típusai közül egy külön figyelmet érdemel: a chartípus. Neve a karakter szóból ered , maga a típus pedig karakterek tárolására szolgál.
A karakterekből állnak a húrok, igaz? A karakterláncok karakterek tömbje.
De még érdekesebb, hogy a chartípus egyben numerikus típus is ! Ez egy kettős célú típus, hogy úgy mondjam.
A valóság az, hogy a chartípus valójában nem karakteres. Ehelyett a Unicode kódolásból származó karakterkódokat tárolja . Minden karakter egy számnak felel meg: a karakter numerikus kódjának.
Minden charváltozó két bájtot foglal el a memóriában (ugyanaz, mint a shorttípus). De a shorttípustól eltérően az charegész típus előjel nélküli, és értékeket tárolhat 0-tól -ig 65,535.
A chartípus hibrid típus. Értékei számként (pl. összeadhatók, szorozhatók) és karakterként is értelmezhetők. Ez azért történt, mert bár a karakterek vizuális ábrázolások, a számítógép számára mindenekelőtt csak számok. És sokkal kényelmesebb velük számként dolgozni.
Unicode
Az Unicode egy speciális táblázat (kódolás), amely a világ összes karakterét tartalmazza. És minden karakternek megvan a saját száma. Körülbelül így néz ki:

Különféle módon lehet értéket rendelni egy változóhoz char.
| Kód | Leírás |
|---|---|
|
A aváltozó a latin betűt fogja tartalmazni A. |
|
A aváltozó a latin betűt fogja tartalmazni A. A kódja a 65. |
|
A aváltozó a latin betűt fogja tartalmazni A. Kódja , ami hexadecimális rendszerben 65egyenlő .41 |
|
A aváltozó a latin betűt fogja tartalmazni A. Kódja , ami hexadecimális rendszerben 65egyenlő . A két plusz nulla nem változtat semmit. 41 |
|
A aváltozó a latin betűt fogja tartalmazni A. Egy másik módszer a karakter kódja alapján történő meghatározására. |
Leggyakrabban az emberek egyszerűen idézőjelbe teszik a karaktert (mint a táblázat első sorában). Ez utóbbi módszer is népszerű. Előnye, hogy húrokban is használható.
És ahogy mondtuk, a chartípus is egész típusú, tehát ilyesmit írhat:
| Kód | Konzol kimenet |
|---|---|
|
A latin betű Bjelenik meg a képernyőn. Mert: A– 65B– 66C–67 |
Munkavégzés chars
Mindegyik charelőször egy szám (karakterkód), majd egy karakter. Ha ismer egy karakterkódot, mindig beszerezheti a karaktert a programjába. Példa:
| Kód | Konzol kimenet |
|---|---|
|
|
Szabványos kódok
Íme a legismertebb karakterkódok:
| Karakterek | Kódok |
|---|---|
0, 1, 2,...9 |
48, 49, 50,...57 |
a, b, c,...z |
97, 98, 99,...122 |
A, B, C,...Z |
65, 66, 67,...90 |
6. booleantípus
És az utolsó primitív típus a boolean.
Mint már tudja, csak két értéket vehet fel: trueés false.
És ezzel már mindent tud, amit erről a típusról tudni lehet.
GO TO FULL VERSION