İçeriğe geç
Yazılım Dilleri

Java nasıl öğrenilir? Örneklerle sekiz başlangıç dersi

"Bir kere yaz, her yerde çalıştır" sloganıyla bilinen, çok sağlam ve yaygın bir dil. Kuralları biraz fazladır ama büyük projelerde bu bir avantajdır.

Webino App Ekibi Son güncelleme:
Bu sayfada · 22 başlık

Java Hakkında Bilmen Gereken 5 Temel Soru

Ne İçin Kullanılır?

Büyük ölçekli kurumsal arka plan (backend) sistemleri, yerel Android mobil uygulamaları ve finansal işlem platformları geliştirmek için kullanılır.

Neler Yapılır?

Bankacılık ve ödeme altyapıları, Spring Boot ile ölçeklenebilir mikroservisler, yerel Android uygulamaları ve büyük veri (Hadoop/Spark) sistemleri yapılır.

Nerede Kullanılır?

Küresel bankalarda, telekom şirketlerinde, e-ticaret devlerinde (Amazon, eBay) ve kurumsal yazılım mimarilerinde kullanılır.

Nasıl & Nerede Çalıştırılır?

JDK (Java Development Kit) yüklenir; IntelliJ IDEA, Eclipse veya VS Code içinde yazılır ve Java Virtual Machine (JVM) üzerinde çalıştırılır.

Neden Önemlidir?

“Bir kere yaz, her yerde çalıştır” (WORA) felsefesiyle milyarlarca cihazda çalışır; geriye dönük uyumluluğu, kararlılığı ve devasa kurumsal pazar payı rakipsizdir.

Java ne için kullanılır?

Android uygulamaları

Bankacılık ve büyük şirket sistemleri

Spring ile web sunucuları

⛏️

Oyunlar (Minecraft: Java Edition)

Java hakkında kısaca

Java, 1995 yılında Sun Microsystems'te James Gosling ve ekibi tarafından geliştirildi; bugün Oracle'a aittir. Java kodu, uyumlu bir çalışma ortamına kurulan "Java Sanal Makinesi" (JVM) üzerinde çalıştığı için "bir kere yaz, her yerde çalıştır" sloganıyla bilinir.

Artıları

  • Çok kararlı ve güvenilir; bankalar ve büyük şirketler yıllardır kullanıyor.
  • Kurumsal uygulamalar ve JVM ekosisteminde kullanılır; iş talebi bölgeye ve zamana göre değişir.
  • Çok geniş kütüphane ve araç desteği.

Eksileri

  • Küçük programlar için bile çok fazla yazmak gerekir.
  • Yeni başlayanlar için kuralları (sınıflar, türler) başta kafa karıştırıcı olabilir.

Bilgisayarına nasıl kurulur?

Sayfadaki "Kendin dene" alanları için kurulum gerekmez. Kendi bilgisayarında çalışmak istediğinde bu adımları izle.

  1. 1

    adoptium.net adresinden ücretsiz JDK'yı (Temurin, LTS sürümü) indirip kur.

  2. 2

    Terminalde kurulumu kontrol et:

    Terminal
    java -version
  3. 3

    Main.java adında bir dosya oluşturup birinci dersteki kodu yaz, sonra derleyip çalıştır:

    Terminal
    javac Main.java
    java Main
  4. 4

    Kod yazmak için temel özellikleri ücretsiz IntelliJ IDEA veya VS Code ve "Extension Pack for Java" eklentisini kullan.

  5. 5

    IntelliJ IDEA artık birleşik dağıtım sunar; temel Java/Kotlin özellikleri ücretsiz, gelişmiş Ultimate özellikleri aboneliklidir. Güncel kurulum: JetBrains belgesi ↗

Örneklerle adım adım öğren

Her derste kısa bir açıklama, kod ve kodun ekrana ne yazdığını göreceksin. " Kendin dene" ile kodu hemen değiştirip çalıştırabilirsin.

Java Nerede ve Hangi Uygulamayla Çalıştırılır? (Kurulum ve Ayarlar)

Java kodlarını bilgisayarında derleyip çalıştırmak için önce JDK (Java Development Kit) kurmalı, ardından IntelliJ IDEA Community veya VS Code gibi bir geliştirme ortamı (IDE) seçmelisin.

Java Kurarken Yapılması Gereken Kritik Ayarlar

  • ✓

    1. JDK 21 (LTS) Kurulumu ve PATH Ayarı

    Adoptium (Eclipse Temurin) veya Oracle sitesinden JDK 21 LTS sürümünü indir. Kurulum sihirbazında "Add to PATH" ve "Set JAVA_HOME variable" seçeneklerini mutlaka etkinleştir.

  • ✓

    2. Dosya Adı = Sınıf Adı Kuralı (Çok Önemli)

    Java’da public class Main yazdıysan dosyanın adı büyük/küçük harf duyarlı olarak birebir Main.java olmak zorundadır; aksi halde derleyici hata verir.

  • ✓

    3. IntelliJ IDEA veya VS Code İlk Ayarı

    IntelliJ IDEA’da "New Project" derken "Download JDK" seçeneğiyle JDK’yı otomatik tanımlayabilirsin. VS Code’da ise "Extension Pack for Java" eklentisini kurman yeterlidir.

  • ✓

    4. Derleme (javac) ve Çalıştırma (java)

    Terminalde önce javac Main.java ile kodu bytecode (.class) haline getir, ardından uzantı yazmadan java Main komutuyla çalıştır.

