Java'ya Giriş ve İlk Program
Çoktan Seçmeli · Java Çalışma Modeli
Soru 1: javac Nerede?
Java derleyicisi javac aşağıdakilerden hangisinin parçasıdır?
C: JDK = JRE + geliştirme araçları (javac, jar, javadoc…). JRE = JVM + sınıf kütüphanesi ve yalnızca çalıştırmak için yeterlidir. Program yazıp derleyecek geliştirici JDK kurar.
Çoktan Seçmeli · Java Çalışma Modeli
Soru 2: Derleme ve Çalıştırma Komutları
Merhaba.java dosyasını derleyip çalıştırmak için doğru komut sırası hangisidir?
B: javac dosya adını uzantısıyla alır ve Merhaba.class üretir. java komutuna ise sınıf adı verilir, .class uzantısı yazılmaz. D'de JVM "Merhaba.class" adlı bir sınıf arar ve bulamaz.
Çoktan Seçmeli · Java Çalışma Modeli
Soru 3: Tek Adımda Çalıştırma
Java 11 ve sonrasında, hiç derlenmemiş bir klasörde java Merhaba.java komutu çalıştırılırsa ne olur?
D: Java 11+ tek dosyalık programlar için "kaynak dosya modu" sunar: derleme ve çalıştırma tek adımda yapılır, derlenen bytecode diske yazılmaz. Arka planda yine derleme vardır; JVM her zaman bytecode yürütür.
Adım Adım Çalıştırma · Java Çalışma Modeli
Soru 4: Konsol Oturumu
Klasörde yalnızca Merhaba.java var (ekrana Merhaba yazan program). Komutlar sırayla çalıştırılınca konsolda ne görünür?
Henüz Merhaba.class yok: JVM çalıştıracak sınıfı bulamaz.
Derleme başarılı: javac hiçbir şey yazmaz, yalnızca .class dosyası oluşur.
java sınıf adı bekler; "Merhaba.class" adlı sınıf aranır, bulunamaz. Uzantı yazılmaz!
Doğru komut: program çalışır.
Kaynak değişti ama yeniden derlenmedi: JVM eski .class'ı çalıştırır, yine Merhaba yazar.
Yeniden derleme sonrası değişiklik görünür: Selam. (Java 11+ sürümlerinde hata iletilerinin altına bir "Caused by" satırı da eklenir.)
> java Merhaba
> javac Merhaba.java
> java Merhaba.class
> java Merhaba
// Kaynakta "Merhaba" → "Selam" yapıldı
> java Merhaba
> javac Merhaba.java
> java MerhabaÇoktan Seçmeli · İlk Program
Soru 5: Programın Giriş Noktası
JVM'nin java Uygulama komutuyla programı başlatabilmesi için sınıfta hangi metot bulunmalıdır?
C: public (her yerden erişilebilir), static (nesne oluşturmadan çağrılır), void (değer döndürmez), adı küçük harfle main, parametresi String[] args. A, B ve D derlenir ama JVM giriş noktasını bulamaz ve programı başlatmaz; Java büyük-küçük harfe duyarlıdır (Main ≠ main).
Çoktan Seçmeli · İlk Program
Soru 6: Sınıf Adı ve Dosya Adı
Aşağıdaki kod Merhaba.java adlı dosyaya kaydedilip javac Merhaba.java ile derleniyor. Ne olur?
public class Selam { public static void main(String[] args) { System.out.println("x"); } }
A: public sınıfın adı dosya adıyla birebir (büyük-küçük harf dahil) aynı olmalıdır. Derleyici hatayı satır 1'de bildirir ve .class üretmez. Düzeltme: dosyayı Selam.java diye kaydetmek ya da sınıfı Merhaba diye adlandırmak.
Çoktan Seçmeli · İlk Program
Soru 7: Dosyadaki Bildirimlerin Sırası
Bir Java kaynak dosyasında package, import ve class bildirimleri hangi sırada yazılmalıdır?
D: Varsa package okul; en başta, ardından import java.util.Scanner; gibi bildirimler, en son sınıf gelir. package okul; bildiren dosya okul/ klasöründe durur ve java okul.Program ile çalıştırılır.
Adım Adım Çalıştırma · İlk Program
Soru 8: print ve println
Her deyimden sonra konsolda ne görünür ve imleç nerede kalır?
print satır sonu eklemez: imleç boşluğun hemen arkasında kalır.
println aynı satıra "Java" yazar, sonra satır sonu ekler.
"1" yazılır, imleç aynı satırda.
"2" hemen arkasına: 12 (arada boşluk yok).
Argümansız println() yalnızca satırı bitirir.
"Son" yazılır, satır biter. 6 çağrı, 3 satır çıktı.
public class Cizim { public static void main(String[] args) { System.out.print("Ders: "); System.out.println("Java"); System.out.print("1"); System.out.print("2"); System.out.println(); System.out.println("Son"); } }
Çıktı Sorusu · İlk Program
Soru 9: Satır Sonları
Aşağıdaki kodun çıktısı nedir? Kaç satır oluşur?
System.out.print("A");
System.out.println("B");
System.out.print("C");
System.out.print("D\n");
System.out.println();
System.out.print("E");Cevabı göster
AB CD E
print("A")veprintln("B")aynı satıra:AB, sonra satır sonu."D\n"içindeki\nsatırı bitirir:CD.println()boş bir satır üretir.E4. satıra yazılır; sonunda satır sonu yoktur.
Çıktı Sorusu · Kaçış Dizileri
Soru 10: Dört Kaçış Dizisi
Kodun çıktısı nedir? (Sekme durakları 8 karakterdir.)
System.out.println("Ad\tNot");
System.out.println("C:\\ders\\java");
System.out.println("\"Merhaba\"");
System.out.print("1\n2\n");Cevabı göster
Ad Not C:\ders\java "Merhaba" 1 2
\timleci sonraki sekme durağına (8. sütun) taşır: "Ad"dan sonra 6 boşluk görünür.\\tek bir ters eğik çizgi yazar.\"metni bitirmeden çift tırnak yazar.- Tek
printiki satır üretti:\nsatır sonu karakteridir.
Çoktan Seçmeli · Kaçış Dizileri
Soru 11: Çift Ters Eğik Çizgi ve n
System.out.println("A\\nB"); deyiminin çıktısı nedir?
C: Kaynakta \\ bir kaçış dizisidir ve tek bir \ karakteri üretir; ardından gelen n sıradan bir harftir. Ekranda tek satırda A\nB görünür. Yeni satır için "A\nB" yazılmalıydı.
Çıktı Sorusu · Kaçış Dizileri
Soru 12: Sekme ve Metin Olarak \t
Kodun çıktısı nedir? (Sekme durakları 8 karakterdir.)
System.out.print("x\ty\n1\t2");
System.out.println("\\t");Cevabı göster
x y 1 2\t
- İlk
\t→ x'ten sonra 8. sütuna atlanır;\nsatırı bitirir. - İkinci satır: 1, sekme, 2. print satırı bitirmediği için sonraki çıktı aynı satıra eklenir.
"\\t"= ters eğik çizgi + t harfi: ekranda metin olarak\tgörünür.
Çıktı Sorusu · Kaçış Dizileri
Soru 13: Windows Yolu Yazdırma
Aşağıdaki program derlenip çalıştırılmak isteniyor. Ne olur?
public class Yol { public static void main(String[] args) { System.out.println("Dosya: C:\yeni"); } }
Cevabı göster
Derleme hatası; program hiç çalışmaz:
Yol.java:3: error: illegal escape character
System.out.println("Dosya: C:\yeni");
^- Metin içinde
\bir kaçış dizisi başlatır;\ytanımlı bir kaçış dizisi değildir. - Düzeltme:
"Dosya: C:\\yeni"→ çıktıDosya: C:\yeni. - Dikkat:
"C:\new"derlenirdi ama\nyeni satır olurdu!
Adım Adım Çalıştırma · Kaçış Dizileri
Soru 14: Kaçış Dizileriyle Tablo
Program satır satır çalışırken konsolda ne oluşur?
\t, "Kredi"yi 8. sütundaki sekme durağına taşır.
"Java" da 4 karakter: 4, "Kredi"nin tam altına hizalanır → basit tablo.
\\ ekranda tek \ olur.
\" metni bitirmeden tırnak yazar.
Tek print iki satır üretir; ikinci \n satırı bitirir. Toplam 6 satır.
public class Tablo { public static void main(String[] args) { System.out.println("Ders\tKredi"); System.out.println("Java\t4"); System.out.println("Yol: C:\\ders"); System.out.println("O \"tamam\" dedi"); System.out.print("A\nB\n"); } }
Çıktı Sorusu · Metin Birleştirme
Soru 15: Sayı mı, Metin mi?
Kodun çıktısı nedir?
System.out.println(5 + 3);
System.out.println("5 + 3");
System.out.println("5" + 3);
System.out.println(5 + 3 + "5");
System.out.println("5" + 5 + 3);Cevabı göster
8 5 + 3 53 85 553
- İki sayı: aritmetik toplama → 8. Tırnak içi her şey metindir →
5 + 3aynen. - Bir taraf metinse
+birleştirme yapar: "5" + 3 → "53". - İşlem soldan sağa: 5 + 3 = 8 önce, sonra 8 + "5" → "85".
- "5" + 5 → "55", sonra "55" + 3 → "553".
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Final)
Soru 16: İki Metni Toplamak
Aşağıdaki Java kodunun çıktısı nedir?
String sayi1 = "23"; String sayi2 = "14"; String toplam = sayi1 + sayi2; System.out.println(toplam);
B: sayi1 ve sayi2 String'dir; + iki metni uç uca ekler: "23" + "14" → 2314. Değişkenin adının "toplam" olması işlemi değiştirmez. 37 elde etmek için değerler int olmalıydı.
Çıktı Sorusu · Geçmiş Sınav (2025-26 Bütünleme, varyant)
Soru 17: String ve int Birlikte
Kodun çıktısı nedir?
String sayi1 = "12";
String sayi2 = "34";
int a = 12, b = 34;
System.out.println(sayi1 + sayi2);
System.out.println(a + b);
System.out.println(sayi1 + a);
System.out.println(a + b + sayi1);
System.out.println(sayi1 + a + b);Cevabı göster
1234 46 1212 4612 121234
- Sınavdaki asıl soru ilk satırdır: iki String birleşir → 1234.
- İki int: 12 + 34 = 46.
a + b + sayi1: önce 46, sonra "46" + "12" → 4612.sayi1 + a + b: soldan sağa hep metin: "12" + 12 → "1212", + 34 → "121234".
Adım Adım Çalıştırma · Metin Birleştirme
Soru 18: Soldan Sağa Birleştirme
Her println içindeki ifade soldan sağa nasıl değerlendirilir?
İki int: aritmetik toplama.
Bir taraf String: artık birleştirme.
Metne eklenen her sayı metin olarak eklenir: "334", "3345".
En soldaki işlenen zaten metin.
2 ve 3 toplanmaz, yan yana yazılır.
Parantez önce hesaplanır: 5, sonra metne eklenir.
* önceliklidir: iki çarpma önce yapılır.
Sonra soldan sağa birleştirme: 6=6.
public class Birlestir { public static void main(String[] args) { System.out.println(1 + 2 + "3" + 4 + 5); System.out.println("Toplam: " + 2 + 3); System.out.println("Toplam: " + (2 + 3)); System.out.println(2 * 3 + "=" + 2 * 3); } }
Çoktan Seçmeli · Dil Yapısı
Soru 19: Büyük-Küçük Harf
Bir öğrenci system.out.println("x"); yazıp derliyor. Ne olur?
A: Java büyük-küçük harfe duyarlıdır; System sınıfı büyük S ile yazılır. Derleyici system'i bir paket adı sanar ve bulamaz. Aynı nedenle sayi ve Sayi farklı adlardır.
Çoktan Seçmeli · Dil Yapısı
Soru 20: İfade mi, Deyim mi?
Aşağıdakilerden hangisi tek başına bir değer üreten ifadedir (noktalı virgülle biten bir deyim ya da blok değildir)?
C: İfade bir değer üretir (120 * 3 → 360). Deyim bir işlemi tamamlar ve çoğunlukla ; ile biter (A tanımlama, B çağrı deyimi). D süslü parantezle gruplanmış bir bloktur. Bir deyimin içinde bir veya daha çok ifade bulunabilir.
Adım Adım Çalıştırma · Dil Yapısı
Soru 21: İfade, Deyim ve Blok
Kod satır satır çalışırken değişkenler ve çıktı nasıl değişir?
Tanımlama deyimi: a için int kutusu ayrılır, 40 yazılır.
b = 7.
Önce sağdaki ifade: * önceliklidir, 7 * 5 = 35.
40 − 35 = 5, sonuç c'ye atanır.
Koşul ifadesi true → bloğa girilir.
Blok içindeki deyim çalışır.
Blok bitti; son deyim c'yi yazar. b = 9 olsaydı c = −5 olur, blok atlanırdı.
public class Hesap { public static void main(String[] args) { int a = 40; int b = 7; int c = a - b * 5; if (c > 0) { System.out.println("Pozitif"); } System.out.println(c); } }
Çoktan Seçmeli · Açıklamalar
Soru 22: Javadoc Açıklaması
API belgesi (Javadoc) üretmek için kullanılan açıklama biçimi hangisidir?
A: /** */ Javadoc açıklamasıdır; javadoc aracı bunlardan belge üretir. // satır sonuna kadar, /* */ birden çok satırı kapsar. D HTML açıklamasıdır, Java'da geçersizdir. Derleyici tüm açıklamaları atlar; bytecode'a girmezler.
Çıktı Sorusu · Açıklamalar
Soru 23: Hangi Satırlar Çalışır?
main içindeki bu kodun çıktısı nedir?
// System.out.println("1"); System.out.println("2"); // System.out.println("3"); /* System.out.println("4"); System.out.println("5"); */ System.out.println("6 // değil"); System.out.println("7 /* yorum değil */");
Cevabı göster
2 6 // değil 7 /* yorum değil */
- 1. satır baştan sona açıklama; 2. satırda
//'dan sonrası (3) açıklama. /* ... */iki satırı (4 ve 5) birlikte açıklama yapar.- Tırnak içindeki
//ve/* */açıklama değil, metnin parçasıdır; aynen yazılır.
Çıktı Sorusu · Açıklamalar
Soru 24: İç İçe Çok Satırlı Açıklama
Program derlenip çalıştırılmak isteniyor. Ne olur?
public class Ic { public static void main(String[] args) { /* dış /* iç */ kalan */ System.out.println("Merhaba"); } }
Cevabı göster
Derleme hatası; "Merhaba" hiç yazılmaz.
/* */açıklamaları iç içe olamaz: açıklama, ilk*/'da biter.- Geriye
kalan */kalır ve derleyici bunu kod sanır: javac "illegal start of expression" gibi bir hata bildirir, .class üretmez. - İçinde
/* */olan bir bloğu kapatmak için satırları//ile açıklama yapmak daha güvenlidir.
Çoktan Seçmeli · Hata Türleri
Soru 25: Hata Türünü Eşleştirme
Aşağıdaki eşleştirmelerden hangisi yanlıştır?
D yanlıştır: a + b / 2 derlenir ve çalışır, ama / önce yapıldığı için sonuç yanlıştır → mantık hatası. Söz dizimi ve tür hataları derleme sırasında yakalanır (.class üretilmez); tam sayı sıfıra bölme ise çalışırken ArithmeticException fırlatır.
Çoktan Seçmeli · Hata Türleri
Soru 26: cannot find symbol
javac şu iletiyi veriyor. En olası neden nedir?
S2.java:4: error: cannot find symbol
System.out.printn("y");
^
symbol: method printn(String)
location: variable out of type PrintStreamD: cannot find symbol derleyicinin bir adı (değişken, metot, sınıf) tanımadığını söyler; symbol: method printn(String) satırı hangi adın bulunamadığını gösterir. ^ işareti hatanın yerini işaret eder.
Çoktan Seçmeli · Hata Türleri
Soru 27: Uzantıyla Çalıştırma
Derleme başarılı oldu ve Merhaba.class oluştu. Kullanıcı java Merhaba.class yazıyor. Ne olur?
A: java komutu dosya adı değil sınıf adı bekler; "Merhaba.class" adlı bir sınıf aranır ve bulunamaz. Doğru komut java Merhaba'dır. Aynı ileti, .class hiç oluşmamışsa ya da yanlış klasörde çalıştırılıyorsa da görülür.
Çıktı Sorusu · Hata Türleri
Soru 28: Eksik Noktalı Virgül
Program javac Deneme.java ile derlenip java Deneme ile çalıştırılmak isteniyor. Ekranda ne görünür? "Bir" yazılır mı?
public class Deneme { public static void main(String[] args) { System.out.println("Bir"); System.out.println("İki") System.out.println("Üç"); } }
Cevabı göster
Deneme.java:4: error: ';' expected
System.out.println("İki")
^
1 error- Hata 4. satırın sonunda bildirilir; ^ eksik
;'nin yerini gösterir. - "Bir" de yazılmaz: derleme başarısız olduğu için Deneme.class üretilmez; program hiç çalışmaz.
- Önceden derlenmiş bir .class yoksa
java Deneme"Could not find or load main class" der.
Çoktan Seçmeli · Geçmiş Sınav (2025-26 Vize)
Soru 29: Tam Sayı Bölmesi
Aşağıdaki Java kodunun çıktısı nedir?
public static void main(String[] args) { int a = 13; int b = 2; int sonuc = a / b; System.out.println(sonuc); }
B: İki int bölündüğünde sonuç da int'tir; kesir kısmı atılır (yuvarlanmaz): 13 / 2 = 6. 6.5 elde etmek için en az bir işlenen ondalıklı olmalıdır (ör. 13 / 2.0). Beklenen 6.5 ise bu bir mantık hatasıdır.
Çıktı Sorusu · Hata Türleri
Soru 30: Ortalama Neden Yanlış?
İki notun ortalamasını yazdırmak isteyen kodun çıktısı nedir? Hata hangi türdendir?
public class Ort { public static void main(String[] args) { int a = 60, b = 80; System.out.println(a + b / 2); System.out.println((a + b) / 2); } }
Cevabı göster
100 70
- 1. satır:
/önce yapılır → 60 + 40 = 100. Hata iletisi yok ama sonuç yanlış: mantık hatası. - 2. satır: parantez önce → 140 / 2 = 70 (doğru).
- Mantık hataları derleyici tarafından yakalanmaz; beklenen sonucu önceden hesaplayıp karşılaştırarak (test) bulunur.
Adım Adım Çalıştırma · Hata Türleri
Soru 31: Çalışma Zamanı Hatası
Program derleniyor. Çalıştırıldığında hangi satırlar çalışır, konsolda ne görünür?
javac kodu denetler: söz dizimi ve türler doğru → Hata.class üretilir. 0'a bölme derleme hatası değildir.
JVM main'i çalıştırır: "Başla" yazılır.
x ve y tanımlanır.
Tam sayı sıfıra bölünemez: JVM ArithmeticException fırlatır; iletide satır numarası (5) görünür.
Program durdu: 6. satır hiç çalışmaz, "Bitti" yazılmaz.
public class Hata { public static void main(String[] args) { System.out.println("Başla"); int x = 10, y = 0; System.out.println(x / y); System.out.println("Bitti"); } }
Çıktı Sorusu · Tasarım
Soru 32: Test Tablosu ile Hata Bulma
Kodlamadan önce bir test tablosu hazırlanmıştı. Bu program tablodaki üç girdi için ne yazdırır? Hangi testte beklenen çıktı tutmaz?
int n1 = 75, n2 = 80; // girdiler int ort = (n1 + n2) / 2; System.out.println(ort);
| Girdi | Beklenen |
|---|---|
| 70, 90 | 80 |
| 0, 0 | 0 |
| 75, 80 | 77.5 |
Cevabı göster
| Girdi | Çıktı | Sonuç |
|---|---|---|
| 70, 90 | 80 | geçti |
| 0, 0 | 0 | geçti |
| 75, 80 | 77 | kaldı |
- 155 / 2: iki int bölünür, kesir atılır → 77.
- Olağan durum ve alt sınır testleri hatayı göstermedi; tek toplamlı girdi gösterdi. Farklı türde örnek girdiler seçmek bu yüzden önemlidir.
- Düzeltme:
double ort = (n1 + n2) / 2.0;→ 77.5.