Bölüm 5: Java'ya Giriş ve İlk Program

Java'ya Giriş ve İlk Program · Çalışma Soruları
JDK, JRE, JVMjavac ve javaİlk program ve mainprint ve printlnKaçış dizileriDizgi birleştirmeAçıklamalarHata türleri
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Çoktan Seçmeli · Java Çalışma Modeli

Soru 1: javac Nerede?

Java derleyicisi javac aşağıdakilerden hangisinin parçasıdır?

JDK+ geliştirme araçlarıJRE+ sınıf kütüphanesiJVMbytecode yürütür? javacjar, javadoc

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?

Merhaba.javakaynakjavacderleyiciMerhaba.classbytecodejava (JVM)çalıştırırMerhabaçıktı

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.

Adım Adım Çalıştırma · Java Çalışma Modeli

Soru 3: 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 4: Programın Giriş Noktası

JVM'nin java Uygulama komutuyla programı başlatabilmesi için sınıfta hangi metot bulunmalıdır? (Klasik kural; Java 24 ve öncesi.)

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). (Java 25'ten beri static olmayan void main da giriş noktası olabilir; B ve D yine geçersizdir.)

Çoktan Seçmeli · İlk Program

Soru 5: 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.

Çıktı Sorusu · İlk Program

Soru 6: 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") ve println("B") aynı satıra: AB, sonra satır sonu.
  • "D\n" içindeki \n satırı bitirir: CD.
  • println() boş bir satır üretir.
  • E 4. satıra yazılır; sonunda satır sonu yoktur.

Çıktı Sorusu · İlk Program

Soru 7: print ve println

Aşağıdaki kodun çıktısı nedir?

System.out.print("Merhaba ");
System.out.println("Dünya");
System.out.print("Java");
Cevabı göster
Merhaba Dünya
Java
  • print satırı bitirmez: "Merhaba " ile "Dünya" aynı satıra yazılır.
  • println yazdıktan sonra alt satıra geçer.
  • "Java" ikinci satıra yazılır; sonunda satır sonu yoktur.

Çıktı Sorusu · Kaçış Dizileri

Soru 8: 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
  • \t imleci sonraki sekme durağına (9. 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 print iki satır üretti: \n satır sonu karakteridir.

Çoktan Seçmeli · Kaçış Dizileri

Soru 9: Dizgi İçinde \n

Aşağıdaki kodun çıktısı nedir?

System.out.println("Ali\nVeli");

C: \n bir kaçış dizisidir ve satır sonu üretir; ekrana \ ve n yazılmaz. Çıktı iki satırdır: Ali, alt satırda Veli.

Çoktan Seçmeli · Kaçış Dizileri

Soru 10: Ç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 11: 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");
                                  ^
  • Dizgi içinde \ bir kaçış dizisi başlatır; \y tanımlı bir kaçış dizisi değildir.
  • Düzeltme: "Dosya: C:\\yeni" → çıktı Dosya: C:\yeni.
  • "C:\new" derlenirdi ama \n yeni satır olurdu!

Çıktı Sorusu · Dizgi Birleştirme

Soru 12: Sayı mı, Dizgi 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 dizgidir → 5 + 3 aynen.
  • Bir taraf dizgiyse + 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 · Dizgi Birleştirme

Soru 13: Metin ve İki Sayı

Aşağıdaki kodun çıktısı nedir?

System.out.println("Toplam: " + 2 + 3);

B: + soldan sağa işlenir. "Toplam: " + 2 bir String verir: "Toplam: 2". Ardından + 3 de birleştirme olur: Toplam: 23. Toplama için "Toplam: " + (2 + 3) yazılmalıdır.

Adım Adım Çalıştırma · Dizgi Birleştirme

Soru 14: 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.

Dizgiye eklenen her sayı dizgi olarak eklenir: "334", "3345".

En soldaki işlenen zaten dizgi.

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 15: 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 16: İ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 bildirim, B çağrı deyimi). D süslü parantezle gruplanmış bir bloktur. Bir deyimin içinde bir veya daha çok ifade bulunabilir.

Çıktı Sorusu · Açıklamalar

Soru 17: 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 18: İç İç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 19: 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 tip 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 20: 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 PrintStream

D: 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.

Çıktı Sorusu · Hata Türleri

Soru 21: 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.

Adım Adım Çalıştırma · Hata Türleri

Soru 22: Ç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 tipler 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.

x10y0

x ve y bildirilir.

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 23: 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);
GirdiBeklenen
70, 9080
0, 00
75, 8077.5
Cevabı göster
GirdiÇıktıSonuç
70, 9080geçti
0, 00geçti
75, 8077kaldı
  • 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; toplamı tek sayı olan girdi (155) gösterdi. Farklı türde örnek girdiler seçmek bu yüzden önemlidir.
  • Düzeltme: double ort = (n1 + n2) / 2.0; → 77.5.

Son

Java'ya Giriş ve İlk Program: Çalışma Soruları
Konu anlatımı: Java'ya Giriş ve İlk Program sunumu
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.