Java kurulum ayarları, eklentiler ve ilk çalıştırma ekranı şeması
Java için önerilen kurulum onay kutuları, eklentiler ve ilk çalıştırma komutu özeti.
Java geliştirme için VS Code ve Extension Pack for Java kurulum ekranı
Java geliştirme için VS Code ve Extension Pack for Java kurulum ekranı.

İlk Java Kodunu Çalıştırma Komutları:

Java Kurulum & Çalıştırma
# 1. Java derleyicisinin (JDK) kurulu olduğunu kontrol et:
java --version
javac --version

# 2. Main.java dosyasını derle (.class dosyası üretir):
javac Main.java

# 3. Derlenen programı çalıştır (.java uzantısı yazılmaz!):
java Main
1

Ekrana yazı yazdırma

Java'da her kod bir sınıfın (class) ve main adlı ana bölümün içinde yazılır. İlk bakışta uzun görünür ama her programda aynıdır. System.out.println ekrana yazı yazar.

Java
public class Main {
    public static void main(String[] args) {
        System.out.println("Merhaba Dünya!");
    }
}

▶ Sonuç

Merhaba Dünya!

Bu konuyu uygulayarak öğren

Metin ile çalışan kod arasındaki farkı görmek ve çıktıyı okuyabilmek.

Program, bilgisayarın izlediği talimatların belirli bir sözdizimiyle yazılmış hâlidir. İlk görevimiz ekrana bir bilgi yazdırmak. Metni tırnak içinde verdiğimizde onu bir değer olarak kullanırız; tırnak dışında kalan sözcük ise değişken veya komut adı olarak yorumlanabilir. Bu ayrımı anlamak sonraki örneklerde isim ve metni birbirine karıştırmanı önler.

Java · Ekrana yazı yazdırma — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Ekrana yazı yazdırma

Metin ile çalışan kod arasındaki farkı görmek ve çıktıyı okuyabilmek.

Kavramı kur

Program, bilgisayarın izlediği talimatların belirli bir sözdizimiyle yazılmış hâlidir. İlk görevimiz ekrana bir bilgi yazdırmak. Metni tırnak içinde verdiğimizde onu bir değer olarak kullanırız; tırnak dışında kalan sözcük ise değişken veya komut adı olarak yorumlanabilir. Bu ayrımı anlamak sonraki örneklerde isim ve metni birbirine karıştırmanı önler.

Neden böyle çalışıyor?

Çıktı, programın ne yaptığını gözlemlemenin en basit yollarından biridir. Çalıştırmadan önce kaç satır beklediğini ve her satırda ne yazacağını not et. Sonra gerçek çıktıyla karşılaştır. Hata mesajı görürsen sonuca atlamak yerine ilk hata satırını oku; eksik tırnak veya parantez çoğu zaman sonraki satırların da yanlış görünmesine neden olur.

Çalışma sırası

Yazdığın dosya ile çalıştırdığın dosyanın aynı olduğunu doğrula. Editördeki değişikliği kaydetmeden eski sürümü çalıştırmak çok yaygın bir başlangıç hatasıdır. Bu derste dış paket, hesap veya ağ bağlantısı gerekmez; yalnızca dilin temel çıktı mekanizmasını öğreniyoruz.

İkinci örnek · 1

İlk çıktı ifadesi bir metin değerini ekrana gönderir. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    System.out.println("İlk satır");
    System.out.println("İkinci satır");
  }
}

Beklenen sonucu oku

Çıktı metnini değiştirmek ile komut adını değiştirmek aynı şey değildir.

Beklenen çıktı: İlk satır İkinci satır

Bir değeri sen değiştir

İlk mesajı kendi belirlediğin kısa bir cümleyle değiştir. İki ayrı çıktı ifadesi kullanarak iki satır oluştur.

Hata nereden gelir?

Metnin tırnağını unutmak, dilin o metni bir isim sanmasına neden olabilir; tırnak çiftini kontrol et.

Kendi çözümünü kur

Bir tırnağı bilinçli olarak kaldır; çıkan ilk hata mesajını not et, sonra hatayı düzelt. Önce çalışan kodun kopyasını tut. Yalnızca tırnak içindeki metni değiştirerek başla.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    System.out.println("Bugün başladım");
    System.out.println("Yarın devam edeceğim");
  }
}

Kendini kontrol et

Bir metin değerinin çevresindeki tırnakları kaldırmak neden sorun çıkarabilir? Yanıt: Dil, sözcüğü metin yerine bir isim veya sözdizimi öğesi olarak yorumlayabilir; aynı anlama gelmez.

Beklenen çıktı: Bugün başladım Yarın devam edeceğim

Ayrıntılı ders, alıştırmalar ve çözümler
Ekrana yazdırma komutunun temel amacı nedir?

2

Değişkenler: bilgiyi saklamak

Değişken, bir bilgiyi saklayan isimli bir kutudur. Java'da kutunun türünü yazarsın: String yazı, int tam sayı. (Bundan sonraki örneklerde sadece main içine yazılacak kısmı gösteriyoruz.)

Java
String isim = "Ayşe";
int yas = 25;

System.out.println(isim + " bu yıl " + yas + " yaşında.");

▶ Sonuç

Ayşe bu yıl 25 yaşında.

Bu konuyu uygulayarak öğren

Metin, sayı ve değişken adı arasındaki farkı açıklayıp basit bir hesap yapmak.

