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çış dizileriMetin birleştirmeAçıklamalarHata türleri
Sercan KÜLCÜ

Ç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.

Ç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?

KonsolDers:

print satır sonu eklemez: imleç boşluğun hemen arkasında kalır.

KonsolDers: Java

println aynı satıra "Java" yazar, sonra satır sonu ekler.

"1" yazılır, imleç aynı satırda.

KonsolDers: Java12

"2" hemen arkasına: 12 (arada boşluk yok).

Argümansız println() yalnızca satırı bitirir.

KonsolDers: Java12Son

"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") 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 · 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
  • \t imleci 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 print iki satır üretti: \n satı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; \n satı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 \t gö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; \y tanımlı bir kaçış dizisi değildir.
  • Düzeltme: "Dosya: C:\\yeni" → çıktı Dosya: C:\yeni.
  • Dikkat: "C:\new" derlenirdi ama \n yeni 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 + 3 aynen.
  • 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?

a40

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.

a40b7c5

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

Ç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.
a60b80a+b/2100(a+b)/270

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.

x10y0

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);
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; 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.

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.