Java değişkenler, programın çalışması sırasında kullanılacak değerleri anlamlı isimlerle saklamayı sağlar. Bir değişkeni tanımlarken veri tipini, değişken adını ve başlangıç değerini belirtiriz. Örneğin int yas = 20; ifadesinde int veri tipini, yas değişken adını, = atama operatörünü, 20 ise saklanan değeri gösterir.
Java’da değişkenlerin nasıl tanımlandığını ve hangi veri tipinin ne zaman kullanılacağını bilmek, kod yazmanın temel adımlarındandır. Şimdi önce değişken yapısını, ardından ilkel veri tipleri ile String arasındaki farkı inceleyelim.
Java’da değişken nedir ve nasıl tanımlanır?
Değişken, program içinde bir bilgiyi geçici olarak saklayan isimlendirilmiş alandır. Bu bilgi bir yaş, puan, ürün adedi veya kullanıcı adı olabilir. Her değişkenin bir veri tipi ve bir değişken adı vardır. Veri tipi, değişkende hangi tür değerin tutulabileceğini belirler.
int yas = 20; satırını parçaladığımızda yapı şu şekilde açıklanabilir:
int: Değişkenin tam sayı tutacağını belirtir.yas: Değişkene verilen isimdir.=: Sağdaki değeri soldaki değişkene atar.20: Değişkende saklanacak ilk değerdir.;: Java’da komutun sona erdiğini gösterir.
Bir değişkenin yalnızca türünü ve adını yazmak bildirim olarak adlandırılır. Değere daha sonra başlangıç değeri vermek ise ilk değer atamadır. Değişkenin türü ve adı bir kez belirlendikten sonra, uygun türde başka bir değer atanarak içeriği değiştirilebilir. Java öğrenme sürecinde bu temel yapıyı uygulamalı ve düzenli biçimde pekiştirmek isteyenler, birebir Java özel dersleri ile kendi seviyelerine uygun ilerleyebilir.
public class Main {
public static void main(String[] args) {
int yas;
yas = 20;
System.out.println(yas);
yas = 21;
System.out.println(yas);
}
}
Beklenen konsol çıktısı şöyledir:
20
21
Bu örnekte yas önce bildirilmiş, ardından 20 değeri atanmıştır. Daha sonra aynı değişkene 21 değeri verilmiştir. Değişkenin veri tipi aynı kaldığı için bu atama geçerlidir.
Atama operatörü olan = ile eşitlik karşılaştırması aynı işlem değildir. yas = 21; ifadesi değişkene yeni değer verir. Eşitlik kontrolü yapmak için ise genellikle == kullanılır. Örneğin yas == 21 ifadesi, yas değişkeninin değerinin 21 olup olmadığını kontrol eder; değişkenin değerini değiştirmez.
İlkel veri tipleri ile String arasındaki fark nedir?

Java’da byte, short, int, long, float, double, char ve boolean olmak üzere sekiz ilkel veri tipi bulunur. Bu türler temel değerleri temsil eder. String ise ilkel veri tipi değildir; Java’da bir sınıf tarafından oluşturulan referans türüdür. Başlangıç seviyesinde bunu, String değişkeninin bir metin nesnesiyle ilişki kurması şeklinde düşünebilirsiniz.
| Tür | Kategori | Örnek değer | Uygun kullanım | Dikkat edilmesi gereken nokta |
|---|---|---|---|---|
| byte | İlkel | 100 | Küçük tam sayılar | Değer aralığı sınırlıdır. |
| short | İlkel | 1000 | Orta büyüklükte tam sayılar | Her tam sayı için gerekli değildir. |
| int | İlkel | 42 | Günlük tam sayı işlemleri | Ondalıklı değerleri tutmaz. |
| long | İlkel | 9000000000L | Çok büyük tam sayılar | Büyük sayıların sonuna L eklenebilir. |
| float | İlkel | 3.14f | Ondalıklı sayılar | Değerin sonuna f yazılmalıdır. |
| double | İlkel | 3.14 | Daha hassas ondalıklı işlemler | Para hesaplarında yuvarlama kuralları ayrıca düşünülmelidir. |
| char | İlkel | 'A' | Tek bir karakter | Tek tırnak kullanılır. |
| boolean | İlkel | true | Doğru-yanlış durumları | Yalnızca true veya false alır. |
| String | Referans türü | "Merhaba" | Metin saklama | İlkel tür değildir; bir sınıf türüdür. |
int, long, double ve float ne zaman kullanılmalıdır?
int, tam sayılar için en sık kullanılan veri tipidir. Sayaçlar, yaş bilgisi, ürün adedi veya bir listedeki sıra numarası gibi değerlerde tercih edilebilir. Örneğin bir depodaki ürün sayısı ondalıklı olmayacağı için int ile tutulur.
long, int aralığının yeterli olmadığı daha büyük tam sayılar için kullanılır. Büyük kimlik numaraları, toplam milisaniye değerleri veya uzun süre boyunca artan sayaçlar buna örnek olabilir. Değer doğrudan yazıldığında sonuna L eklemek, sayının long olduğunu açıkça belirtir.
double, ölçüm, ortalama, oran ve matematiksel hesaplamalar gibi ondalıklı değerlerde genel tercihtir. float daha az bellek kullanır; ancak hassasiyeti daha düşük olduğu için yalnızca bu sınırlama kabul edilebildiğinde seçilmelidir. Bir float sabitinin sonuna F eklenir.
| Veri tipi | Uygun kullanım |
|---|---|
int |
Yaş, sayaç, ürün adedi |
long |
Çok büyük tam sayılar |
double |
Ortalama, ölçüm ve ondalıklı hesaplar |
float |
Daha düşük hassasiyetin yeterli olduğu ölçümler |
public class Main {
public static void main(String[] args) {
long population = 3_000_000_000L;
float temperature = 24.5F;
int whole = 5 / 2;
double decimal = 5 / 2.0;
System.out.println(population);
System.out.println(temperature);
System.out.println(whole);
System.out.println(decimal);
}
}
Beklenen çıktı:
3000000000
24.5
2
2.5
5 / 2 işleminde iki taraf da tam sayı olduğu için sonuç 2 olur ve ondalık kısım kaybolur. İşlemin en az bir tarafı double olduğunda sonuç 2.5 olarak hesaplanır. Para hesaplarında double ve float yuvarlama hassasiyeti nedeniyle her zaman kusursuz sonuç vermeyebilir; finansal uygulamalarda daha kontrollü sayı türleri ayrıca değerlendirilmelidir.
String, char ve boolean nasıl kullanılır?