Değişken bir değere program içinde bir adla erişmemizi sağlar. Adın kendisi ile saklanan değer farklı şeylerdir: ürün adını değiştirince değişkenin adı değişmez. Anlamlı isimler kullanmak, birkaç satır sonra ne hesapladığını yeniden anlayabilmeni sağlar. Bir harf yerine fiyat veya adet gibi görevini anlatan isimlerle başla.

Java · Değişkenler: bilgiyi saklamak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Değişkenler: bilgiyi saklamak

Metin, sayı ve değişken adı arasındaki farkı açıklayıp basit bir hesap yapmak.

Kavramı kur

Değişken bir değere program içinde bir adla erişmemizi sağlar. Adın kendisi ile saklanan değer farklı şeylerdir: ürün adını değiştirince değişkenin adı değişmez. Anlamlı isimler kullanmak, birkaç satır sonra ne hesapladığını yeniden anlayabilmeni sağlar. Bir harf yerine fiyat veya adet gibi görevini anlatan isimlerle başla.

Neden böyle çalışıyor?

Sayıya benzeyen bir metin her dilde kendiliğinden hesaplanabilir bir sayıya dönüşmez. "25" ile 25 arasındaki farkı düşün. Dillerin tür kuralları farklıdır; bu yüzden birleştirme ve toplamanın hangi operatörle yapıldığını örnek üzerinde izle. Formdan veya dosyadan gelen veriyi körlemesine sayısal kabul etme.

Çalışma sırası

Bir hesabı üç aşamaya böl: girdileri tanımla, sonucu hesapla, sonucu göster. Aynı sayıyı kodun farklı yerlerine kopyalamak yerine tek bir değişkene ad ver. Değeri değiştirip bütün hesabın aynı kurala göre güncellendiğini kontrol et; böylece kod ile sabit cevap arasındaki farkı görürsün.

İkinci örnek · 1

fiyat bir ürünün birim bedelidir; adet kaç tane alındığını belirtir. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    int fiyat = 25;
    int adet = 3;
    int toplam = fiyat * adet;
    System.out.println("Toplam: " + toplam);
  }
}

Beklenen sonucu oku

Çıktı ifadesinde hem açıklama hem sayısal sonuç bulunur.

Beklenen çıktı: Toplam: 75

Bir değeri sen değiştir

Fiyatı 25, adedi 3 yap; çalıştırmadan önce sonucu hesapla. Yalnızca adet değerini 0 yap; toplamın neden değiştiğini anlat.

Hata nereden gelir?

Hesabı yapmak yerine hazır 75 sayısını yazdırmak değişken kullanmayı öğretmez; sonuç girdilerden üretilmeli.

Kendi çözümünü kur

Bir indirim değişkeni ekle ve son tutarı toplam eksi indirim olarak hesapla. Değerleri değiştirirken hesap ifadesini aynı tut; aynı kuralın yeni girdilerle çalıştığını gör.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    int fiyat = 20;
    int adet = 4;
    int toplam = fiyat * adet;
    System.out.println("Toplam: " + toplam);
  }
}

Kendini kontrol et

Toplamı sabit 75 olarak yazmakla fiyat * adet kullanmak arasındaki fark nedir? Yanıt: Hesap ifadesi girdiler değiştiğinde yeniden doğru sonucu üretir; sabit 75 aynı kalır.

Beklenen çıktı: Toplam: 80

Ayrıntılı ders, alıştırmalar ve çözümler
Değişken ne işe yarar?

3

Koşullar: karar vermek

Program bir koşulu kontrol eder: koşul doğruysa ilk bloğu, değilse else bloğunu çalıştırır. Günlük hayattaki "eğer ... ise" cümlesinin aynısı. Koşul parantez ( ) içine, çalışacak kod süslü parantez { } içine yazılır.

Java
int sicaklik = 30;

if (sicaklik > 25) {
    System.out.println("Hava sıcak, şort giy!");
} else {
    System.out.println("Hava serin, mont al.");
}

▶ Sonuç

Hava sıcak, şort giy!

Bu konuyu uygulayarak öğren

Koşulun sonucuna göre farklı akışlar çalıştırmak ve sınır değerleri test etmek.

Koşul, bir soruya doğru veya yanlış cevabı veren ifadedir. “Puan en az 50 mi?” gibi bir soruyu karşılaştırma operatörüyle yazarız. if doğruysa bir blok, else varsa yanlış durumda başka bir blok çalışır. Programın hangi yolu izleyeceğini girdiler belirler; metin olarak “doğru” yazdırmak koşulun kendisi değildir.

Java · Koşullar: karar vermek — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Koşullar: karar vermek

Koşulun sonucuna göre farklı akışlar çalıştırmak ve sınır değerleri test etmek.

Kavramı kur

Koşul, bir soruya doğru veya yanlış cevabı veren ifadedir. “Puan en az 50 mi?” gibi bir soruyu karşılaştırma operatörüyle yazarız. if doğruysa bir blok, else varsa yanlış durumda başka bir blok çalışır. Programın hangi yolu izleyeceğini girdiler belirler; metin olarak “doğru” yazdırmak koşulun kendisi değildir.

Neden böyle çalışıyor?

Karşılaştırmada sınır noktaları önemlidir. puan > 50 ile puan >= 50 aynı değildir: 50 değeri ilkinde dışarıda, ikincisinde içeridedir. Kuralı doğal dille yazıp koddaki işaretle eşleştir. Ardından sınırın bir altı, sınırın kendisi ve bir üstü için sonucu ayrı ayrı tahmin et.

