-
Sadrazamv4
ig:sadrazam_v4 tg: Sadrazam.spy
🚀 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! ☕✨
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