İÇİNDEKİLER
1 Java Nedir? 1
1.1 Java Programlama Dili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Platform Ba§mszlk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Java Dilinin Ba³lca Nitelikleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Java Uygulama Geli³tirme Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Yazlm Geli³tirme Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.1 Uygulama Programlar Arayüzü . . . . . . . . . . . . . . . . . . . . . . . 5
1.4.2 Kullanc Arayüzü Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4.3 Bütünle³ik Kütüphaneler . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Java Dilinin Ba³lca Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Program Yazmaya Giri³ 7
2.1 Kaynak Program Derleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Hata Ayklama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3 Çkty Yazdrma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 Kaynak Programn Biçemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Snf (class) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 Bloklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Programa Açklama Ekleme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 Veri Tipleri ve De§i³kenler 17
3.1 Java Dilinde Veri Tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.1 Veri Tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 lkel Veri Tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.1 void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
iv ÇNDEKLER
3.2.2 null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.3 En Büyük ve En Küçük int Saylar . . . . . . . . . . . . . . . . . . . . . . 20
3.2.4 Sonsuzluk ve Belirsizlik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Veri Tiplerinin Öntanml De§erleri . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Referans Tipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Null Tip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.6 Neden Veri Tipi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.7 De§i³ken Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.8 De§i³ken Bildirimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.9 Java'da Adlandrma Kurallar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.10 Kapsama Alan (scope) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.11 Statik Ö§eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.12 Sabitler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.12.1 Sabit Gerekli mi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.13 Anlk De§i³kenler (instant variables) . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.14 Yerel De§i³kenler (local variables) . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.15 Parametreler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.16 Atama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.17 Kutulama (Boxing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.18 Generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Operatörler 45
4.1 Aritmetik Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.1 kili Operatörler (+, –, * , / , %) . . . . . . . . . . . . . . . . . . . . . . . 45
4.1.2 Bölme (/) i³lemi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.1.3 Kalan (modulus) Operatörü . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.4 Birli (unary) Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2 Atama Operatörleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3 Mantksal (Logic) Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.1 && Operatörü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.3.2 ¦¦ Operatörü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4 li³kisel Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.5 Bitsel (Bitwise) Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.6 Ba³ka Operatörler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.7 Sorular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5 Döküm (casting) 75
5.1 Döküm Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.2 lkel Say Tipleri ve Say Nesneleri . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ÇNDEKLER v
5.3 int Sarmalayan Kurucular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5.4 Integer Nesnesinden String'e Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . 84
6 Karekterler 85
6.1 Karekterlerin Kodlanmas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2 ve Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.3 Kaç³ (Escape) Karekterleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Character Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7 String snf 95
7.1 String Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.2 String Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3 null ve Bo³luk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.4 String'in Uzunlu§u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
7.5 Stringleri Birle³tirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
7.6 Dönü³ümler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.6.1 Array'den String'e Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.6.2 String'den Array'e Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . . 101
7.6.3 toString() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
7.6.4 Büyük–Küçük Harfe Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . 102
7.6.5 trim() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.6.6 charAt() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.6.7 valueOf() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.7 String çinde Arama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
7.8 String'leri Kar³la³trma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.9 String Dizimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.10 String Snfnn Ba³lca Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.11 Komut Satr Argümanlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
7.12 StringBuer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.13 StringBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
7.14 Sorular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
8 Çkty Biçemleme 123
8.1 Biçemli Çkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8.2 java.io.PrintStream Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.2.1 print() ve println() Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . 124
8.2.2 print() Metodunun Yetmezli§i . . . . . . . . . . . . . . . . . . . . . . . . . 125
8.3 printf() Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.3.1 Örnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
8.4 Dönü³türücüler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
vi ÇNDEKLER
8.4.1 Desenciler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8.4.2 Bayraklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8.5 PrintWriter Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
9 System snf 145
9.1 System Snf Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
9.1.1 System.out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
9.1.2 System.in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.1.3 System.err . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.2 System Snfnn Ba³lca Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . 147
9.2.1 Örnekler: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
10 Arrays Snf 153
10.1 Array Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
10.2 Array Türleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
10.3 Tek Boyutlu Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.4 [ ] Operatörü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.5 Array Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
10.5.1 Array Bildirimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
10.5.2 Array Nesnesi Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
10.5.3 Bile³enlere De§er Atama Yöntemleri . . . . . . . . . . . . . . . . . . . . . 158
10.5.4 Örnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
10.5.5 Array'in Bile³enleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
10.5.6 Bile³enlerin Öntanml De§erleri . . . . . . . . . . . . . . . . . . . . . . . 162
10.5.7 Örnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
10.5.8 Array'in Bile³enlerine Eri³im . . . . . . . . . . . . . . . . . . . . . . . . . 165
10.5.9 Array'in Uzunlu§unu Bulma . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.5.10For–each Döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
10.6 Array Kopyalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.6.1 Atama Yöntemiyle Aktarma . . . . . . . . . . . . . . . . . . . . . . . . . 168
10.6.2 Array Kopyalayan Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . 174
10.7 Array Sralama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
10.8 Çok Boyutlu Arrayler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.8.1 Çok Boyutlu Array Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
10.8.2 Çok Boyutlu Arraylerin Bile³enlerine Eri³im . . . . . . . . . . . . . . . . . 179
10.8.3 Çentikli Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
10.9 Array'e Ele³tiri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
10.9.1 Array Yapsnn Avantajlar . . . . . . . . . . . . . . . . . . . . . . . . . . 187
10.9.2 Array Yapsnn Dezavantajlar . . . . . . . . . . . . . . . . . . . . . . . . 188
ÇNDEKLER vii
10.9.3 Array Yerine Ba³ka Yaplar . . . . . . . . . . . . . . . . . . . . . . . . . . 188
11 Java Nitelemleri 189
11.1 Eri³im Belirtkeleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
11.2 Snar ve Ö§eler çin Eri³im Kstlar . . . . . . . . . . . . . . . . . . . . . . . . 191
11.2.1 Snf Düzeyinde Eri³im Kstlar . . . . . . . . . . . . . . . . . . . . . . . . 191
11.2.2 Ö§e Düzeyinde Eri³im Kstlar . . . . . . . . . . . . . . . . . . . . . . . . 191
11.2.3 public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
11.2.4 protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
11.2.5 private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
11.2.6 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
11.3 Öteki Belirtkeler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
11.4 Statik ve Anlk Ö§eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
11.4.1 static Ö§eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
11.4.2 Anlk (instant) Ö§eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.5 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.6 JVM Niteleyicileri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
12 Metotlar 215
12.1 Metot Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
12.2 Static Ö§e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
12.3 Metot Kavram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
12.3.1 Parametreler ve Yerel De§i³kenler . . . . . . . . . . . . . . . . . . . . . . 217
12.4 main() Metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
12.5 Ada³lama (Overload) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.6 Nesne Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
12.7 Hazr Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
12.8 java.lang.Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
12.8.1 Fibonacci Saylar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
12.9 Kullancnn Tanmlad§ Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . 231
12.10Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
12.11String'den Tamsayya Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
13 Program Ak³nn Denetimi 245
13.1 Blok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
13.2 Yönlendiriciler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
13.2.1 Yaln if Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
13.2.2 if–else yönlendirmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
13.2.3 Çoklu durum seçene§i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
13.2.4 Ko³ullu Operatör . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
viii ÇNDEKLER
14 Döngüler 267
14.0.1 while döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
14.1 do . . . while . . . döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
14.2 For döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
14.3 For–each Döngüsü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
15 Java Snar 279
15.1 Snf (class) Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
15.2 Basiti anlamak zordur! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
15.3 Sorular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
16 Kurucular 287
16.1 Snf ve Nesne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
16.2 Kurucular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
16.2.1 Öntanml Kurucu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
16.2.2 Parametresiz Kurucu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
16.2.3 Parametreli Kurucular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
16.3 Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
16.4 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
16.5 Özet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
17 Statik ve Anlk Ögeler 317
17.1 static Ö§elere Eri³im . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
17.2 Anlk Ö§elere Eri³im . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
17.3 Neden Nesne Yönelimli Programlama? . . . . . . . . . . . . . . . . . . . . . . . . 319
17.4 Metot Ça§rma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
17.5 Hata Ayklama (debug) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
17.6 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
18 Kaltm (inheritance) 329
18.1 Mesaj letme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
18.2 Çokbiçemlilik (polymorphism) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
18.3 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
19 Soyut Snar 337
19.1 Soyut Snf Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
19.2 Soyut Snf Neden Gereklidir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
19.3 Soyut Snf Bildirimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
20 Arayüzler 343
20.1 Her Oyuncu Kendi Sözünü Söyler . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
ÇNDEKLER ix
20.2 Neden Arayüz? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
20.3 Arayüz Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
20.4 Arayüzü Kurgulama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
20.5 Comparable Arayüzü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
20.6 Basklanan compareTo() Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . 346
20.6.1 Boolean Snfnda Kurgulama . . . . . . . . . . . . . . . . . . . . . . . . . 347
20.6.2 Integer Snfnda Kurgulama . . . . . . . . . . . . . . . . . . . . . . . . . 347
20.6.3 Character Snfnda Kurgulama . . . . . . . . . . . . . . . . . . . . . . . . 348
20.7 Çokbiçemlilik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
20.8 Arayüz Ne Yapar? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
20.9 Arayüz le Soyut Snf Arasndaki Farklar . . . . . . . . . . . . . . . . . . . . . . 349
20.10Arayüzün Yaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
20.11Bir Arayüzü Birden Çok Snf Kurgulayabilir . . . . . . . . . . . . . . . . . . . . 351
20.12Bir Snf Birden Çok Arayüz Kurgulayabilir . . . . . . . . . . . . . . . . . . . . . 352
21 Çoklubiçem 355
21.1 Çok Biçemlilik Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
21.2 Metot Bildirimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
21.2.1 Metot mzas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
21.3 Çoklubiçem Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
21.4 Ada³lama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
21.5 Basklama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
21.6 Statik ve Dinamik Ba§layclar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
21.7 Çoklubiçem Gerekli mi? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
21.8 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
22 E³zamanl ³lemler 377
22.1 Çoklu ³lemler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
22.1.1 Teklii³ Akm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
22.1.2 Çoklui³ Akm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
22.2 Thread (izlek) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
22.2.1 Thread Türleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
22.3 Java Dilinde Thread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
22.4 java.lang.Thread Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
22.4.1 Thread Snfnn Ba³lca Metotlar . . . . . . . . . . . . . . . . . . . . . . 382
22.5 Java'da Thread Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
23 Scanner Snf 389
23.1 Yerel say biçemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
23.2 Scanner Snfnn Kurucular: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
x ÇNDEKLER
23.3 Scanner Snfnn Baz Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
23.3.1 java.lang.Object snfndan kaltsal gelen metotlar . . . . . . . . . . . . . 392
24 java.io Paketi 397
24.1 Java'da Giri³/Çk³ ³lemleri (I/O) . . . . . . . . . . . . . . . . . . . . . . . . . . 397
24.2 Giri³/Çk³ Akmlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
24.3 Byte akmlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
24.4 java.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
24.5 InputStream Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
24.5.1 InputStream Snfnn Kurucular . . . . . . . . . . . . . . . . . . . . . . . 403
24.5.2 InputStream Snfnn Metotlar . . . . . . . . . . . . . . . . . . . . . . . . 403
24.5.3 InputStream Snfnn Altsnar . . . . . . . . . . . . . . . . . . . . . . . 403
24.6 OutputStream Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
24.6.1 OutputStream Snfnn Kurucular . . . . . . . . . . . . . . . . . . . . . . 404
24.6.2 OutputStream Snfnn Metotlar . . . . . . . . . . . . . . . . . . . . . . . 405
24.6.3 OutputStream Snfnn Altsnar . . . . . . . . . . . . . . . . . . . . . . 405
24.6.4 FilterOutputStream Snfnn Altsnar . . . . . . . . . . . . . . . . . . . 405
24.7 Reader Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
24.8 Writer Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
24.9 Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
24.9.1 Byte Kopyalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
24.9.2 Satr Kopyalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
24.9.3 Klavyeden Integer Okuma . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
24.9.4 Dosyadan Double Say Okuma . . . . . . . . . . . . . . . . . . . . . . . . 413
24.9.5 Dosya Okuma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
24.9.6 DataInputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
24.9.7 DataOutputStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
24.9.8 LineNumberReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
25 nio 421
25.1 Kanallar ve Buerlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
25.1.1 java.nio Paketi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
25.1.2 java.nio.cahannels Paketi . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
25.2 java.nio.Buer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
25.3 Buer Snfnn Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
25.3.1 Arabelle§in Özeliklerini Bilme . . . . . . . . . . . . . . . . . . . . . . . . . 425
25.4 java.nio.channels.Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
25.4.1 Channels Snfnn Metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . 426
25.5 Buer ³lemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
ÇNDEKLER xi
25.5.1 Buer Olu³turma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
25.5.2 Buer'a Yazma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
25.5.3 Buer'dan Okuma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
25.6 Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
25.6.1 Dosya'dan Okuma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
25.6.2 Dosya'ya Yazma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
25.6.3 Buer'n Niteliklerini Sor . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
25.6.4 ByteBuer'dan Dosyaya Yazma ve Ekleme . . . . . . . . . . . . . . . . . 442
25.6.5 Dosya Kopyalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
25.7 Al³trmalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
26 javadoc 449
26.1 JavaDoc Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
26.2 JavaDoc Hazrlama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
26.3 JavaDoc Taklar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
26.4 Örnek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
27 Çkty Biçemleme 455
27.1 Format() metodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
27.2 Saylarn Stringe Dönü³türülmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
27.2.1 Concatenation (+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
27.3 Biçemleme Dönü³türücüleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
27.4 Tamsay Biçemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
27.4.1 . simgesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
27.4.2 , simgesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
27.4.3 ; simgesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
27.4.4 ' simgesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
27.5 Saylarn Üstel Notasyonla Gösterilmesi . . . . . . . . . . . . . . . . . . . . . . . 465
27.5.1 Yöresel Çkt Biçimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
27.5.2 Yöresel Para Simgelerini Yazdrma . . . . . . . . . . . . . . . . . . . . . . 467
27.5.3 Tarih ve Saat Biçemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
28 Tarih ve Zaman 469
28.1 Zaman Ölçmek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
28.2 Takvimler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
28.2.1 Julian Takvimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
28.2.2 Gregorian Takvimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
28.3 Locale Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
28.4 Date Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
28.4.1 Date Snfnn Kurucular . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
xii ÇNDEKLER
28.4.2 Date snfnn metotlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
28.5 Yöresel Tarih ve Zaman Desencileri . . . . . . . . . . . . . . . . . . . . . . . . . . 475
28.6 Calendar Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
28.6.1 Calendar Snfnn Kurucular . . . . . . . . . . . . . . . . . . . . . . . . . 478
28.6.2 Calendar Snfnn Ba³lca Metotlar . . . . . . . . . . . . . . . . . . . . . 478
28.7 GregorianCalendar Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
28.7.1 GregorianCalendar Snfnn Kurucular . . . . . . . . . . . . . . . . . . . 480
28.8 Java'da Tarih Biçemleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
28.9 DateFormat Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
28.10SimpleDateFormat Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
28.10.1 SimpleDateFormat Snfnn Kurucular: . . . . . . . . . . . . . . . . . . . 485
28.10.2Tarih ve Zaman Desencileri . . . . . . . . . . . . . . . . . . . . . . . . . . 488
28.11String'den Tarihe Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
28.12Tarih'ten String'e Dönü³üm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
29 JFC 495
29.1 JFC Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
29.2 MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496
29.3 GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
29.4 WIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
29.5 Alet Çantalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498
29.6 Yapsal ö§eler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
29.6.1 Yöreselle³tirme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
30 AWT 503
30.1 AWT Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
30.2 GUI Araçlar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
30.2.1 Component Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
30.2.2 Component'in Alt Snar . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
30.3 Container Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
30.3.1 Çok Kullanlan Ta³yclar . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
30.4 AWT Snar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
30.5 AWT Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
30.5.1 Container Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
30.5.2 Frame'i Boyutlandrma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
30.5.3 Button Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
30.5.4 Applet Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
30.6 Checkbox Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
30.6.1 Checkbox Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
ÇNDEKLER xiii
30.6.2 TextArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
31 Konu³landrclar 523
31.1 LayoutManager Snar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
31.1.1 Container Snfnn add() Metotlar: . . . . . . . . . . . . . . . . . . . . . 525
31.1.2 Mutlak Konu³landrma . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
31.2 BorderLayout Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
31.3 FlowLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
31.4 GridLayout Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
31.5 GridBagLayout Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
32 Swing 539
32.1 Swing Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
32.2 JFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
32.3 Javax.swing Paketleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
32.4 Örnekler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
32.4.1 JWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
32.4.2 JFrame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
32.4.3 JButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
32.4.4 JTextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
32.4.5 JCheckBox ve JRadioButton . . . . . . . . . . . . . . . . . . . . . . . . . 548
32.4.6 JCheckBox Snfnn Kurucular . . . . . . . . . . . . . . . . . . . . . . . . 548
32.4.7 JComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
32.4.8 JComboBox snfnn ba³lca metotlar . . . . . . . . . . . . . . . . . . . . 550
32.4.9 JList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
32.4.10 LayoutManagers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
32.5 Hesap Makinesi Önyüzü . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
33 Olay Yönetimi 561
33.1 Olay Yönetimi Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
33.2 Java'da Olay Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
33.3 Olay ve Olay Yönetimi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
33.3.1 Tnnn Sesi Veren Dü§me . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
33.4 Netbeans ile Arayüz Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
33.4.1 Proje Ba³latma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
33.4.2 Ta³yc Levhay Yaratma . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
33.4.3 Pencereye Bile³en Ekleme . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
33.4.4 Bile³enleri Yeniden Adlandrma . . . . . . . . . . . . . . . . . . . . . . . . 572
33.4.5 Arayüze ³levsellik Kazandrma . . . . . . . . . . . . . . . . . . . . . . . . 574
33.4.6 Program Ko³turma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
xiv ÇNDEKLER
34 Applet 583
34.1 Applet Nedir? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
34.2 Applet'in Rakipleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
34.3 Applet Snf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
34.3.1 Applet Yapma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
34.3.2 Appleti HTML Döküman çine Yerle³tirme . . . . . . . . . . . . . . . . . 587
34.3.3 Appleti Görme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
34.4 Uygulamalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589
35 Program Hatalarn Ayklama 593
35.1 Hata yakalanmazsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595
35.2 Hata yakalama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
35.3 try/catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
35.4 Çoklu Hata Yakalama (Multiple Catch) . . . . . . . . . . . . . . . . . . . . . . . 602
35.5 çiçe Hata Deyimleri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
35.6 throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
35.7 throws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
35.8 nally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
36 Java Dilinin Sakl Sözcükleri 613 |