Java programlama dilini öğrenmeye başlarken atmanız gereken ilk ve en önemli adım, verilerin bilgisayar ortamında nasıl saklandığını ve işlendiğini anlamaktır. Bir bilgisayar programının temel amacı verileri manipüle etmektir; bunu yapabilmek için de verileri geçici olarak hafızada (RAM) tutmamız gerekir. Makine dilinde verilere sayısal bellek adresleri ile ulaşılırken, Java gibi yüksek seviyeli dillerde bu adreslerin yerine akılda kalıcı isimler, yani “değişkenler” kullanılır.
Java’da Değişken (Variable) Nedir?
Bir değişkeni, içine daha sonra kullanmak veya değiştirmek üzere veri koyabileceğiniz bir “kutu” (veya kap) olarak düşünebilirsiniz. Bu kutunun bir ismi vardır ve programın ilerleyen aşamalarında bu ismi çağırarak içindeki veriye ulaşabilir veya veriyi güncelleyebilirsiniz. İçindeki veri zamanla değişebileceği için bu yapılara “değişken” adı verilir. Ancak değişken, içindeki verinin kendisi değil, o verinin saklandığı hafıza konumunu işaret eden bir referanstır.
Değişken İsimlendirme Kuralları (Identifiers) Java’da bir değişkene isim verirken uymanız gereken bazı kesin kurallar (sözdizimi kuralları) ve yazılım dünyasında kabul görmüş bazı gelenekler vardır:
- Bir değişken ismi harf veya alt çizgi (
_) ile başlamak zorundadır; kesinlikle bir rakamla başlayamaz. - İsimlendirmede harfler, rakamlar, alt çizgiler ve dolar işareti (
$) kullanılabilir, ancak boşluk kullanılamaz. - Java büyük/küçük harf duyarlı (case-sensitive) bir dildir. Yani
Sayi,sayiveSAYIbilgisayar için tamamen birbirinden farklı üç ayrı değişkendir. class,public,int,ifgibi Java’ya özgü ayrılmış anahtar kelimeler (keywords) değişken ismi olarak kullanılamaz.- İyi Kodlama Pratiği: Değişken isimlerinin küçük harfle başlaması ve birden fazla kelimeden oluşuyorsa (örneğin
faizOraniveyaogrenciYasi) ikinci kelimenin ilk harfinin büyük yazılması (Camel Case) Java dünyasında yaygın bir gelenektir.
Java’da Veri Tipleri (Data Types)
Java, “sıkı tipli” (strongly typed) bir dildir. Bu, Java’da tanımlanan her değişkenin hangi türde veri tutacağının (tam sayı mı, ondalıklı sayı mı, metin mi?) en başından kesin olarak belirtilmesi gerektiği anlamına gelir. Eğer bir değişkenin içine, onun tanımlanmış tipinden farklı bir veri koymaya çalışırsanız, Java derleyicisi bu duruma izin vermez ve bir sözdizimi (syntax) hatası fırlatır. Bu katı kural, programın daha güvenli (robust) olmasını ve olası hataların program çalışmadan önce yakalanmasını sağlar.
Java’da veri tipleri temelde “İlkel (Primitive) Tipler” ve “Referans (Gelişmiş) Tipler” olmak üzere ikiye ayrılır.
1. İlkel (Primitive) Veri Tipleri
İlkel tipler, nesne (object) yönelimli hiyerarşinin dışında tutulan, bellekte çok az yer kaplayan ve performansı artırmak amacıyla tasarlanmış en temel veri tipleridir. Java’da toplam 8 adet ilkel veri tipi bulunur. Taşınabilirlik (portability) ilkesi gereği, bu veri tiplerinin bellekte kapladıkları alan işletim sistemine göre değişmez; her platformda sabittir.
A) Tamsayılar (Integers): Küsuratı olmayan tam sayı değerlerini tutarlar.
- byte: 8-bit uzunluğundadır. -128 ile 127 arasındaki küçük sayıları tutabilir. Dosya veya ağ üzerinden gelen ham veri akışlarında (stream) sıklıkla kullanılır.
- short: 16-bit uzunluğundadır. -32.768 ile 32.767 arasındaki sayıları tutar.
- int: 32-bit uzunluğundadır. -2.147.483.648 ile 2.147.483.647 arasında çok geniş bir aralığa sahiptir. Günlük programlamada tamsayılar için en çok kullanılan, standart (default) veri tipidir.
- long: 64-bit uzunluğundadır.
inttipinin sınırlarını aşan çok büyük sayılar (örneğin ışık hızı hesaplamaları veya dünya nüfusu) için kullanılır. Kod içinde birlongdeğeri tanımlarken, bilgisayarın onuintsanmaması için sayının sonuna büyük ‘L’ harfi konulması tavsiye edilir (Örn:9223372036854775807L).
B) Ondalıklı Sayılar (Floating-Point): Kesirli (virgüllü) sayıları temsil ederler.
- float: 32-bit uzunluğundadır. Tek hassasiyetli (single-precision) ondalıklı sayılardır. Değer atarken sayının sonuna ‘F’ veya ‘f’ eklenmesi zorunludur (Örn:
3.14f), aksi takdirde Java bunu otomatik olarak double kabul eder. - double: 64-bit uzunluğundadır. Çift hassasiyetli (double-precision) sayılardır. Çok daha fazla küsurat hassasiyeti gerektiren matematiksel işlemlerde (örneğin sinüs, kosinüs hesapları) kullanılır. Ondalıklı sayılar için varsayılan veri tipidir.
C) Karakter (Character):
- char: 16-bit uzunluğundadır. Yalnızca tek bir harfi, rakamı veya sembolü tutar. C ve C++ dillerindeki 8-bitlik ASCII sisteminden farklı olarak Java,
chartipinde Unicode standardını kullanır. Bu sayede Çince, Arapça, Japonca veya Türkçe gibi dünyadaki tüm dillerin harf ve sembollerini destekler. Atama yapılırken tek tırnak (' ') arasına yazılır (Örn:char harf = 'A';).
D) Mantıksal (Boolean):
- boolean: Sadece iki değer alabilir:
true(doğru) veyafalse(yanlış). Programın mantıksal akışını, döngüleri (while, for) ve karar mekanizmalarını (if-else) kontrol etmek için kullanılır.
2. Referans Veri Tipleri ve String
İlkel veri tipleri haricindeki tüm veri tipleri nesne (object) tabanlı referans tiplerdir. Bunların en başında gelen ve en çok kullanacağınız veri tipi String‘dir.
String, karakterlerden oluşan bir metin dizisidir (örneğin “Merhaba Dünya!”). İlkel tiplerin aksine String bir sınıftır (class) ve bellekte bir nesne olarak tutulur. String değerleri atarken mutlaka çift tırnak (" ") işareti kullanılır.
Değişken Tanımlama ve Değer Atama (Örnekler)
Java’da bir değişkeni kullanmadan önce mutlaka tanımlamalısınız. Temel sözdizimi şu şekildedir: veri_tipi degisken_adi = degeri;.
Aşağıda farklı veri tipleriyle yapılmış örnekleri inceleyelim:
public class DegiskenOrnekleri {
public static void main(String[] args) {
// İlkel Tip Örnekleri
int ogrenciYasi = 22; // Tamsayı ataması
long dunyaNufusu = 8000000000L; // Çok büyük tamsayı ('L' kullanımına dikkat)
double urunFiyati = 149.99; // Ondalıklı sayı ataması
float indirimOrani = 0.15f; // Float ataması ('f' kullanımına dikkat)
char basHarf = 'J'; // Tek karakter (Tek tırnak ile)
boolean sinaviGectiMi = true; // Mantıksal doğru/yanlış
// Referans Tip Örneği
String karsilamaMesaji = "Java Öğrenmeye Hoş Geldiniz!"; // Çift tırnak ile metin
// Dinamik Değer Atama (Dynamic Initialization)
// Değişkenin değeri, çalışma zamanında matematiksel bir işlemle de belirlenebilir.
double dikKenar1 = 3.0;
double dikKenar2 = 4.0;
double hipotenus = Math.sqrt(dikKenar1 * dikKenar1 + dikKenar2 * dikKenar2);
// Konsola (Ekrana) yazdırma işlemi
System.out.println(karsilamaMesaji);
System.out.println("Öğrencinin Yası: " + ogrenciYasi);
System.out.println("Hipotenüs uzunluğu: " + hipotenus);
}
}
Değişkenlerin Kapsamı (Scope) ve Sabitler (Constants)
Kapsam (Scope): Java’da süslü parantezler { } bir kod bloğunu temsil eder. Bir değişken tanımlandığı bloğun içinde yaşar ve bloğun dışına çıkıldığında hafızadan silinerek geçersiz hale gelir. Buna değişkenin “kapsamı” denir. Örneğin, bir if koşulu veya for döngüsü içinde tanımladığınız değişkene, o döngünün dışından ulaşamazsınız.
Sabitler (Constants): Bazen programınızda pi sayısı (3.14) veya KDV oranı gibi hiç değişmemesini istediğiniz veriler olabilir. Değerinin sonradan değiştirilmesini engellemek için veri tipinin başına final anahtar kelimesi konur. Örn: final double PI = 3.14159; Bu değişken programın başka bir yerinde değiştirilmeye çalışılırsa Java derleyicisi anında bir sözdizimi hatası vererek kodunuzu koruma altına alır.
Sonuç Olarak; Java’nın zengin veri tiplerini ve değişken tanımlama kurallarını iyi kavramak, belleği verimli kullanmanızı ve hatasız kodlar (bugs) üretmenizi sağlayacaktır. İlkel tipler donanım seviyesinde yüksek performans sağlarken, String gibi referans tipler programlarınıza büyük bir esneklik katar. Kendi projenizin ihtiyaçlarına (veri boyutu, ondalık hassasiyeti vb.) uygun doğru veri tipini seçerek kodlama serüveninize sağlam bir temelle başlayabilirsiniz.





