1. İlkel türlerin listesi
Java'nın 8 temel ilkel türü vardır. İlkel olarak adlandırılır çünkü bu türlerin değerleri nesne değildir ve doğrudan değişkenlerin içinde depolanır.
İşte bu türler hakkında bazı kısa bilgiler içeren bir tablo:
| Tip | Bayt cinsinden boyut |
Değer aralığı | Varsayılan değer | Tanım |
|---|---|---|---|---|
byte |
1 | -128 .. 127 | 0 |
En küçük tamsayı türü tek bir bayttır |
short |
2 | -32.768 .. 32.767 | 0 |
Kısa tamsayı, iki bayt |
int |
4 | -2*10 9 .. 2*10 9 | 0 |
Tamsayı, 4 bayt |
long |
8 | -9*10 18 .. 9*10 18 | 0L |
Uzun tamsayı, 8 bayt |
float |
4 | -10 38 .. 10 38 | 0.0f |
Kayan noktalı sayı, 4 bayt |
double |
8 | -10 308 .. 10 308 | 0.0d |
Çift duyarlıklı kayan nokta sayısı, 8 bayt |
boolean |
1 | true,false |
false |
Boole türü (yalnızca trueve false) |
char |
2 | 0 .. 65.535 | '\u0000' |
Karakterler, 2 bayt, tümü 0'dan büyük |
Bu arada, işte önemli bir nüans. Bir örnek değişken (alan) veya bir statik sınıf değişkeni bildirir ve ona hemen herhangi bir değer atamazsanız, varsayılan bir değerle başlatılır . Tablo, bu değerlerin bir listesini sunar.
Bir yöntemdeki yerel değişkenlerin varsayılan değeri yoktur. Bu tür değişkenlere bir değer atamazsanız, başlatılmamış kabul edilirler ve kullanılamazlar.
Ama ilkel türlere geri dönelim ve onlara daha yakından bakalım.
2. Tam sayı türleri
Java'nın 4 tamsayı türü vardır : byte, shortve int. longBoyutları ve saklayabilecekleri değer aralığı bakımından farklılık gösterirler.
inttip
En sık kullanılan tiptir int. İsim int eger (tam sayı) kelimesinden gelir . Koddaki tüm tamsayı hazır değerleri (tam sayılar) (eğer bir , veya intsile bitmiyorsa ).LFD
-2,147,483,648Bu türdeki değişkenler ile arasında değerler alabilir +2,147,483,647.
Bu çok fazla ve neredeyse her durum için yeterli. Bir sayı döndüren hemen hemen her işlev bir int.
Örnekler:
| kod | Açıklama |
|---|---|
|
Yöntem length(), bir dizenin uzunluğunu döndürür |
|
Alan length, dizinin uzunluğunu içerir. |
shorttip
Tür short, adını short int. Genellikle kısa tamsayı olarak da adlandırılır . Türün aksine int, uzunluğu yalnızca iki bayttır ve olası değerlerin aralığı ile -32,768arasındadır +32,767.
Bu, içinde bir milyon rakamı saklayamayacağınız anlamına gelir. Hatta 50.000. Bu, Java'da en nadiren kullanılan tamsayı türüdür. Bunu kullanmanın ana motivasyonu hafızayı korumaktır.
Asla 30.000'i geçmeyen değerlerle çalışacağınızı ve bu değerlerden milyonlarca olacağını önceden bildiğiniz bir durum olduğunu varsayalım.
10Örneğin, renk başına -bit kullanan ultra yüksek tanımlı resimleri işleyen bir uygulama yazdığınızı varsayalım . Ve resminizde bir milyon piksel var. Bu, kullanma kararının önemli olduğu bir intsenaryodur short.
longtip
Bu tür, adını bir uzun tamsayıdan alır ve aynı zamanda uzun bir tamsayılong int olarak da adlandırılır . Türün aksine , inanılmaz derecede muazzam bir değer aralığına sahiptir: from to .int-9*1018+9*1018
Neden temel tamsayı türü değil?
Çünkü Java, çoğu bilgisayarın 32 bit olduğu 90'ların ortalarında ortaya çıktı. Bu, tüm işlemcilerin 32 bitten oluşan sayılarla çalışacak şekilde optimize edildiği anlamına gelir. İşlemciler 64 bitlik tamsayılarla çalışabilir, ancak onlarla yapılan işlemler daha yavaştı.
Sonuç olarak, programcılar makul bir şekilde standart tamsayı tipini oluşturmaya intve bu tipi yalnızca gerçekten gerekli olduğunda kullanmaya karar verdiler long.
bytetip
Bu, Java'daki en küçük tamsayı türüdür, ancak en az kullanılandan uzaktır. Adı, byteaynı zamanda Java'daki adreslenebilir en küçük bellek bloğunun sözcüğüdür.
bytefrom -128to türü için çok fazla geçerli değer yok +127. Ama bu onun gücü değil. Tür byte, çoğunlukla büyük bir blob verisini bellekte depolamanız gerektiğinde kullanılır. Bir s dizisi bytebu amaç için idealdir.
Diyelim ki bir dosyayı bir yere kopyalamanız gerekiyor.
Dosyanın içeriğini işlemeniz gerekmez: sadece bir bellek alanı (arabellek) oluşturmak, dosyanın içeriğini buraya kopyalamak ve ardından bu verileri arabellekten başka bir dosyaya yazmak istiyorsunuz. Bunun için ihtiyacınız olan şey bir bytedizidir.
Bir dizi değişkeninin yalnızca bir bellek alanına başvuru sakladığını unutmayın. Değişken bir yönteme geçirildiğinde, yalnızca bellek adresi iletilir. Bellek bloğunun kendisi kopyalanmaz.
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. Gerçek tipler
İlkel türler, gerçek sayılar için iki tür içerir. Bu terimi kullanmak tamamen doğru olmasa da. Bilgisayarlar gerçek sayıları ele aldığında onlara kayan noktalı sayılar diyoruz . Ad, bir sayının tamsayı ve kesirli bölümlerinin bir noktayla (virgül değil, nokta) ayrıldığı sayıları temsil eden bir standarttan gelir.
Her ülkenin sayıları yazmak için kendi standartları vardır (sürpriz!).
one million ones and 153 thousandthsBirçok kişi, binleri ayırmak için nokta ve ondalık ayırıcı olarak virgül kullanmaya alışkındır: örneğin, olarak yazarlardı 1.000.000,153. Ancak Java'nın yaratıcılarının yaşadığı Amerika Birleşik Devletleri'nde farklı bir standart benimsendi:1000000.153
Java'nın iki kayan nokta ilkel türü vardır: doubleve float.
Daha önce de söylediğimiz gibi, bu türlerin çok özel bir iç düzenlemesi vardır: Aslında bu türlerin her değişkeninin içinde bir sayı değil, iki tane vardır:
Örneğin, kayan noktalı sayı 987654.321olarak temsil edilebilir . Daha sonra bellekte iki sayı ( mantis , yani sayının önemli kısmı) ve ( üs , yani on'un kuvveti) olarak temsil edilecektir.0.987654321*1069876543216
floattip
Türün adı kayan nokta numarasındanfloat gelir . Bu türün boyutu oldukça küçüktür — yalnızca 4 bayttır (32 bit) — ancak ile arasındaki değerleri depolayabilir . Mantisi temsil etmek için 24 bit ve üssü temsil etmek için 8 bit tahsis edilir. Bu tür, yalnızca 8 önemli basamak saklayabilir.-3.4*10383.4*1038
intBu yaklaşım , aynı 4 baytı kullanırken bir 'den çok daha büyük sayıları depolamayı mümkün kılar . Ancak bunu yapmak için doğruluktan ödün veriyoruz. Hafızanın bir kısmı mantisayı sakladığından, bu değişkenler sadece 6-7 ondalık haneyi saklarken geri kalanı atılır.
Örnek:
| kod | Değer |
|---|---|
|
123.45679 |
|
12346.0 |
|
-1.2345679 |
Gördüğünüz gibi, bu türün ana dezavantajı, çok az sayıda önemli basamak ve sekizinci basamakta kesinlik kaybıdır. Bu nedenle floattür, Java programcıları arasında pek popüler değildir.
doubletip
Tip double, standart kayan nokta tipidir. Ad, çift duyarlıklı kayan noktalı sayıdan gelir . Tüm gerçek hazır değerler doublevarsayılan olarak s'dir.
Bu tür, 8 bayt bellek (64 bit) kaplar ve ile arasındaki değerleri depolayabilir . Bilinmesi gereken önemli bir şey, mantis için 53 bit, kalan 11 bit ise üs için ayrılmıştır.-1.7*103081.7*10308
Bu, 15-17 önemli basamağın saklanmasına izin verir.
Örnek:
| kod | Değer |
|---|---|
|
1234567890.1234567 |
|
1234567890.1234512 |
|
1234567890.1357913 |
Bu kesinlik, özellikle tipe kıyasla floatbelirleyicidir: Gerçek sayılarla yapılan tüm işlemlerin %99'u doubletip kullanılarak gerçekleştirilir.
11-323bitler üs için tahsis edilir, bu da from'dan to'ya kadar on'luk kuvvetleri depolayabileceğiniz anlamına gelir (bu, from to'dan +308ikinin kuvvetidir ). Tür , ondalık noktadan sonra yüzlerce sıfır içeren bir sayıyı kolayca saklayabilir:-1024+1023double
| kod | Değer |
|---|---|
|
600.0 |
4. Sonsuzluk
Kayan noktalı sayıların bir başka ilginç özelliği daha vardır: sonsuzu ifade eden özel bir değer saklayabilirler . Ve pozitif sonsuzu ve negatif sonsuzu temsil edebilirsiniz .
Örnekler:
| kod | Not |
|---|---|
|
|
|
|
|
|
Sonsuzluk bir sayı ile çarpılırsa sonsuzluk elde edilir. Sonsuza bir sayı eklerseniz, sonsuz elde edersiniz. Bu çok uygun.
Sayı değil ( NaN)
Sonsuzluğu içeren herhangi bir işlem sonsuzluğu verir. Hepsi olmasa da çoğu.
Kayan noktalı sayılar başka bir özel değeri saklayabilir: NaN. N ot a N umber (sayı değil) ifadesinin kısaltmasıdır .
Matematikte sonsuzu sonsuza bölerseniz sonuç tanımsızdır.
Ancak, Java'da sonsuzluğu sonsuza bölerseniz, sonuç NaN.
Örnekler:
| kod | Not |
|---|---|
|
|
|
|
|
|
NaNGetirili herhangi bir işlem NaN.
5. chartip
Java'nın ilkel türleri arasında , biri özel ilgiyi hak ediyor: tür char. Adı char acter kelimesinden gelir ve türün kendisi karakterleri depolamak için kullanılır.
Karakterler, dizelerin yapıldığı şeydir, değil mi? Dizeler bir karakter dizisidir.
Ama daha da ilginç olanı, türün charaynı zamanda sayısal bir tür olması ! Bu, tabiri caizse çift amaçlı bir tür.
Gerçek şu ki, chartip aslında karakter değil. Bunun yerine, Unicode kodlamasından karakter kodlarını saklar . Her karakter bir sayıya karşılık gelir: karakterin sayısal kodu.
Her chardeğişken bellekte iki bayt yer kaplar (tür ile aynı short). Ancak shorttürün aksine, chartamsayı türü işaretsizdir ve 0ile arasındaki değerleri depolayabilir 65,535.
Tip char, hibrit bir tiptir. Değerleri hem sayı olarak (örn. toplanabilir ve çarpılabilir) hem de karakter olarak yorumlanabilir. Bu, karakterlerin görsel temsiller olmasına rağmen, bir bilgisayar için her şeyden önce sadece sayılar olduğu için yapıldı. Ve onlarla sayı olarak çalışmak çok daha uygun.
Unicode
Unicode, dünyadaki tüm karakterleri içeren özel bir tablodur (kodlama). Ve her karakterin kendi numarası vardır. Yaklaşık olarak şuna benziyor:

