Menu

Java Veri Tipleri: İlkel Tipler, Referans Tipleri ve Varsayılan Değerler

Java'nın veri tipleri açıklanıyor: sekiz ilkel tip, referans tipleri, varsayılan değerler, literaller ve sonekler, taşma (overflow) ve hangi sayısal tipi ne zaman kullanmalı.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

İki Aile: İlkel Tipler ve Referanslar

Java'daki her değerin bir tipi vardır ve bu tip iki aileden birine girer. İlkel tipler ham bir değeri doğrudan tutar: bir sayı, tek bir karakter ya da bir doğru/yanlış. Referans tipleri ise bellekte başka bir yerde duran bir nesneye giden bir referansı (bir işaretçiyi) tutar: String, diziler ve sizin ya da kütüphanelerin tanımladığı her sınıf.

Bu ayrım önemlidir çünkü ilkel tipler hafiftir ve değer ile kopyalanır; referans değişkenleri ise paylaşılan nesnelere işaret eder. Sekiz ilkel tiple başlayın - bunlar diğer her şeyin üzerine inşa edildiği temeldir.

Sekiz İlkel Tip

Java'da tam olarak sekiz yerleşik ilkel tip vardır. Altısı sayı, biri karakter, biri booleandır:

Baştan dikkat edilmesi gereken birkaç şey: 2_000_000 içindeki alt çizgiler derleyicinin yok saydığı yalnızca görsel ayırıcılardır, L ve f sonekleri zorunludur (bununla ilgili daha fazlası aşağıda) ve char tek tırnak kullanırken bir String çift tırnak kullanır.

Sayısal Tip Seçmek

byte veya short'a neredeyse hiç ihtiyacınız olmaz - bunlar yalnızca çok büyük dizilerde bellek tasarrufu sağlar. Asıl kararlar tam sayılar için int/long ve ondalıklar için float/double arasındadır.

TipBoyutNe zaman kullanılır
int32 bitTam sayılar için varsayılan (~2,1 milyara kadar)
long64 bit~2 milyarı aşan değerler: milisaniye zaman damgaları, dosya boyutları
double64 bitOndalıklar için varsayılan - iyi hassasiyet
float32 bitYalnızca bellek kısıtlıysa ve hassasiyetten ödün verilebiliyorsa

Tuzak taşmadır. Bir int, aralığını aştığında sessizce başa sarar - hata yok, sadece yanlış bir sonuç:

maxInt + 1 ifadesi -2147483648 değerine taşar, çünkü her iki işlenen de int'tir ve sonuç da int olarak kalır. Bir tarafı önce long'a dönüştürmek, hesabı 64 bitte yapar. Bir değer büyük olabilecekse - özellikle 1970'ten bu yana geçen milisaniyeler - long'a başvurun.

Literaller ve Sonekleri

Çıplak bir sayı literalinin varsayılan bir tipi vardır ve bu insanları ısırır. 100 bir int'tir; 3.14 bir double'dır. Bir long ya da float literali yazmak için bir sonek eklemeniz gerekir:

8_000_000_000L ifadesinden L'yi çıkarın, kod derlenmez; çünkü literal, long değişkenine ulaşmadan önce int aralığını aşar. 0.5f ifadesinden f'yi çıkarın, Java bir double'ın dönüşüm olmadan bir float'a atanamayacağından şikayet eder. Sonek büyük/küçük harfe duyarsızdır, ancak büyük L kullanın - küçük l, tam olarak 1 rakamına benzer.

char Gizlenmiş Bir Sayıdır

Bir char, 16 bitlik bir Unicode kod birimi saklar; bu da onun aynı zamanda küçük, işaretsiz bir tam sayı gibi davrandığı anlamına gelir. Üzerinde aritmetik yapabilir ve bir dönüşümle ileri geri çevirebilirsiniz:

Bu, harfleri kaydırmak için arada bir kullanışlıdır, ancak metin için buna güvenmeyin - bunun için String vardır. char'ın tek tırnak ('A') kullandığını unutmayın; çift tırnak ("A") tek karakterlik bir String oluşturur ki bu tamamen farklı bir tiptir.

Varsayılan Değerler (ve Yerel Değişken Tuzağı)

İlk değer atamadığınız alanlar ve dizi elemanları makul bir varsayılan değer alır. Ancak bu yalnızca alanlar ve dizi yuvaları için geçerlidir: yerel değişkenler hiçbir varsayılan değer almaz ve bir değer atamadan önce birini kullanmak, çalışma zamanı sürprizi değil, bir derleme hatasıdır.

Bunun yerine main içinde int x; System.out.println(x); yazsaydınız, derleyici bunu "variable x might not have been initialized" diyerek reddederdi. Bu katılık bir avantajdır - çöp veri okumanızı engeller. Aklınızda tutulması gereken varsayılan değerler: sayısal tipler 0, boolean false, char ' ' ve her referans tipi null.

Sıradaki: Strings

String, en çok kullanacağınız referans tipidir: metin, birleştirilmiş değerler, kullanıcı girişi. Buradaki ilkel tiplerden farklı davranır: bir nesnedir, değişmezdir (immutable) ve dizeleri karşılaştırmanın kendine özgü tuzakları vardır. Bir sonraki sayfa bunu ele alıyor.

Sıkça Sorulan Sorular

Java'da kaç veri tipi vardır?

Java'da sekiz ilkel tip vardır: byte, short, int, long, float, double, char ve boolean. Geri kalan her şey - String, diziler ve herhangi bir nesne - bir referans tipidir. Yani yerleşik ilkel sayısı sekizde sabittir; referans tipleri ise sınırsızdır, çünkü siz (ve kütüphaneler) yeni sınıflar tanımlarsınız.

Java'da int ile long arasındaki fark nedir?

Her ikisi de tam sayı tutar ama int 32 bittir (aralık yaklaşık ±2,1 milyar), long ise 64 bittir (aralık yaklaşık ±9,2 kentilyon). Varsayılan olarak int kullanın; bir değer iki milyarı aşabilecekse long'a geçin: milisaniye cinsinden zaman damgaları, dosya boyutları, büyük sayaçlar. Bir long literali L soneki gerektirir, örneğin long big = 10000000000L;.

Java'da bir int'in varsayılan değeri nedir?

int türündeki bir alan varsayılan olarak 0 olur - ancak yalnızca alanlar ve dizi elemanları varsayılan değer alır. Bir long 0L, bir double 0.0, bir boolean false, bir char '\u0000' ve herhangi bir referans tipi null olur. Yerel değişkenler hiçbir varsayılan değer almaz - kullanmadan önce bir değer atamalısınız, yoksa kod derlenmez.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA