Tipler ve Degiskenler

Java da veri tiplerini detaylica inceleyecegiz

Konular

  • Veri, Değişken ve tip
  • İlkel Veri tipleri
    • Mantıksal Tip: boolean
    • Karakter Tipi: char
    • Tam sayılar
    • Gerçek Sayılar
    • Sayıların Gösterimleri
  • Karmaşık Veri Tipleri
  • Değişkenler
    • Değişkenlerin Rolleri
    • yerel Değişkenler
    • Heap ve Stack
    • var ile yerel değişken tanımlama
    • Kapsam
  • Tip Çevirimleri
  • Değişmezlik ve Final

Değişken (Variable) – I

  • Programlama dillerinde veri değerlerini (data values) tutan yapılara değişken (variable)(veriybıl) denir.
    • Veri, veri değeri ve değer, aynı anlamda kullanılmaktadır.
  • Değişkenlere değer atanır, bu değerler üzerinde işlemler yapılır ve sıklıkla değerleri değişir.
  • Bu yüzden onlara değişken (variable) denir.

Değişken (Variable) – II

  • Değişkenlerin tutuğu veriler işlemcilerle(operators) işlenir ve yeni değerler üretilir.
  • Değişkenler metotlara geçilip, metotlardan geri döndürülerek veriler program içinde paylaşılır.

Tip (Type)

  • Bir değişkenin alabileceği değerlerin kümesine tip (type) denir.
    • Tam sayılar, kayan tam sayılar, karakterler, doğru-yanlış gibi.
  • Tip, bu değerler kümesine(set), özellikleriyle birlikte verilen isimdir.
  • Tipler, değerler kümesinin tabiatına uygun kurallara sahiptirler.

Veri, Değişken ve Tip

Python ya da JavaScript gibi bazı dillerde tip, veriye ait bir bilgidir, değişkenin tiği yoktur.

Böyle dillerde değişkenler tutuğu verinin tipini alır dolayısıyla verinin tipi değiştikçe değişkenin de tipi değişir.

Python Örneği

Tipli tipsiz dil ayrımı java olmayan dillere örnek python’u örnek aldım.

Python da tip veriye ait bilgidir değişkene ait bir bilgi değildir.

#Error!
#int i =5
#Error!
#float f =5.5
#Error!
#bool e =true

Gördüğünüz gibi pitonda bu şekilde tanımlama yapamazsınız çünkü piton veriden tipini belirlemektedir. (pitonu birazda bu yüzden seviyorum 🙂 )

Şimdide doğrusunu yazalım.

i = 5
print i
print type(i) i değişkeninin veri tipini söyler.
i = 5,5
print i
print type(i)
Output
5 //veri
<type 'int'> //veri tipi5,5<type 'float'> //veri tipi

pitona bu çalışma mantığından dolayı tipsiz (typless) diller diyebiliriz.

Tipsiz ya da Dinamik Tipli Diller

  • Bu şekilde, değişkenlerin derleme zamanında tipinin olmadığı ve çalışma zamanında da verisine bağlı belirlendiği ve değişebildiği dillere tipsiz (typless) ya da dinamik tipli (dynamically-typed) denir.
    • Python, javaScript ve Scala dinamik tipli dillerdendir.
  • Böyle diller derleme zamanında herhangi bir tip analizi de yapmazlar çünkü tip veriye aittir ve veri de bir çalışma zamanı unsurudur.

Tipli ya da Statik Tipli Diller

  • Değişkenlerin tipinin derleme zamanında belirlendiği ve çalışma zamanında değişmediği dillere tipli (typed) ya da statik tipli (statically-typed) denir
  • Böyle diller, Fortran, Pascal, C/C++,C#, Go, derleme ve çalışma zamanında pek çok tip analizi ve kontrolü yapar.
  • Zorunlu olmamakla birlikte derlenen diller tipli, yorumlanan diller tipsiz olma eğilimindedir.

Dolayısı ile Derlenen diller tipli yorumlanan tipler tipsiz olma eylemindedir.

Java Güçlü Tipli Bir Dildir.

  • Bazı statik tipli diller, diğerlerinden daha fazla tip kısıtı ve kuralına sahiptir, bu tür dillere güçlü-tipli(strongly-typed) denir.
  • Java, güçlü- tipli (strongly-typed) bir dildir.
  • Dolayısıyla Java’da her değişkenin derleme zamanında belirlenen bir tipi olmalıdır ve bu tip bir daha asla değişemez.
  • Ayrıca Java tiplerle ilgili sıkı kurallara sahiptir.

Java insanın canını sıkacak kadar tiplere önem vermektedir. Java tiplere önem vermesindeki sebeb ince eleyelim sık dokuyalım mantığında kurulduğu için runtime giderken tüm hataları basalım ve sorunları aşarak perfect bir kod ile gidelim kafasındadır.

Tip Kontrolleri

  • Java derleyicisi ve JVM, verilere ve değişkenlere, tiplerin kural ve kısıtlarını derleme ve çalışma zamanında uygular.
    • Compile-time type checks
    • Run-time type checks
  • Uyumsuzluk durumunda hatalar üretir.
Java da bir örnek ile pekiştirelim.
package lessons.section1;

public class Types {
public static void main(String[] args) {
// i = 5; //error> i must have a type
int i = 5;//succes> i must have a type that is suitable for value 5
//i = "Java"; // error> i can't change its type
}
}

Kodda uyumsuzluk hatalarını comment satırlarında belirttim.

i=5; java uyumsuzluk hatası verirken typless diller de çalışmaktadır.

Java da Doğru yazımı int i =5; olmalıdır.

Tipler – I

  • Java’da yapısı itibariyle iki tür veri tipi vardır:
    • İlkel (basit) tip (primitive type).
      • Bunlara ilkeller (primitives) de denir.
    • Karmaşık tip (complex Type).
    • Bu tiplere, sınıflardan türetildikleri için sınıf(class) ya da nesne (object) tipleri veya nesnelerine referanslarla ulaşıldığı için referans (reference) tipleri de denir.

Object oreatied dillerde iki tip vardır primitive ve complex dir

Karmaşık tipler daima sınıflardan üretilir.

Tipler – II

  • Nesne-merkezli dillerde, idealde sadece karmaşık tiplerin olması beklenir.
  • Yani her verinin tipinin bir sınıf olması ve her değişkenin de bu sınıftan türetilen bir nesneyi göstermesi gerekir.
    • Çünkü, gerçeklik en temelde nesneler ile anlaşılır ve modellenir, tamsayı ya da karakter gibi ilkel tipler gerçekliği ifade etmede sınırlı kalırlar.

Matematik felsefesinde 5 diye birşey yoktur 5 elma 5 şeker daima karmaşık tipler vardır.

Object oriented bir dilde tüm tipler sınıflardan üretilmelidir peki neden primitive tipler vardır. Karakter matematiksel işlemler için 8 primitive tip vardır

Bir yanıt yazın

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