Bir değişkene değer atamanın farklı yolları vardır char.
| kod | Tanım |
|---|---|
|
Değişken aLatin harfini içerecektir A. |
|
Değişken aLatin harfini içerecektir A. Onun kodu 65. |
|
Değişken aLatin harfini içerecektir A. Kodu , onaltılık sistemde 65eşittir .41 |
|
Değişken aLatin harfini içerecektir A. Kodu , onaltılık sistemde 65eşittir . Fazladan iki sıfır hiçbir şeyi değiştirmez. 41 |
|
Değişken aLatin harfini içerecektir A. Bir karakteri koduyla tanımlamanın başka bir yolu. |
Çoğu zaman, insanlar karakteri tırnak içinde belirtirler (tablonun ilk satırında olduğu gibi). Bununla birlikte, ikinci yöntem de popülerdir. Avantajı, dizilerde kullanılabilmesidir.
Ve dediğimiz gibi, chartip aynı zamanda bir tamsayı tipidir, yani şöyle bir şey yazabilirsiniz:
| kod | Konsol çıkışı |
|---|---|
|
Latin harfi Bekranda görüntülenecektir. Çünkü: A– 65B– 66C–67 |
chars ile çalışmak
Her biri, charher şeyden önce bir sayıdır (karakter kodu), sonra bir karakterdir. Bir karakter kodunu biliyorsanız, karakteri programınızda her zaman alabilirsiniz. Örnek:
| kod | Konsol çıkışı |
|---|---|
|
|
standart kodlar
İşte en iyi bilinen karakter kodları:
| Karakterler | Kodlar |
|---|---|
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. booleantip
Ve son ilkel tür boolean.
Bildiğiniz gibi, yalnızca iki değer alabilir: trueve false.
Ve bununla, bu tür hakkında bilinmesi gereken her şeyi zaten biliyorsunuz.
GO TO FULL VERSION