İçeriğe geç

Java’da Veri Tipleri (İlkel Veri Tipleri, Referans Veri Tipleri)

Merhaba arkadaşlar,

Bu yazıda Java’da veri tipleri konusunda değineceğim. Eğer Java diline veya herhangi bir dilde programlamaya yeni başladıysanız bu makalenin ardından hemen Sabitler, Değişkenler ve Java’da Kullanılan Anahtar Kelimeler başlıklı makaleyi okumanızı öneririm. Bu makalede yazdığım örnekleri anlamanıza yardımcı olacak temel bilgileri edinmezseniz okuyacaklarınız havada kalacak ve bir süre sonra unutacaksınız.

Veri tipleri değişken tanımlarken değişken içinde saklayacağımız veriyi belirlemek için kullanılır. Kolay anlaşılması açısından örnek verecek olursak; adımızı ve soyadımızı sayısal veri tiplerinde saklayamayız. Veya üzerinde matematiksel işlemler yapacağımız verileri metin tipinde saklayamayız. En başta bu örneği verirsek yanlış olmaz. Bu basit sebebin dışında teknik açıdan bakacak olursak verilerin doğru işlenmesi, işlenirken işlemciyi veya diğer donanımları gereğinden fazla meşgul etmemesi veya amacımız ve ihtiyacımızın dışında işlemler yapıp farklı sonuçlar doğurmaması için veri tiplerine ihtiyacımız var ve onları doğru şekilde kullanmayı bilmeliyiz.

Java’da İlkel (Primitive) ve Referans (Reference) adında 2 grup veri tipi vardır.

İlkel Tipler

Toplam 9 adet ilkel tip vardır. Aşağıdaki tablodan kısaca bilgi edinebilirsiniz.

Tip Adı

Varsayılan Değer

Boyut

Başlangıç Değeri

Bitiş Değeri

byte

0

8 bit

-128

127

short

0

16 bit

-215 (-32768)

215-1 (32767)

int

0

32 bit

-231 (-2147483648)

231-1 (2147483647)

long

0

64 bit

-263 (-9223372036854775808)

263-1 (9223372036854775807)

float

0.0f

32 bit

2-149

(2-2-23)·2127

double

0.0d

64 bit

2-1074

(2-2-52)·21023

char

\u0000

16 bit

0

216-1

boolean

false

1 bit

false

True

 

Not: Sayısal veri tiplerinde baştaki ilk bit işaret biti olarak kullanılır.

byte: Küçük sayılar saklamak için kullanılır. 8 bitten oluşur. -128 ile 127 arasında tamsayı saklayabilir. Varsayılan değeri 0’dır.

short: Byte’a göre biraz daha büyük sayılar için kullanılır. 16 bitten oluşur.

int: 32 bitten oluşur ve -2 milyar ile +2 milyar arasındaki sayılar için kullanılır. Bilinçsizce orta ölçekli yazılımlarda çokça kullanıldığı görülmektedir.

long: 64 bitten oluşur. Tamsayı cinsinden en büyük veri tipidir. Yazılırken değerin sonuna L yazılması zorunludur. L yazılmazsa int tipinde algılanır. int tipinde algılanırsa 2 ihtimal doğar. Eğer sayı int tipine uygun bir büyüklükteyse siz farkına bile varmadan hata vermeden çalışmaya devam eder. Eğer int tipinin aralığından büyük veya küçük bir sayı ise “Error:(x, y) java: integer number too large: 10000000000” şeklinde hata verir.

Not: JavaSE 7 ve sonrasında sayısal veri tiplerinde “_” (altçizgi) kullanılabilmektedir.

float: 32 bitten oluşan ondalıklı veri tipidir. Küçük sayılarda sonunda f koymak zorunlu değildir ama büyük sayılarda koyulması gerekmektedir. Sayının sonuna f koyulmadığı zaman long’da olduğu gibi hata verir.

double: 64 bitten oluşan ondalıklı veri tipidir. Çok büyük sayılar için kullanılır. float veri tipinde olduğu gibi küçük sayılarda sonuna d koyulmasa da olur ama büyüklerde koyulması zorunludur. double veri tipi float veri tipinden daha büyük olduğu için double tanımlarken sonuna f koysanız sayı float veri tipinin gerekli aralığına girdiği sürece hata vermez.

