🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-2: Değişkenler, Veri Tipleri ve Scanner Sınıfı ☕

Konu Özeti

Java programlama dilinde değişkenler, ilkel ve referans veri tipleri, tip dönüşümleri ve kullanıcıdan girdi almak için Scanner sınıfının kullanımı ayrıntılı olarak anlatılıyor. İlkel veri tiplerinin boyutları ve kullanım örnekleri tablo halinde sunulurken, değişken isimlendirme kuralları ve tip dönüşümlerinde dikkat edilmesi gerekenler vurgulanıyor. Ayrıca, Scanner sınıfı ile konsoldan farklı türde veri okuma yöntemleri örnek kodlarla gösteriliyor.

🚀 BAŞTAN SONA JAVA DİLİ BÖLÜM-2: Değişkenler, Veri Tipleri ve Scanner Sınıfı ☕

Selamlar! Serimizin 2. bölümüne hoş geldiniz.

İlk bölümde Java'nın genel mimarisini (JDK, JRE, JVM), çalışma prensibini ve ilk "Hello World" programımızı incelemiştik. Bu bölümde ise verileri hafızada tutmamızı sağlayan **Değişkenleri (Variables)**, **Veri Tiplerini (Data Types)**, **Tip Dönüşümlerini (Type Casting)** ve kullanıcıdan girdi almamızı sağlayan **`Scanner` Sınıfını** öğreneceğiz.

---

📌 1. Java'da Veri Tipleri (Data Types) 🧬

Java **statik tipli (statically-typed)** bir dildir. Yani bir değişken tanımlanırken hangi türde veri tutacağı açıkça belirtilmelidir.

Java'da veri tipleri iki ana gruba ayrılır:
1. **İlkel (Primitive) Tipler:** Hafızanın **Stack** bölgesinde tutulan temel değerlerdir.
2. **Referans (Reference) Tipler:** Hafızanın **Heap** bölgesinde tutulan nesne adresleridir (String, Diziler, Class'lar).

### İlkel (Primitive) Veri Tipleri Tablosu:

| Tip | Boyut | Kullanım Amacı | Örnek |
| :--- | :--- | :--- | :--- |
| `byte` | 1 byte | Çok küçük tam sayılar (-128 ile 127) | `byte b = 100;` |
| `short` | 2 byte | Küçük tam sayılar | `short s = 5000;` |
| `int` | 4 byte | Standart tam sayılar (En çok kullanılan) | `int yasi = 25;` |
| `long` | 8 byte | Çok büyük tam sayılar (Sonuna 'L' konur) | `long nufus = 8000000000L;` |
| `float` | 4 byte | Ondalıklı sayılar (Sonuna 'f' konur) | `float fiyat = 19.99f;` |
| `double` | 8 byte | Hassas ondalıklı sayılar (Varsayılan) | `double pi = 3.14159;` |
| `char` | 2 byte | Tek karakter tutar (Tek tırnak kullanılır) | `char harf = 'A';` |
| `boolean` | 1 bit | Mantıksal değerler (`true` / `false`) | `boolean aktifMi = true;` |

---

✍️ 2. Değişken Tanımlama ve Kuralları 🔑

Değişken tanımlama sözdizimi: `VeriTipi degiskenAdi = deger;`

public class Main {
public static void main(String[] args) {
// Tam Sayı ve Ondalıklı Tanımlamalar
int ogrenciSayisi = 45;
double ortalama = 85.5;

// Karakter ve Mantıksal Tanımlamalar
char notHarfi = 'A';
boolean gectiMi = true;

// Metinsel (Referans Tip - String) Tanımlama
String isim = "Ahmet Yılmaz";

System.out.println("Öğrenci: " + isim);
System.out.println("Not Ortalaması: " + ortalama);
}
}

### Değişken İsimlendirme Kuralları:
- Java **CamelCase** yazım kuralını benimser (`ogrenciNotu`, `kullaniciAdi`).
- Değişken isimleri sayı ile başlayamaz (`1sayi` YANLIŞ, `sayi1` DOĞRU).
- Özel karakterler içeremez (`$` ve `_` hariç).
- Java anahtar kelimeleri (`class`, `int`, `static` vb.) değişken adı olarak kullanılamaz.

---

🔄 3. Tip Dönüşümleri (Type Casting) 🔀

Bir veri tipini başka bir veri tipine dönüştürme işlemidir. İki türü vardır:

### A. Otomatik Dönüşüm (Implicit / Widening Casting)
Küçük boyutlu bir veri tipinin büyük boyutlu bir veri tipine atanmasıdır. Veri kaybı riski olmadığı için Java bunu otomatik yapar.

int sayi = 100;
double ondalik = sayi; // Otomatik dönüşüm: 100.0

### B. Manuel Dönüşüm (Explicit / Narrowing Casting)
Büyük boyutlu bir veri tipinin küçük boyutlu bir tiplemeye zorlanmasıdır. Veri kaybı riski vardır, parantez `(tip)` içinde yazılır.

double fiyati = 99.99;
int tamsayiFiyat = (int) fiyati; // Manuel dönüşüm: 99 (Ondalık kısım atılır!)

---

📥 4. Konsoldan Girdi Alma: `Scanner` Sınıfı ⌨️

Kullanıcıdan klavye ile veri almak için `java.util.Scanner` sınıfını kullanırız.

`Scanner` sınıfını kullanabilmek için dosyanın en üstüne `import java.util.Scanner;` eklenmelidir.

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
// Scanner nesnesi oluşturuluyor
Scanner scanner = new Scanner(System.in);

System.out.print("Adınızı giriniz: ");
String isim = scanner.nextLine(); // Metin okur

System.out.print("Yaşınızı giriniz: ");
int yas = scanner.nextInt(); // Tam sayı okur

System.out.print("Maaş beklentinizi giriniz: ");
double maas = scanner.nextDouble(); // Ondalıklı sayı okur

System.out.println("\n--- Kullanıcı Bilgileri ---");
System.out.println("İsim: " + isim);
System.out.println("Yaş: " + yas);
System.out.println("Maaş Beklentisi: " + maas + " TL");

// Scanner nesnesini kapatma (Bellek sızıntısını önler)
scanner.close();
}
}

### Sık Kullanılan `Scanner` Metotları:
- `next()`: İlk boşluğa kadar olan kelimeyi okur.
- `nextLine()`: Tüm satırı metin olarak okur.
- `nextInt()`: Tam sayı okur.
- `nextDouble()`: Ondalıklı sayı okur.
- `nextBoolean()`: `true`/`false` okur.

---

📝 Bölüm Özeti ve Gelecek Bölüm 🔮

Bu bölümde ilkel ve referans veri tiplerini, değişken tanımlama kurallarını, tip dönüşümlerini ve `Scanner` sınıfı ile konsoldan veri almayı öğrendik.

👉 **Bölüm 3'te Bizi Ne Bekliyor?**
• Operatörler (Aritmetik, İlişkisel, Mantıksal)
• Karar Yapıları (`if`, `else if`, `else`)
• `switch-case` ve Modern Switch Ex
pressions
• Ternary (Üçlü) Operatör (`? :`)

Sorularınızı konu altından iletebilirsiniz. Bir sonraki bölümde görüşmek üzere! ☕✨

🔒 Bu içeriği görmek için giriş yapın

 
Yanıt yazmak için giriş yapmalısınız
Forum özelliklerini kullanmak ve Level 2 üyelik satın almak için hesabınıza giriş yapın.
136,491Threads
3,305,949Messages
328,336Members
joker133Latest member
Top Bottom