Çalışma sırası

Bir örneğin tek bir değerle çalışması bütün olasılıkları kapsadığı anlamına gelmez. Küçük bir test tablosu yap: girdi, beklenen dal, gözlenen çıktı. Birden fazla koşul eklediğinde sıranın etkisini düşün; ilk doğru dal, sonraki dallara geçilmesini engelleyebilir. Her koşulun kapsadığı aralığı açık tut.

İkinci örnek · 1

puan karşılaştırmanın girdisidir. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    int puan = 50;
    if (puan >= 50) {
      System.out.println("Geçti");
    } else {
      System.out.println("Tekrar dene");
    }
  }
}

Beklenen sonucu oku

Karşılaştırma değeri gözlemler; atama ile karıştırılmamalıdır.

Beklenen çıktı: Geçti

Bir değeri sen değiştir

49, 50 ve 51 değerleri için beklenen sonucu bir tabloya yaz. Karşılaştırmayı > yapıp yalnızca sınır değerde neyin değiştiğini kontrol et.

Hata nereden gelir?

Atama ile karşılaştırmayı karıştırmak programın anlamını değiştirebilir; operatörün dildeki görevini kontrol et.

Kendi çözümünü kur

80 ve üstü için ayrı bir mesaj ekle; en yüksek aralığı önce değerlendir. “En az” ifadesi eşitliği de kapsar. Teste yalnızca ortadaki değerle başlama.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    int puan = 49;
    if (puan >= 50) {
      System.out.println("Geçti");
    } else {
      System.out.println("Tekrar dene");
    }
  }
}

Kendini kontrol et

“En az 50” kuralı için 50 puanı hangi dalda değerlendirilmelidir? Yanıt: Başarılı/geçerli dalda; kural eşitliği de kapsar. Bu nedenle uygun karşılaştırma >= 50 olur.

Beklenen çıktı: Tekrar dene

Ayrıntılı ders, alıştırmalar ve çözümler
Koşul yanlışsa else bölümü ne zaman çalışır?

4

Döngüler: tekrar etmek

Aynı işi elle defalarca yazmak yerine döngü kullanırız. Bu örnek 1'den 3'e kadar sayar ve her seferinde bir satır yazar. sayi++ "sayıyı 1 artır" demek.

Java
for (int sayi = 1; sayi <= 3; sayi++) {
    System.out.println("Tekrar " + sayi);
}

▶ Sonuç

Tekrar 1
Tekrar 2
Tekrar 3

Bu konuyu uygulayarak öğren

Tekrarlanan bir işi döngüye dönüştürmek ve kaç tekrar oluştuğunu açıklamak.

Döngü aynı işi farklı değerler için tekrarlar. Her adımda kullanılan değişkene bakarak o anda hangi öğenin işlendiğini anlayabilirsin. Aynı çıktı satırını üç kez kopyalamak yerine döngü yazmak, tekrar sayısını ve veriyi tek bir yerden değiştirmeyi sağlar. Ancak tekrarın nerede duracağını açıkça belirlemelisin.

Java · Döngüler: tekrar etmek — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Döngüler: tekrar etmek

Tekrarlanan bir işi döngüye dönüştürmek ve kaç tekrar oluştuğunu açıklamak.

Kavramı kur

Döngü aynı işi farklı değerler için tekrarlar. Her adımda kullanılan değişkene bakarak o anda hangi öğenin işlendiğini anlayabilirsin. Aynı çıktı satırını üç kez kopyalamak yerine döngü yazmak, tekrar sayısını ve veriyi tek bir yerden değiştirmeyi sağlar. Ancak tekrarın nerede duracağını açıkça belirlemelisin.

Neden böyle çalışıyor?

Başlangıç, devam koşulu ve ilerleme adımını birbirinden ayır. Bitiş değeri bazı yapılarda dahil, bazılarında hariçtir. Sözdizimini ezberlemek yerine 1, 2, 3 gibi küçük bir örneği elde izle. Her tekrarda değişkenin değerini, üretilen çıktıyı ve bir sonraki değeri tabloya yaz.

Çalışma sırası

Toplama gibi görevlerde döngü boyunca birikim tutan bir değişken kullanılır. Başlangıç değeri genellikle toplama için 0 olur. Bu değişkeni her turda yeniden sıfırlarsan önceki sonuçları kaybedersin. Başlangıç hazırlığını döngünün dışında, tekrar eden hesabı döngünün içinde düşün.

İkinci örnek · 1

toplam döngü başlamadan önce hazırlanır. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    int toplam = 0;
    for (int sayi = 1; sayi <= 3; sayi++) {
      toplam += sayi;
    }
    System.out.println(toplam);
  }
}

Beklenen sonucu oku

Son çıktı döngüden sonra yalnızca bir kez yazdırılır.

Beklenen çıktı: 6

Bir değeri sen değiştir

1, 2 ve 3 sayılarının toplamını beklenen sonuçla karşılaştır. Tekrar aralığını 1–5 yap; toplamın 15 olduğunu doğrula.

Hata nereden gelir?

Bitiş sınırını dahil/hariç karıştırmak bir eksik veya fazla tekrar üretir; ilk ve son değeri kontrol et.

Kendi çözümünü kur

