Java Temel Veri Tipleri
Veri tipleri verilerin(tam sayılar,ondalıklı sayılar,harfler ve benzeri.) bilgisayar üzerinde ki modellemesidir diyebiliriz.Veri tipleri tüm programlama dillerinde vardır fakat her programlama dili veri tiplerini farklı şekilde yorumlayabilir.Veri tipinin özelliği ise bellekte tuttukların alanın sabit olmasıdır diyebiliriz.
Veri tiplerini değişken tanımlarken kullanırız ve java da tip-güvenli(type-safe) bir dil olduğu için değişken oluştururken mutlaka veri tipini belirtmek zorundayız.Java’da veri tipleri 3′e ayrılır.Bunlar ;
- İlkel(Primitif) veri tipleri
- Referans tipler
- Null Veri tipi
Veri tipi kavramını biraz daha açacak olursak.Eski programlama dillerinde veri tipleri ait oldukları programlama diline gömülü(built-in-types) ögelerdi,her bir veri tipi bir anahtar sözcük ile belirtilirdi.
Ama Java gibi nesneye yönelimli programlama dillerinde veri tiplerinin hepsi bir sınıftır ancak çok sık kullanıldıkları için Java bazı veri tiplerine ayrıcalık tanır bu türden veri tiplerine temel(primitif) veri tipleri denir.Java dili bu veri tiplerine onlara ait nesneler yaratılmaksızın kullanılmasına olanak sağlar.
İLKEL(Primitif) VERİ TİPLERİ
Java dilinde ki ilkel veri tipleri aşağıda ki gibidir diyebiliriz ;
-
- Tamsayılar
- Ondalıklı Sayılar
- Karakterler
- Mantıksal tipler
İlkel Veri Tipi | Uzunluk | Minumum Deger | Maksimum Deger | Gömüldügü Sınıf | Varsayılan Deger |
char | 16 bit | unicode 0 | unicode 216-1 | Character | ‘\u0000′ |
long | 64 bit | -263 | 263-1 | Long | 0l |
int | 32 bit | -231 | 231-1 | Integer | 0 |
short | 16 bit | -215 | 215-1 | Short | 0 |
byte | 8 bit | -27 | 27-1 | Byte | 0 |
double | 64 bit | -3.4*1038 | 3.4*1038 | Double | 0.0d |
float | 32 bit | – 1.7*1038 | 1.7*1038 | Float | 0.0f |
boolean | 1 bit | Boolean | false |
TAMSAYILAR
Burada ki ilkel veri tiplerini tam sayılar için kullanırız ve bellekte tuttukları alana göre 4 çeşit tam sayılar için kullanabileceğimiz ilkel veri tipi vardır.Bunlar ;
-
-
- byte
- short
- int
-
1.)byte :Bu ilkel veri tipi tam sayılar için en küçük tam sayı tipidir.Byte veri tipi bellekte 8 bit yer kaplarlar.8 bitlik alanda da 256(28) farklı değer tutabiliriz.
NOT : Java dilinde tüm sayı tipleri işaret bilgisini de içerdiğinden bu bitlerden bir tanesi işaret bilgisini tutmak için ayrılır.
Bu yüzden byte tipini kullanan değişkenler -128(-27) ile 127(27-1) arasında değer alabilir.
2.)short :Bu ilkel veri tipi kısa tam sayıları tutar.Bellekte 16 bitlik yer tutar.-215 ile 215-1 arasında deger alabilir.
3.)int :Bu ilkel veri tipi orta uzunlukta tam sayıları tutar.Bellekte 32 bitlik yer tutar.-231 ile 231-1 arasında değer alabilir.
4.)long :Bu ilkel veri tipi çok uzun tam sayıları içindir.Bellekte 64 bitlik yer tutar.-263 ile 263-1 arasında deger alabilir.
NOT : long ilkel veri tipinde bir değişken tanımlayıp buna da değer atarken değere litarelini(l) atamamız gerekir.Örnegin. ;
1
|
long uzunDeger = 64l ; |
ONDALIKLI SAYILAR
Burada ki veri tiplerini ondalıklı sayılar için kullanırız ve bellekte tuttukları alana göre 2 çeşit ondalıklı sayılar için kullanabileceğimiz ilkel veri tipi vardır.Bunlar ;
-
-
- float
- double
-
NOT : Java ondalıklı sayıları bilgisayar ortamında depolayabilmek için java dili standartlarından IEEE 754 olanını benimser.
1.)float :Bu ilkel veri tipi bellekte 32 bitlik yer tutar.-3.4*1038 ile 3.4*1038 arasında değer alabilir ve bu değişken ondalıklı sayıların ondalık kısmı için 7 haneye kadar duyarlılıkta olabilir.
NOT :float veri tipinde bir değişken tanımlayıp buna da değer atarken değere litarelini(f) atamamız gerekir.Örnegin. ;
1
|
floatondalikliDeger = 64 .123f ; |
2.)double :Bu ilkel veri tipi bellekte 64 bitlik yer tutar.-1.7*10308 ile 1.7*10308 arasında değer alabilir ve bu değişken ondalıklı sayıların ondalık kısmı için 17 haneye kadar duyarlılıkta olabilir.
NOT :double veri tipinde bir değişken tanımlayıp buna da değer atarken değere litarelini(d) atamamız gerekir.Örneğin. ;
1
|
doubleondalikliDeger1 = 64 .123d ; |
KARAKTERLER
1.)char :Karakterler için kullanılır.Bellekte 16 bitlik yer kaplarlar.char ilkel veri tipi unicode karakter setinde karakterlere karşılık gelen işaretsiz tam sayı değerine sahip olduğundan dolayı bu veri tipine sahip değişkenlerle çeşitli aritmetik işlemler ve büyüktür küçüktür gibi karşılaştırmalar yapılabilir.
NOT : char veri tipine sahip değişkene maxsimum bir karakter verebiliriz. Örnegin. ;
1
2
|
charseciliHarfimiz = ‘ab’ ; //Hata verir charseciliHarfimiz = ‘a’ ; //Hatasız çalışır |
NOT :char ilkel veri tipinde bir değişken tanımlayıp buna da değer atarken değeri tek tırnak(‘) içinde atamamız gerekir.Örneğin. ;
1
|
charseciliHarfimiz = ‘a’ ; |
NOT :Çok yapılan bir yanlıştan bahsetmek istiyorum String ilkel(primitif) veri tipi değildir, String karakter kümelerini(katarlarını) tutmak için tasarlanmış bir sınıftır ve yazının ilerleyen kısımlarında bu sınıftan bahsedeceğim.
MANTIKSAL TİPLER
1.)boolean :Mantıksal işlemlerin sonuçlarını tutmak için kullanılan ve sadece true veya false diye iki değer alabilen veri tipidir.Bellekte 1 bit yer kaplarlar.
REFERANS TİPLERİ
En başta dediğim gibi nesneye yönelimli programlama dilinin temeli sınıf(class) mantığına dayanır ve java da veri tipi olarak sınıflarımız vardır.Bu veri tiplerinden bahsedecek olursak bizim ilkel(primitive) veri tiplerimizin birer tane gömüldüğü sınıf vardır.Bunlar Byte,Short,Integer,Double,Character,Float,Double,Boolean sınıflarıdır peki diyebiliriz ki ilkel veri tipleri varsa neden sınıf olan veri tiplerine ihtiyacımız var ya da sınıf veri tiplerimiz varsa neden ilkel veri tiplerine ihtiyacımız var bunların farkı nelerdir,İlkel veri tipleri ile sınıf veri tiplerinin farkını int ilkel tipi ile Integer veri tipi arasında ki farkı göstererek anlatmaya çalışım;
-
- İnt bir primitif veri tiptir Integer ise bir nesnedir
- Integer bir değişken olduğu için null değeri verilebilir ama int’e verilmez.
- Integer tipinde bir değişken java.lang.Integer sınıfında ki metotları kullanabilir,int ise kullanamaz.
- Integer tipinde ki değişkenleri bir vektör ya da koleksiyon içerisinde tutabiliriz ama int ile bunu yapamayız.
- Primitif veri tipleri(byte,short,int,double,float,double,char,boolean) bir nesne olmadığı için serialize(serileştirme) işlemine tutamayız.
- Integer gibi sınıflar immutable (değişmez) özelliğe sahiptirler, sıradan nesneler gibi davranmazlar.
Aynı benzer durumlar byte-Byte,short-Short,int-Integer,float-Float,double-Double,char-Character,boolean-Boolean için de geçerlidir.
NOT : Java derleyicisi gerektiğinde tanımlanan her ilkel veriyi ait olduğu sınıfa otomatik olarak gömer buna kutulama(boxing) denilir ya da derleyici gerektiğinde bir sınıf nesnesini ilkel veri tipine döndürür buna da kutu açma(unboxing) denilir.Her iki işlemi de Java derleyicisi kendiliğinden otomatikman yapar.
Yukarı da saydıklarımızdan farklı olarak karakter kümeleri(katarları) için kullanılan veri tiplerinden de bahsedecek olursak biraz.
KARAKTER KÜMELERİ(Katarları)
String Sınıfı
Karakter kümelerini yani birden fazla karakterin bir araya gelerek oluşturduğu değişkenler için kullanılan veri tipidir.String veri tipi primitif veri tipi olmadığını söylemiştik String karakter kümelerini tutmak için tasarlanmış özelleşmiş bir sınıftır.
NOT : String veri tipinde bir değişken tanımlayıp buna da değer atarken değeri çift tırnak(“) içinde atamamız gerekir.Örneğin;
1
|
StringseciliKelimemiz = "mustafa" ; |
StringBuffer Sınıfı
Java’da String sınıfının değerleri değişmez(immutable)olarak tanımlanmıştır.Yani String tipinden bir değişkene bir değer atadığımız da bu değişkenin değeri artık değişmez.Bu değişkenlerin değerlerinin değişmesi için ise derleyici(JDK) StringBuffer sınıfını kullanır.StringBuffer sınıfı JDK içerisinde bulunan bir sınıftır ve bize dinamik karakter kümeleri oluşturmamıza izin verir.Bir örnek verecek olursak ;
1
|
String ifade = " Merhaba" + " Java" ; |
Bu ifade arka planda da aşağıda ki kod gibi çalışır ;
1
|
String ifade = new StringBuffer().append( "Merhaba" ).append( " Java" ).toString(); |
{fcomment}