Not: Java float ve double veri tipleri için IEEE 754 standardını kullanır.

char: 16 bit uzunluğundadır ve sadece tek bir karakter barındırabilir. Harf, sayı, nokta, yıldız, tilda, artı işareti vb. herhangi bir karakteri barındırabilir. Değer atanırken tek tırnak içinde yazılması zorunludur.

boolean: 1 bit uzunluğunda sadece true veya false değerlerini alabilen veri tipidir.

Referans Tipler

Temelde 3 tane referans tip vardır. Bu 3 temel tip kendi altlarında farklı tipler barındırır.

Tip Adı

Varsayılan Değer

Class

null

Array

null

Interface

null

Konumuz veri tipleri olduğu için şimdilik sadece ilkel veri tiplerinin referans tiplerdeki karşılıklarına değineceğim. 

İlkel Hali Referans Hali
byte Byte
char Character
short Short
int İnt
long Long
float Float
double Double
boolean Boolean
Void

Not: Void (ya da void) bir veri tipi değildir. İlkel veri tiplerinde void yokken referans veri tiplerinde Void adında bir sınıf var. Sınıfın var olması bu tipi kullanabileceğimiz anlamına gelmiyor. Oracle firmasının bu linkteki açıklamasını okumanızı öneririm.

Note that the Java programming language does not allow a “cast to void” – void is not a type – so the traditional C trick of writing an expression statement such as:

Veri tiplerinin açıklamasını yukarıda yaptığım için tekrardan hepsi için yeni bir açıklama yapmayacağım. Şimdi her veri tipi için bir örnek yapıp bilgilerimizi pekiştirelim.

Gördüğünüz gibi her veri tipinden bir örnek yaptık. Dikkat ettiyseniz eğer referans veri tiplerini oluştururken "new" anahtar kelimesini kullandık. İlkel veri tiplerinin referans tipindeki karşılıkları sınıf olduğu için oluşturulurken eşittir işaretinden sonra “new” yazmamız gerekiyor. Bu konuya sınıflar konusunu işlerken daha sonra değineceğiz (Makaleyi yazdıktan sonra burada link vereceğim).

Not: Float, Double, Long sayılarından sonra koymamız gereken harfler büyük veya küçük olabilir. Tamamen sizin tercihinize kalmış durumda.

Not: Eğer bir sayı float sınırları içindeyse tanımlama sırasında o sayının sonuna "f" koymanıza gerek yoktur. Derleyici otomatik olarak onun float olduğunu anlayacak ve hata vermeyecektir.

Örnekleri verirken bilerek hatalı bazı örnekler de yazdım. Aklınıza “Bazı sınıfları doğrudan değer vererek tanımlarken neden bazılarını tip dönüşümü yaptıktan sonra tanımlayabiliyoruz ?” diye bir soru takılmış olabilir. Hiç bekletmeden hemen cevabını vereyim. Hata mesajında açıkça sebebini söylenmiş aslında. Hata mesajlarında derleyici bize gelen sayının hangi tipte olup olmadığını anlayamadığını söylüyor. Biz herhangi bir tam sayı yazdığımızda derleyici onu otomatik olarak int tipinde algılıyor. int tipinin sınırları byte ve short tipini çok aştığı için bizden dönüştürerek vermemizi istiyor.

Veri tiplerini öğrendiğimize göre bilmemiz gereken bir konu daha çıktı. Tanımladığımız değişkenler bellekte nerede saklanıyor ? İlkel tipler belleğin stack kısmında, referans tipler ise heap kısmında saklanır.

Aklınıza takılan bir soru olursa yorum yazarak veya iletişim kısmından mail yazarak sorularınızı iletebilirsiniz. Gerekli gördüğüm taktirde daha farklı örnekler de ekleyerek makaleyi güncelleyebilirim.

Faydalı olması dileğiyle..

Kategori:JavaMasaüstü Programlama

2 Yorum

  1. mustafa mustafa

    Referans tipler için verdiğiniz örnekler hata veriyor hocam.

    Byte byte_2 = new Byte((byte) 27); //bu şekildeki tanımlamalara kızıyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

12 − ten =