Döngü içinde hem sayi hem ara toplamı yazdırarak hesabın nasıl biriktiğini incele. Ara toplamı kaydetmek, hangi turda hata yaptığını görmeni sağlar.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    int toplam = 0;
    for (int sayi = 1; sayi <= 5; sayi++) {
      toplam += sayi;
    }
    System.out.println(toplam);
  }
}

Kendini kontrol et

Biriken toplamı her döngü turunda 0 yapmak neden yanlıştır? Yanıt: Önceki turlardaki birikimi siler; toplam yalnızca son turun katkısını tutar.

Beklenen çıktı: 15

Ayrıntılı ders, alıştırmalar ve çözümler
Döngünün amacı nedir?

5

Fonksiyonlar: kodu tekrar kullanmak

Fonksiyon, bir işi yapan ve bir isim verdiğin kod parçasıdır. Bir kere yazarsın, istediğin kadar çağırırsın. Java'da fonksiyonlara metot denir ve main'in dışına, sınıfın içine yazılır.

Java
public class Main {
    static String selamla(String isim) {
        return "Merhaba " + isim + "!";
    }

    public static void main(String[] args) {
        System.out.println(selamla("Mehmet"));
    }
}

▶ Sonuç

Merhaba Mehmet!

Bu konuyu uygulayarak öğren

Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.

Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.

Java · Fonksiyonlar: kodu tekrar kullanmak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Fonksiyonlar: kodu tekrar kullanmak

Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.

Kavramı kur

Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.

Neden böyle çalışıyor?

Bir değeri döndürmek ile ekrana yazdırmak farklı işlerdir. return çağıran koda bir sonuç verir; çıktı komutu ise bir bilgiyi görünür kılar. Hesaplayan fonksiyonun sonucunu başka hesaplarda kullanmak istiyorsan değeri döndür. Yazdırmayı çağıran koda bırakmak fonksiyonu denemeyi ve yeniden kullanmayı kolaylaştırır.

Çalışma sırası

İyi bir başlangıç fonksiyonu küçük ve tek amaçlıdır. Adını bir eylem gibi seç, hangi girdileri kabul ettiğini ve hangi sonucu ürettiğini yaz. Bir normal, bir sınır ve mümkünse bir beklenmeyen durum düşün. Her olası sorunu tek fonksiyona doldurmak yerine önce sözleşmesini anlaşılır kıl.

İkinci örnek · 1

Fonksiyonun adı yapılan işi anlatır. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  static int ikiKat(int sayi) { return sayi * 2; }
  public static void main(String[] args) {
    System.out.println(ikiKat(4));
    System.out.println(ikiKat(7));
  }
}

Beklenen sonucu oku

İki çağrı aynı kuralı farklı girdilerle uygular.

Beklenen çıktı: 8 14

Bir değeri sen değiştir

ikiKat fonksiyonunu 4 ve 7 için çağır; 8 ve 14 bekle. Sonucu bir değişkene alıp üzerine 1 ekle; yazdırmadan da kullanılabildiğini göster.

Hata nereden gelir?

Fonksiyonu tanımlamak onu çalıştırmaz; ayrıca çağırman gerekir.

Kendi çözümünü kur

İki sayı alıp toplam döndüren yeni bir fonksiyon yaz; üç farklı girdi çiftiyle kontrol et. Fonksiyonun içinde sadece hesabı döndür. Sonucu görmek için çağrıdan sonra yazdır.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  static int ikiKat(int sayi) { return sayi * 2; }
  public static void main(String[] args) {
    System.out.println(ikiKat(5));
    System.out.println(ikiKat(0));
  }
}

Kendini kontrol et

Bir fonksiyonun sonucu başka hesapta kullanılacaksa neden yalnızca yazdırmak yeterli değildir? Yanıt: Yazdırma ekrana yan etki üretir; çağıran koda kullanılabilir sonuç vermek için uygun bir dönüş değeri gerekir.

Beklenen çıktı: 10 0

Ayrıntılı ders, alıştırmalar ve çözümler
Fonksiyonda return ne yapar?

6

Mini proje: sepet toplamı

Fiyatları bir diziye koyuyoruz ve döngüyle tek tek toplayıp sonucu yazıyoruz.

Java
int[] fiyatlar = {45, 120, 30};
int toplam = 0;

for (int fiyat : fiyatlar) {
    toplam += fiyat;
}

System.out.println("Sepet toplamı: " + toplam + " TL");

▶ Sonuç

Sepet toplamı: 195 TL

Bu konuyu uygulayarak öğren

Veri, tekrar ve hesabı küçük bir sepet uygulamasında birleştirmek.

Bu proje önceki derslerde ayrı öğrendiğin parçaları bir akışa dönüştürür. Girdimiz fiyatlar koleksiyonu, işlemimiz toplama ve indirim, çıktımız ödenecek tutardır. Kod yazmadan önce bu üç bölümü yazmak, hesap kuralı ile ekrana yazı yazdırmayı birbirinden ayırır. Sonuç değişkenini hazır bir sayıya eşitlemek yerine girdilerden hesaplat.

Java · Mini proje: sepet toplamı — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Mini proje: sepet toplamı

Veri, tekrar ve hesabı küçük bir sepet uygulamasında birleştirmek.

Kavramı kur

Bu proje önceki derslerde ayrı öğrendiğin parçaları bir akışa dönüştürür. Girdimiz fiyatlar koleksiyonu, işlemimiz toplama ve indirim, çıktımız ödenecek tutardır. Kod yazmadan önce bu üç bölümü yazmak, hesap kuralı ile ekrana yazı yazdırmayı birbirinden ayırır. Sonuç değişkenini hazır bir sayıya eşitlemek yerine girdilerden hesaplat.

