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 true ve 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
, short
ve int
. long
Boyutları ve saklayabilecekleri değer aralığı bakımından farklılık gösterirler.
int
tip
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 ints
ile bitmiyorsa ).L
F
D
-2,147,483,648
Bu 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. |
short
tip
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,768
arası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 int
senaryodur short
.
long
tip
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 int
ve bu tipi yalnızca gerçekten gerekli olduğunda kullanmaya karar verdiler long
.
byte
tip
Bu, Java'daki en küçük tamsayı türüdür, ancak en az kullanılandan uzaktır. Adı, byte
aynı zamanda Java'daki adreslenebilir en küçük bellek bloğunun sözcüğüdür.
byte
from -128
to 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 byte
bu 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 byte
dizidir.
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 thousandths
Birç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: double
ve 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.321
olarak 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*106
987654321
6
float
tip
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*1038
3.4*1038
int
Bu 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 float
tür, Java programcıları arasında pek popüler değildir.
double
tip
Tip double
, standart kayan nokta tipidir. Ad, çift duyarlıklı kayan noktalı sayıdan gelir . Tüm gerçek hazır değerler double
varsayı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*10308
1.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 float
belirleyicidir: Gerçek sayılarla yapılan tüm işlemlerin %99'u double
tip kullanılarak gerçekleştirilir.
11
-323
bitler üs için tahsis edilir, bu da from'dan to'ya kadar on'luk kuvvetleri depolayabileceğiniz anlamına gelir (bu, from to'dan +308
ikinin kuvvetidir ). Tür , ondalık noktadan sonra yüzlerce sıfır içeren bir sayıyı kolayca saklayabilir:-1024
+1023
double
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 |
---|---|
|
|
|
|
|
|
NaN
Getirili herhangi bir işlem NaN
.
5. char
tip
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 char
aynı zamanda sayısal bir tür olması ! Bu, tabiri caizse çift amaçlı bir tür.
Gerçek şu ki, char
tip 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 char
değişken bellekte iki bayt yer kaplar (tür ile aynı short
). Ancak short
türün aksine, char
tamsayı türü işaretsizdir ve 0
ile 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 a Latin harfini içerecektir A . |
|
Değişken a Latin harfini içerecektir A . Onun kodu 65 . |
|
Değişken a Latin harfini içerecektir A . Kodu , onaltılık sistemde 65 eşittir .41 |
|
Değişken a Latin harfini içerecektir A . Kodu , onaltılık sistemde 65 eşittir . Fazladan iki sıfır hiçbir şeyi değiştirmez. 41 |
|
Değişken a Latin 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, char
tip aynı zamanda bir tamsayı tipidir, yani şöyle bir şey yazabilirsiniz:
kod | Konsol çıkışı |
---|---|
|
Latin harfi B ekranda görüntülenecektir. Çünkü: A – 65 B – 66 C –67 |
char
s ile çalışmak
Her biri, char
her ş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. boolean
tip
Ve son ilkel tür boolean
.
Bildiğiniz gibi, yalnızca iki değer alabilir: true
ve false
.
Ve bununla, bu tür hakkında bilinmesi gereken her şeyi zaten biliyorsunuz.
GO TO FULL VERSION