String metinleri, char tek bir karakteri, boolean ise yalnızca true veya false bilgisini tutar. String, teknik olarak ilkel bir veri tipi değil, Java’nın sunduğu bir sınıftır. String değerleri çift tırnakla, char değerleri ise tek tırnakla yazılır: "A" bir metin, 'A' tek karakterdir.
Metinleri + operatörüyle birleştirebilirsiniz. Ancak işlemde bir String varsa, devamındaki değerler metne dönüştürülür. Bu nedenle işlem sırası önemlidir. "Sonuç: " + 2 + 3 ifadesi 23 üretirken, "Sonuç: " + (2 + 3) ifadesi 5 üretir.
public class Main {
public static void main(String[] args) {
String name = "Ada";
char level = 'A';
boolean active = true;
System.out.println("Öğrenci: " + name);
System.out.println("Seviye: " + level);
System.out.println("İşlem: " + 2 + 3);
System.out.println("Toplam: " + (2 + 3));
if (active) {
System.out.println("Hesap aktif.");
}
}
}
Beklenen çıktı:
Öğrenci: Ada
Seviye: A
İşlem: 23
Toplam: 5
Hesap aktif.
Java’da temel tür dönüşümleri nasıl yapılır?
Java’da tür dönüşümü, bir değeri başka bir veri tipiyle kullanılabilir hâle getirmektir. Bazı dönüşümler daha geniş bir türe otomatik olarak yapılabilirken, bilgi kaybı ihtimali olan dönüşümlerde açıkça casting yazmak gerekir.
Genişleyen ve daralan dönüşüm
Bir int değerini double değişkenine atamak genellikle otomatik gerçekleşir. Çünkü tam sayı, ondalıklı sayıyı temsil edebilen daha geniş bir alana taşınır. Buna karşılık double değeri int türüne çevrilirken ondalık bölüm korunmaz. Bu nedenle parantez içinde hedef tür belirtilir:
public class Main {
public static void main(String[] args) {
String yasMetni = "24";
String puanMetni = "87.5";
int yas = Integer.parseInt(yasMetni);
double puan = Double.parseDouble(puanMetni);
double genisletilmisYas = yas;
int tamPuan = (int) puan;
String sonuc = String.valueOf(tamPuan);
System.out.println(genisletilmisYas);
System.out.println(sonuc);
}
}
Beklenen çıktı şöyledir:
24.0
87
Bu örnekte int olan yas değeri otomatik olarak double türüne dönüşerek 24.0 olur. 87.5 değeri (int) ile dönüştürüldüğünde ise .5 bölümü atılır ve sonuç 87 olur. Bu işlem yuvarlama değildir; yalnızca ondalık kısmı keser.
String değerlerini sayıya dönüştürme
Kullanıcıdan alınan form bilgileri veya dosyadan okunan veriler çoğu zaman metin olarak gelir. Metin içindeki sayı matematiksel işlemlerde kullanılacaksa dönüştürülmelidir:
Integer.parseInt("42"), metniintdeğerine çevirir.Double.parseDouble("42.75"), metnidoubledeğerine çevirir.String.valueOf(42), sayıyıStringdeğerine çevirir.
"merhaba" veya "12abc" gibi sayı biçiminde olmayan bir metin Integer.parseInt ya da Double.parseDouble ile dönüştürülürse NumberFormatException oluşabilir. Bu ad, Java’nın metni istenen sayı biçiminde okuyamadığını anlatan hata türüdür. Gerçek uygulamalarda dönüşüm öncesinde verinin biçimi kontrol edilmeli veya hata yönetimi yapılmalıdır.
Doğru veri tipi nasıl seçilir ve yaygın hatalar nasıl önlenir?
Doğru veri tipi seçimi, programın hem anlaşılır hem de hatalara karşı daha güvenli olmasına yardım eder. Önce değerin ne anlattığını, sonra değişip değişmeyeceğini düşünmek gerekir. Değişken adı da bu anlamı açıkça taşımalıdır.
Değişken isimlendirme kuralları
Java’da değişken adları harf, alt çizgi (_) veya dolar işareti ($) ile başlayabilir; ancak rakamla başlayamaz. İsimlerde boşluk kullanılamaz. Java büyük-küçük harfe duyarlıdır; puan ile Puan iki farklı isimdir. Ayrıca class, int ve return gibi Java anahtar kelimeleri değişken adı olarak kullanılamaz.
Birden fazla kelimeden oluşan adlarda camelCase kullanmak okunabilirliği artırır: ogrenciAdi, sinavPuani ve hesaplananOrtalama gibi. Değişmemesi gereken değerlerde final kullanılabilir:
final double PI = 3.14159;
// PI = 3.14; // Derleme hatası
Yaygın hataları teşhis etme
- Hata:
int sayi = 4.5;| Neden: Ondalıklı değerintiçine doğrudan sığmaz. | Düzeltme:doublekullanın veya bilgi kaybını kabul ederek açık dönüşüm yapın. - Hata: Yerel değişkeni değer vermeden kullanmak. | Neden: Yerel değişkenler varsayılan değerle başlamaz. | Düzeltme: Kullanmadan önce başlangıç değeri atayın.
- Hata:
String ad = 'Ali';| Neden: Tek tırnak yalnızcachariçin kullanılır. | Düzeltme: Metinlerde çift tırnak kullanın:"Ali". - Hata:
int sonuc = 5 / 2;sonucunu2.5beklemek. | Neden: İkiintarasındaki bölme tam sayı bölmesidir. | Düzeltme: İşleme en az birdoubledeğer katın:5.0 / 2. - Hata: Sayı olmayan metni parse etmek. | Neden: Metin geçerli sayı biçiminde değildir. | Düzeltme: Girdiyi kontrol edin ve uygun hata yönetimi uygulayın.
- Hata:
finaldeğişkene yeniden değer atamak. | Neden:finaldeğer yalnızca bir kez atanabilir. | Düzeltme: Değişmesi gereken değerlerdefinalkullanmayın.
Veri tipi seçimi için kısa kontrol listesi
- Bu değer metin mi? String
- Tek karakter mi? char
- Tam sayı mı? int veya ihtiyaç varsa long
- Ondalıklı sayı mı? double
- Doğru/yanlış bilgisi mi? boolean
- Değer sonradan değişecek mi? Değişmeyecekse final
Örneğin bir profil formunda ad alanı için String, yaş için int, not ortalaması için double seçilebilir. Sınıf kodu yalnızca rakamlardan oluşsa bile bir kimlik veya etiket gibi kullanılıyorsa String daha anlamlıdır; başındaki sıfırlar böylece kaybolmaz. Aktiflik durumu ise iki seçenekli olduğu için boolean olmalıdır. Öğrendiğiniz kuralları pekiştirmek için Java bilgi testi üzerinden değişken ve veri tipi sorularını çözebilirsiniz.
Sık Sorulan Sorular
Java’da değişken tanımlama ile değer atama arasındaki fark nedir?
Tanımlama, değişkenin veri tipini ve adını belirtmektir. Değer atama ise değişkene kullanılacak veriyi vermektir. Örneğin int yas; tanımlama, yas = 24; değer atamadır. İkisi int yas = 24; biçiminde aynı satırda da yapılabilir.
String neden ilkel veri tipi değildir?
String, Java’da bir sınıftır ve metinleri nesne olarak temsil eder. int, double, char ve boolean ise ilkel veri tipleridir. String’in hazır metotlara sahip olması, sınıf olmasının önemli sonuçlarından biridir.
Ondalıklı sayılar için float mı double mı kullanılmalıdır?
Genel amaçlı hesaplamalarda çoğu zaman double tercih edilir; daha geniş hassasiyet sunar. float ise özellikle daha düşük bellek kullanımı gerektiğinde ve hassasiyet sınırı kabul edildiğinde seçilebilir.
double bir değer int türüne çevrildiğinde ne olur?
Açık casting yapılırsa ondalık bölüm atılır. Örneğin (int) 9.8 sonucu 9 olur. Bu işlem otomatik yuvarlama yapmaz ve veri kaybına neden olabilir.
Bir değişkenin değer değiştirmemesi için final nasıl kullanılır?
Değişken tanımlanırken başına final yazılır: final int MAX = 100;. Bu değişkene daha sonra yeni değer atanmaya çalışılırsa Java derleme hatası verir.
Değişkenleri seçerken önce verinin anlamını, biçimini ve yaşamı boyunca değişip değişmeyeceğini düşünmek, Java’da daha okunabilir ve güvenilir kod yazmanın temel adımlarındandır.