Neden böyle çalışıyor?

Fiyatları tek tek dolaşıp biriken toplama ekliyoruz. Döngü bittikten sonra indirimi bir kez uyguluyoruz. İndirimi her ürün içinde çıkarmak farklı bir kuraldır; bir sepet indirimi ile ürün başına indirimi karıştırma. Küçük bir test tablosuyla hangi kuralı uyguladığını gösterebilirsin.

Çalışma sırası

Boş sepet, sıfır indirim ve toplamdan büyük indirim gibi durumları ayrıca düşün. Bu dersteki örnek küçük tam sayı tutarlar içindir; gerçek ödeme yazılımı değildir. Para türü, yuvarlama, vergi ve girdi doğrulama kurallarını ürün gereksinimine göre açıkça tanımlamak gerekir. Önce doğru temel akışı kur, sonra kapsamı büyüt.

İkinci örnek · 1

fiyatlar veri grubunu taşır. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    int[] fiyatlar = {20, 35, 15};
    int toplam = 0;
    for (int fiyat : fiyatlar) { toplam += fiyat; }
    int indirim = 10;
    System.out.println("Ödenecek: " + (toplam - indirim));
  }
}

Beklenen sonucu oku

10 birim indirim sonradan tek kez çıkarılır; sonuç 60 olur.

Beklenen çıktı: Ödenecek: 60

Bir değeri sen değiştir

Ürün fiyatlarını değiştir ve toplamı elde kontrol et. İndirimi 0 yap; sonucun ham toplamla aynı olduğunu doğrula.

Hata nereden gelir?

İndirimi döngü içinde uygulamak her turda tekrar indirim yapar; iş kuralı sepet indirimi ise dışarı taşı.

Kendi çözümünü kur

Boş sepet ve toplamdan büyük indirim için nasıl davranılacağını yaz; bu kuralları koduna bir koşulla ekle. Önce üç ara toplamı yazdır; doğru birikim varsa indirimi döngü dışına koy.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    int[] fiyatlar = {20, 35, 15};
    int toplam = 0;
    for (int fiyat : fiyatlar) { toplam += fiyat; }
    int indirim = 100;
    System.out.println("Ödenecek: " + Math.max(0, toplam - indirim));
  }
}

Kendini kontrol et

Sepetin tamamına bir kez uygulanan indirim döngünün neresinde olmalıdır? Yanıt: Ürün toplamı hesaplandıktan sonra; döngü içinde her üründe tekrar uygulanmamalıdır.

Beklenen çıktı: Ödenecek: 0

Ayrıntılı ders, alıştırmalar ve çözümler
Toplam hesaplayan bir programı nasıl kontrol edersin?

7

Listeler: birden çok bilgiyi saklamak

ArrayList, birden fazla değeri sırayla tutar ve büyüyebilir. add eleman ekler, get(0) ilk elemanı verir, size eleman sayısını verir. (Normalde dosyanın en üstüne import java.util.ArrayList; yazılır; burada kısa olsun diye tam adını kullandık.)

Java
java.util.ArrayList<String> alisveris = new java.util.ArrayList<>();
alisveris.add("ekmek");
alisveris.add("süt");
alisveris.add("yumurta");

System.out.println(alisveris.get(0));
System.out.println(alisveris.size() + " ürün var");

▶ Sonuç

ekmek
3 ürün var

Bu konuyu uygulayarak öğren

Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.

Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.

Java · Listeler: birden çok bilgiyi saklamak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Listeler: birden çok bilgiyi saklamak

Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.

Kavramı kur

Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.

Neden böyle çalışıyor?

Koleksiyonun uzunluğu ile son geçerli indis farklıdır. Üç öğe varsa uzunluk 3, son indis 2 olur. Bir öğeyi ekledikten veya sildikten sonra bu değerler değişebilir. Sabit bir son indis varsaymak yerine uzunluğu ve dolaşma yöntemini kullanmayı öğren.

Çalışma sırası

Veri yapısına hangi işi yaptığını açıkça ayır: sona eklemek, var olan öğeyi değiştirmek ve yeni bir koleksiyon üretmek aynı işlem değildir. Çıktıyı kontrol ederken hem içerik hem sıra hem de öğe sayısını incele. Küçük örnekte bunları doğru kurmak daha sonra dosya ve API verilerini işlemenin temelidir.

İkinci örnek · 1

Başlangıç koleksiyonu iki isim içerir. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    java.util.List<String> isimler = new java.util.ArrayList<>();
    isimler.add("Elif");
    isimler.add("Mert");
    isimler.add("Deniz");
    System.out.println(isimler.get(0));
    System.out.println(isimler.get(2));
    System.out.println(isimler.size());
  }
}

Beklenen sonucu oku

Öğe sayısı 3 olur; son geçerli indis 2 olarak kalır.

Beklenen çıktı: Elif Deniz 3

Bir değeri sen değiştir

Başlangıçtaki isimleri değiştir; sıra ve indisleri kâğıda yaz. Bir isim daha ekle; sayının 4 olduğunu doğrula.

Hata nereden gelir?

Uzunluğu son indis gibi kullanmak sınır dışına erişir; üç öğede son konum 2’dir.

Kendi çözümünü kur

Koleksiyonu döngüyle dolaşıp bütün isimleri yazdır; elle indis tekrarlamak yerine uygun dolaşma yapısını seç. Koleksiyonun her değişiminden sonra içerik listesini ve uzunluğu ayrı ayrı not et.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    java.util.List<String> isimler = new java.util.ArrayList<>();
    isimler.add("Elif");
    isimler.add("Mert");
    isimler.add("Ece");
    System.out.println(isimler.get(0));
    System.out.println(isimler.get(2));
    System.out.println(isimler.size());
  }
}

Kendini kontrol et

Üç öğeli sıfır tabanlı bir koleksiyonda son geçerli indis nedir? Yanıt: 2; uzunluk 3 olması 3 indisinin var olduğu anlamına gelmez.

Beklenen çıktı: Elif Ece 3

Ayrıntılı ders, alıştırmalar ve çözümler
Çoğu dilde listenin ilk elemanının indeksi nedir?

8

Haritalar: bilgiyi isimle saklamak

Map, her değeri bir anahtarla saklar; tıpkı bir telefon rehberi gibi. put ekler, get anahtarla değeri getirir. LinkedHashMap eklediğin sırayı korur.

Java
java.util.Map<String, String> ogrenci = new java.util.LinkedHashMap<>();
ogrenci.put("isim", "Ayşe");
ogrenci.put("sehir", "İzmir");

System.out.println(ogrenci.get("isim"));
for (String anahtar : ogrenci.keySet()) {
    System.out.println(anahtar + ": " + ogrenci.get(anahtar));
}

▶ Sonuç

Ayşe
isim: Ayşe
sehir: İzmir

Bu konuyu uygulayarak öğren

Bir kaydı anahtar-değer ilişkisiyle temsil edip eksik alanı ele almak.

Bir öğrencinin adı ve puanı aynı türden sıra öğeleri değildir; farklı anlamdaki alanlardır. Anahtar-değer yapısı, bu bilgilere konum yerine bir adla erişmeyi sağlar. Böylece 0 konumunun isim olduğunu hatırlamak yerine ad anahtarını okursun. Verinin hangi soruya cevap verdiği yapıda görünür hâle gelir.

Java · Haritalar: bilgiyi isimle saklamak — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.
Videoyla adım adım izle · 4:35

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Haritalar: bilgiyi isimle saklamak

Bir kaydı anahtar-değer ilişkisiyle temsil edip eksik alanı ele almak.

Kavramı kur

Bir öğrencinin adı ve puanı aynı türden sıra öğeleri değildir; farklı anlamdaki alanlardır. Anahtar-değer yapısı, bu bilgilere konum yerine bir adla erişmeyi sağlar. Böylece 0 konumunun isim olduğunu hatırlamak yerine ad anahtarını okursun. Verinin hangi soruya cevap verdiği yapıda görünür hâle gelir.

Neden böyle çalışıyor?

Her alanın var olacağını varsaymak gerçek veride hataya neden olur. Bir form gönderiminde veya API yanıtında şehir alanı eksik olabilir. Bu durumda varsayılan değer kullanmak, kayıt atlamak veya kullanıcıya düzeltme istemek farklı kararlardır. Önce eksik bilgiye uygulamanın nasıl davranacağını belirle.

Çalışma sırası

Aynı anahtara ikinci kez değer yazmak çoğu yapıda yeni bir bağımsız kayıt oluşturmaz; o anahtarın değerini değiştirir. Birden çok öğrenci saklayacaksan tek öğrenci sözlüğüne isim eklemek yerine kayıtları bir koleksiyonda toplaman gerekebilir. Yapıyı seçmeden önce “bir kayıt mı, birden çok kayıt mı?” sorusunu sor.

İkinci örnek · 1

ad ve puan farklı anlamdaki alanların anahtarlarıdır. Kodun tamamı yazılı derste bulunur.

Kod

public class Main {
  public static void main(String[] args) {
    java.util.Map<String, String> ogrenci = new java.util.HashMap<>();
    ogrenci.put("ad", "Elif");
    ogrenci.put("puan", "80");
    System.out.println(ogrenci.get("ad"));
    System.out.println(ogrenci.get("puan"));
    System.out.println(ogrenci.getOrDefault("sehir", "Belirtilmedi"));
  }
}

Beklenen sonucu oku

sehir olmadığı için açık bir yedek değer seçilir.

Beklenen çıktı: Elif 80 Belirtilmedi

Bir değeri sen değiştir

Öğrencinin adını ve puanını değiştir. sehir alanını ekle; yedek yerine gerçek değerin döndüğünü kontrol et.

Hata nereden gelir?

Anahtarı büyük/küçük harf farkıyla yazmak aynı alanı bulmayabilir; adlandırmayı tutarlı yap.

Kendi çözümünü kur

Eksik alanın ekranda nasıl anlatılacağını düşün; sessizce yanlış bir şehir uydurmak yerine açık bir eksik bilgi mesajı yaz. Önce bütün anahtarları yaz. Sonra bir anahtarı kaldırıp eksik bilgi yolunu dene.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

public class Main {
  public static void main(String[] args) {
    java.util.Map<String, String> ogrenci = new java.util.HashMap<>();
    ogrenci.put("ad", "Deniz");
    ogrenci.put("puan", "95");
    System.out.println(ogrenci.get("ad"));
    System.out.println(ogrenci.get("puan"));
    System.out.println(ogrenci.getOrDefault("sehir", "Belirtilmedi"));
  }
}

Kendini kontrol et

İki farklı öğrenci için aynı ad anahtarını tek sözlükte tekrar tekrar yazmak neden yetmez? Yanıt: Aynı anahtarın değeri güncellenir. Birden çok öğrenci için kayıtları ayrı tutan bir koleksiyon gerekir.

Beklenen çıktı: Deniz 95 Belirtilmedi

Ayrıntılı ders, alıştırmalar ve çözümler
Bir sözlükte bilgiye nasıl ulaşılır?

Java öğrenirken sık yapılan hatalar

Bunlarla karşılaşırsan panik yapma; herkesin başına gelir.

Dosya adı ile sınıf adının farklı olması

public class Main yazdıysan dosyanın adı da tam olarak Main.java olmalıdır.

Yazıları == ile karşılaştırmak

Java'da iki yazıyı karşılaştırmak için isim.equals("Ayşe") kullan; == beklenmedik sonuçlar verebilir.

Noktalı virgülü unutmak

Her komut ; ile biter. Unutursan "';' expected" hatası alırsın.

Daha fazlası için Yaygın Yazılım Hataları sayfasına bak.

Sonraki adımlar: öğrenme yol haritası

Java öğrenmeye devam etmek için bu sırayı izleyebilirsin.

  1. 1

    Temeller

    Bu sayfadaki 8 dersi bitir.

  2. 2

    Nesne yönelimli programlama

    Sınıf, nesne, kalıtım ve arayüz (interface) kavramlarını öğren.

  3. 3

    Alan seç

    Android için Kotlin'e geçiş yap ya da sunucu tarafı için Spring Boot öğren.

  4. 4

    Proje yap

    Bir kütüphane yönetim sistemi veya basit bir Android uygulaması geliştir.

Resmi kaynakJava'nın resmi öğrenme sitesi
Uygulamalı Öğrenme

Java Bilgini Pekiştir ve Uygulamaya Başla

Yalnızca teoride kalma! Java için hazırladığımız adım adım 8 interaktif ders, tarayıcıda kod deneme atölyeleri ve seviye tespit sınavıyla kendini hemen geliştir.

Kod oyun alanı

Java kodunu burada dene

Bir dersin kodunu seç ya da kendi kodunu yaz. Kodu editörde değiştir, sonra ▶ Çalıştır butonuna bas. Sonuç editördeki Output bölümünde görünür. Editör OneCompiler tarafından sağlanır.

Editör yükleniyor...

Sitenin dışında denemek istersen: Kurulum yapmadan denemek için programiz.com sitesindeki ücretsiz Online Compiler aracını aç, dili seç, kodu yapıştır ve Run butonuna bas. 2. dersten sonraki kısa örnekleri, ilk dersteki main bölümünün içine yapıştırarak çalıştırabilirsin.

Bitirme projesi: Koleksiyon tabanlı kitap takip konsolu

Kitapların adını ve okunma durumunu tutan küçük bir program yaz. Kullanıcı arayüzünden önce veriyi ve iş kurallarını doğru modellemeye odaklan.

  1. Main.java ve main giriş noktasını kur.
  2. Başlangıç verisini List içinde tut.
  3. Bir kitabı bulma ve toplamı hesaplama görevlerini ayrı metotlara ayır.
  4. Küçük bir Map ile kitap adını örnek bilgiye bağla.
  5. Bulunmayan kayıt ve boş liste durumlarını dene.
  6. String karşılaştırmasında içerik eşitliğini doğru yöntemle değerlendir.
  7. Programı derle ve çalıştır; bu iki aşamanın hatalarını ayır.
  8. Daha sonra kitap kaydını sınıfa taşıma planını yaz.

Projen bitti mi? Bunları doğrula

Temellerden sonra devam müfredatı

Bu modül başlangıç ve uygulamalı temel sağlar. Aşağıdaki konular ayrı derinleşme alanlarıdır; yalnızca bu sayfayı bitirmek bütün dili bildiğin anlamına gelmez.

  1. Nesne yönelimli tasarım ve generics
  2. Exceptions, dosyalar ve streams
  3. JUnit, modüller ve sunucu uygulamaları
Bitirme projesi için referans çözüm

Önce kendi projen üzerinde çalış. Bu küçük başlangıç çözümünü inceleyip görevlerde istenen ek durumlarla geliştir.

JAVA

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
    static boolean kitapVar(List<String> kitaplar, String aranan) {
        for (String kitap : kitaplar) {
            if (kitap.equals(aranan)) return true;
        }
        return false;
    }
    public static void main(String[] args) {
        List<String> kitaplar = new ArrayList<>();
        kitaplar.add("Küçük Prens");
        kitaplar.add("Örnek Öyküler");
        Map<String, Boolean> okundu = new HashMap<>();
        okundu.put("Küçük Prens", true);
        for (String kitap : kitaplar) {
            System.out.println(kitap + ": " +
                (okundu.getOrDefault(kitap, false) ? "Okundu" : "Sırada"));
        }
        System.out.println("Adet: " + kitaplar.size());
        System.out.println("Arama: " + kitapVar(kitaplar, "Başka Kitap"));
    }
}

Main.java adıyla kaydet; javac Main.java ve java Main komutlarıyla derle/çalıştır. Beklenen son iki satır: Adet: 2 / Arama: false. Yerel Java ortamında ayrıca doğrula.

Örnek proje dosyalarını indirResmî öğrenme müfredatı

Şimdi sen yap

Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.