BU KONUYU E BOOK'A MI YOKSA BURAYAMI AÇİM KARAR VEREMEDİM GEREKİRSE TAŞANIR
İÇİNDEKİLER
Önsöz 15
Bölüm 1. Java nedir? 17
1.1. Java ile Ne Yapılabilir? 18
1.2. Java Nasıl Çalışır? 8
1.3. Java Sınıflaması 20
1.3.1. Standart Java 20
1.3.2. Komple Java 21
1.3.3. Gömülü Cihazlar İçin Java 21
1.3.4. XML Teknolojileri 22
1.3.5. Diğer Teknolojiler 22
1.4. Java’nın Gelişim Evreleri 23
1.5. Java’nın Başarılı Olmasındaki Anahtar Sözcükler 23
1.6. Çöp Toplayıcı 24
1.7. Java’da Açıklama Satırı 24
1.8. Herşey Nesne 24
1.9. Sınıf Nedir? Nesne Nedir? 26
1.10. Depolanan Veriler Nerede Durmaktadır? 27
1.11. Temel Tipler 27
1.12. Geçerlilik Alanı 28
1.13. Nesnelerin Geçerlilik Alanları 29
1.14. Yeni Sınıf Oluşturma 29
1.15. Alanlar ve Yordamlar 30
1.16. İlk Java Programımız 35
1.17. Java Kurulumu, Derleme ve Çalıştırma 36
1.17.1. Java’nın Unix/Linux İşletim Sistemlerinde Kurulumu 37
1.17.2. Java’nın Windows İşletim Sisteminde Kurulumu 38
1.17.3. Java Kodlarını Derleme ve Çalıştırma 39
1.18. args[ ] Nedir? Ne İşe Yarar? 39
1.19. Javadoc = Yorum İle Dokümantasyon Oluşturmak 41
1.19.1. Söz Dizimi Kuralları 41
1.19.2. Gömülü HTML 41
1.19.3. Doc Tag 42
1.19.3.1. Ortak Kullanılan Yorum Ekleri 42
1.19.3.2. Sınıflara Ait JavaDoc Etiketleri 43
1.19.3.3. Global Değişkenlere Ait JavaDoc Etiketleri 43
1.19.3.4. Yordamlara Ait JavaDoc Etiketleri 43
1.19.4. Dokümantasyon Örneği 44
1.20. Sınıf İsimleri ve Yordam İsimleri 45
1.21. Dosya İsimleri 45
1.22. Özet 46
1.23. Sorular 46
Bölüm 2. JAVA’DA PROGRAM DENETİMİ VE OPERATÖRLER 47Atamalar 47
2.1.1. Temel Tiplerde Atama 47
2.1.2. Nesneler ve Atamalar 48
2.2. Yordamların Çağrılması 50
2.3. Java Operatörleri 52
2.3.1. Aritmetik Operatörler 53
2.3.1.1. Dönüştürme İşlemi 55
2.3.1.2. Bir Artırma ve Azaltma 56
2.3.2. İlişkisel Operatörler 57
2.3.3. Mantıksal Operatörler 59
2.3.4. Bit Düzeyinde Operatörler 60
- VE İşlemi/Operatörü 61
- VEYA İşlemi/Operatörü 61
- YA DA İşlemi/Operatörü 62
- TÜMLEME İşlemi/Operatörü 62
- Öteleme Operatörleri 63
2.3.5. Atama Operatörleri 64
2.3.6. String Operatörü 66
2.3.7. Nesnelerin Karşılaştırılması 66
2.4. Kontrol Deyimleri/İfadeler 68
2.4.1. Döngü Deyimleri 68
- while Döngü Deyimi 68
- do-while Döngü Deyimi 69
- for Döngü Deyimi 70
2.4.2. Karşılaştırma Deyimleri 72
- if-else Deyimi 72
- switch Deyimi 75
2.4.3. Dallandırma Deyimleri 77
- break Deyimi 77
- continue Deyimi 79
- return Deyimi 80
2.5. Özet 81
2.6. Sorular 81
Bölüm 3. NESNELERİN BAŞLANGIÇ DURUMU VE TEMİZLİK 83
3.1. Başlangıç Durumuna Getirme İşlemi ve Yapılandırıcılar 83
3.1.1. Bir İsmin Birden Çok Yordam İçin Kullanılması-Adaş Yordamlar 85
- Adaş Yordamlar Nasıl Ayırt Edilir? 86
- Dönüş Değerlerine Göre Adaş Yordamlar Ayırt Edilebilir mi? 87
3.1.2. Varsayılan Yapılandırıcılar 88
- Büyünün Bozulması 88
3.1.3. this Anahtar Sözcüğü 89
- Yordam Çağrımlarımda this Kullanımı 91
- Bir Yapılandırıcıdan Diğer Bir Yapılandırıcıyı Çağırmak 92
3.1.4. Statik Alanlar 93
3.1.5. Statik Yordamlar 94
3.1.6. Bir Yordamın Statik mi Yoksa Nesne Yordamı mı Olacağı
Neye Göre Karar Verilecek? 95
3.2. Temizlik İşlemleri: finalize() ve Çöp Toplayıcı 97
3.2.1. finalize() Yordamı 97
3.2.2. Bellekten Hangi Nesneler Silinir? 100
3.2.3. finalize() Yordamına Güvenilirse Neler Olur? 102
3.2.4. Çöp Toplayıcısı Nasıl Çalışır? 103
- Eski Yöntem 103
- Yeni Yöntemler 104
3.2.5. Heap Bölgesi 104
3.2.6. Yeni Nesil 105
3.2.7. Eski Nesil 105
3.2.8. Heap Bölgesi Boyutları Nasıl Denetlenir? 105
3.2.9. Kopyalama Yönteminin Gösterimi 107
3.2.10. İşaretle ve Süpür Yönteminin Gösterimi 108
3.2.11. İlk Değerlerin Atanması 109
3.2.12. Yerel Değişkenler 110
3.2.13. Nesnelere Ait Global Alanlar 110
3.2.13.1. Nesnelere Ait Global Alanların Temel Bir Tip Olması Durumunda 110
3.2.13.2. Nesnelere Ait Global Alanların Sınıf Tipi Olması Durumunda 111
3.2.14. Sınıflara Ait Global Alanlar 112
3.2.14.1. Sınıflara Ait Global Alanların Temel Bir Tip Olması Durumunda 112
3.2.14.2. Sınıflara Ait Global Alanların Sınıf Tipi Olması Durumunda 113
3.2.15. İlk Değerler Atanırken Yordam Kullanımı 113
3.2.16. İlk Değer Alma Sırası 114
3.2.17. Statik ve Statik Olmayan Alanların Değer Alma Sırası 115
3.2.18. Statik Alanlara Toplu Değer Atama 117
3.2.19. Statik Olmayan Alanlara Toplu Değer Atama 117
3.3. Diziler 118
3.3.1. Dizi Türündeki Referanslar 118
3.3.2. Dizileri Oluşturmak 119
3.3.2.1. Temel Türlerden Oluşan Bir Dizi 119
3.3.2.2. Nesnelerden Oluşan Bir Dizi 120
3.3.3. Dizi Boyu/Uzunluğunun Değiştirilmesi 121
3.3.4. Dizi Elemanlarına Erişim 121
3.3.5. Dizi Elemanlarını Sıralama 123
3.3.6. Dizilerin Dizilere Kopyalanması 124
3.3.7. Çok Boyutlu Diziler 125
3.4. Özet 129
3.5. Sorular 130
Bölüm 4. Paket Erişimleri 131
4.1. Paket 131
4.2. Varsayılan Paket 132
4.3. Paket Oluşturma 134
4.4. Classpath Ayarları 135
4.4.1. Önemli Nokta 137
4.5. Çakışma 138
4.6. Paket İçerisindeki Tek Başına Yürütülebilir Uygulamaları Çalıştırmak 139
4.7. JAR Dosyaları 141
4.7.1. JAR Dosyası İçersindeki Bir Uygulamayı Çalıştırmak 143
4.8. Erişim Belirleyiciler 143
4.8.1. friendly 143
4.8.1.1. Varsayılan Paketlerde Erişim 145
4.8.2. public 146
4.8.3. private 147
4.8.4. protected 148
4.9. Kapsüllenme 151
4.10. Genel Bir Bakış 152
4.11. Özet 154
4.12. Sorular 154
Bölüm 5. SINIFLARIN TEKRAR KULLANILMASI 155
5.1. Komposizyon 155
5.2. Kalıtım 158
5.2.1 Gizli Kalıtım 161
5.2.2. Kalıtım ve Başlangıç Değeri Alma Sırası 163
5.2.3. Parametre Alan Yapılandırıcılar ve Kalıtım 164
5.3. Komposizyon mu? Kalıtım mı? 166
5.4. İptal Etmek 168
5.4.1. Sanki İptal Ettim Ama... 171
5.4.2. İptal Etmek ve Adaş Yordamların Birbiriyle Karıştırılması 173
5.5. Yukarı Çevrim 174
5.6. Final Özelliği 175
5.6.1. Global Alanlar ve Final Özelliği 175
5.6.2. Final Parametreler 177
5.6.3. Boş Final 177
5.6.4. Final Yordamlar 178
5.6.5. Private ve Final 179
5.6.6. Final Sınıflar 179
5.7. Kalıtım ve İlk Değer Alma Sırası 180
5.8. Özet 181
5.9. Sorular 182
Bölüm 6. POLİMORFİZM 183
6.1. Ayrıntılar 183
6.2. Geç Bağlama 185
6.3. Final Deyimi ve Geç Bağlama 188
6.4. Neden Polimorfizm? 189
6.5. Genişletilebilirlik 192
6.6. Soyut Sınıflar ve Yordamlar 195
6.6.1. Niye Soyut Sınıf ve Yordamlara İhtiyaç Duyulur? 197
6.7. Yapılandırıcılar İçersindeki İlginç Durumlar 199
6.8. Kalıtım ve Yukarı Çevrim 201
6.9. Aşağıya Çevrim 203
6.10. Özet 207
6.11. Sorular 207
Bölüm 7. Arayüzler ve Dahili Sınıflar 209
7.1. Arayüz 209
7.1.1. Birleştiricilik 209
7.1.2. Arayüz ve Soyut Sınıflar 212
7.1.3. Arayüz İle Çoklu Kalıtım 214
7.1.4. Arayüzlerin Kalıtım Yoluyla Genişletilmesi 217
7.1.5. Çakışmalar 219
7.1.6. Arayüzün İçerisinde Alan Tanımlama 220
7.6.1.1. Arayüzün İçerisinde Tanımlanmış Alanlara
Başlangıç Değerleri Verilmesi 221
7.1.7. Genel Bakış 222
7.1.8. Dahili Arayüzler 224
7.1.8.1. Sınıflarda Tanımlanan Dahili Arayüzler 225
7.2. Dahili Sınıflar 227
7.2.1. Dahili Üye Sınıflar 227
7.2.1.1. Dahili Üye Sınıflar ve Erişim 228
7.2.1.2. Dahili Üye Sınıflar ve Bunları Çevreleyen Sınıflar Arasındaki İlişki 230
7.2.1.3. Statik Dahili Üye Sınıflar 232
7.2.1.4. Statik Dahili Üye Sınıflar ve Statik Yordamlar 235
7.2.1.5. Statik ve Final Alanlar 235
7.2.1.6. Dahili Üye Sınıflar ve Yapılandırıcılar 236
7.2.1.7. İç İçe Dahili Üye Sınıflar 237
7.2.1.8. Soyut Dahili Üye Sınıflar 237
7.2.1.9. Türetilebilen Dahili Üye Sınıflar 240
7.2.2. Yerel Sınıflar 241
7.2.3. İsimsiz Sınıflar 244
7.2.4. Fiziksel İfade 248
7.2.5. Neden Dahili Sınıflar? 249
7.3. Özet 251
7.4. Sorular 251
Bölüm 8. AYRICALIKLI (İSTİSNA) DURUMLAR 253
8.1. İstisnalara Giriş 253
8.1.1. İstisna Nasıl Oluşabilir? 254
8.1.2. Başka İstisnalar Neler Olabilir? 255
8.1.3. İstisna Yakalama Mekanizması 255
8.1.4. İstisna İfadeleri 257
8.1.5. İstisna Tip Hiyerarşisi 268
8.1.5.1. Diğer İstisna Tiplerini Yakalamak 269
8.1.5.2. RuntimeException İstisna Tipleri 269
8.1.6. İstisna Mesajları 270
8.1.7. Kendi İstisnalarımızı Nasıl Oluşturabiliriz? 277
8.1.8. finally Bloğu 281
8.1.8.1. return ve finally Bloğu 285
8.1.8.2. Dikkat System.exit(); 286
8.1.9. İstisnanın Yeniden Fırlatılması 287
8.1.10. printStackTrace() ve Hata Mesajlarının Kısaltılması 290
8.1.11. İlginç Gelişme 292
8.1.12. İptal Etme ve İstisnalar 294
8.1.13. İstisnaların Sıralanması 298
8.2. Özet 299
8.3. Sorular 300
Bölüm 9. JAVA’DA GİRİŞ/ÇIKIŞ İŞLEMLERİ 301
9.1. Sekizli Irmakları 302
9.1.1. InputStream Sınıfı 302
9.1.1.1. FilterInputStream Sınıfı 312
9.1.1.2. BufferedInputStream Sınıfı 312
9.1.1.3. CheckedInputStream Sınıfı 316
9.1.1.3.1. Checksum Arayüzü 317
9.1.1.3.2. CRC 317
9.1.1.3.3. CRC32 Sınıfı 317
9.1.1.3.4. Adler32 Sınıfı 318
9.1.1.4. DataInputStream Sınıfı 319
9.1.1.5. PushbackInputStream Sınıfı 321
9.1.1.6. Standart Okuma 323
9.1.2. OutputStream 324
9.1.2.1. FilterOutputStream Sınıfı 329
9.1.2.1.1. BufferedOutputStream Sınıfı 329
9.1.2.1.2. CheckedOutputStream Sınıfı 332
9.1.2.1.3. DataInputStream ve DataOutputStream Sınıfları 333
9.1.2.1.4. Printstream Sınıfı 334
9.1.3. Önemli Noktalar 336
9.2. Karakter Irmakları 337
9.2.1. Reader 338
9.2.1.1. InputStreamReader Sınıfı 340
9.2.1.1.1. FileReader Sınıfı 340
9.2.1.2. BufferedReader Sınıfı 344
9.2.1.2.1. BufferedReader İle Standart Okuma 347
9.2.1.3. PushbackReader Sınıfı 348
9.2.2. Writer 350
9.2.2.1. OutputStreamWriter ve FileWriter Sınıfı 352
9.2.2.2. PrinterWriter Sınıfı 356
9.2.2.3. BufferedWriter Sınıfı 358
9.2.2.4. StringWriter Sınıfı 359
9.3. Başarım (Performans) 360
9.4. Unicode 368
9.5. File Sınıfı 373
9.5.1. Geçici Dosyalar 373
9.5.2. Listeleme 375
9.6. Rasgele Erişimli Dosyalar 377
9.7. Dönüşüm 378
9.7.1. Externalizable 389
9.8. Sıkıştırma 393
9.9. Bölümleyiciler 400
9.9.1. StreamTokenizer Sınıfı 401
9.9.2. StringTokenizer Sınıfı 403
9.10. Özet 405
9.11. Sorular 406
Bölüm 10. JAVA’DA YENİ GİRİŞ/ÇIKIŞ ÖZELLİKLERİ 407
10.1. Tamponlar 408
10.1.1. hasRemaining(), flip(), get() Yordamları 411
10.1.2. Bağıl ve Mutlak Operasyonlar 413
10.1.2.1. Bağıl Operasyonlar 413
10.1.2.2. Mutlak Operasyonlar 415
10.1.3. Sarmalama 416
10.1.4. Doğrusal ve Doğrusal Olmayan Tamponlar 417
10.1.5. compact() Yordamı 420
10.1.6. duplicate() 422
10.1.7. slice() Yordamı 424
10.1.8. ByteOrder sınıfı 426
10.1.9. Nesne Dönüştürme 429
10.1.10. Salt Okunur Tamponlar 430
10.1.11. Tampon Nesneler ve Diziler 431
10.1.12. İşaretleme İşlemleri 432
10.2. Kanallar 433
10.2.1. FileChannel Sınıfı 434
10.3. Özet 441
10.4. Sorular 441
Bölüm 11. JAVA’DA İŞ PARÇACIKLARI (THREADS) 443
11.1. İş Parçacıklarının Başlatılması 448
11.2. Durumlar 450
11.3. Öncelik Sırası 451
11.4. İş Parçacıklarının Sonlandırılması 452
11.5. İş Parçacıklarının Denetimi 454
11.5.1. sleep( ) ve interrupt( ) Yordamları 454
11.5.2. yield( ) Yordamı 461
11.6. İş Parçacığı Yaşıyor mu? 463
11.7. Bekle Beni... join( ) Yordamı 465
11.8. İş Parçacıklarının Tasarımı 466
11.8.1. Thread Sınıfından Kalıtım 466
11.8.2. Runnable Arayüzü 467
11.9. Giriş/Çıkış ve İş Parçacıkları 469
11.10. Daemon ve User İş Parçacıklarının Arasındaki Fark 472
11.11. Paylaşılamayan Kaynak 474
11.11.1. Nesnenin Kilidi 476
11.11.2. synchronized Anahtar Kelimesi 477
11.11.3. wait(), notify() ve notifyAll() Yordamları 480
11.11.3.1. wait() Yordamı 480
11.11.3.2. notify() Yordamı 481
11.11.3.3. notifyAll() Yordamı 481
11.11.4. Problemin Çözümü 481
11.11.5. synchronize Anahtar Kelimesi Üzerine... 483
11.11.6. Sınıf Kilidi 488
11.11.7. Semafor 488
11.11.8. Birden Fazla Nesne Kilidini Kullanmak 491
11.12. Ölümcül Kilitlenme (deadlock) 494
11.13. İş Parçacıkları Arasındaki Veri Alış Verişi 497
11.13.1. PipedReader ve PipedWriter Sınıfları 500
11.14. Gruplar 501
11.15. Oynaklık 507
11.16. suspend( ) ve resume( ) Yordamları Neden Tedavülden Kalktı? 509
11.17. stop( ) Yordamı Neden Tedavülden Kalktı? 509
11.18. Özet 510
11.19. Sorular 510
Bölüm 12. NESNELER İÇİN TORBALAR 511
12.1. Diziler 511
12.2. Arrays Sınıfı 512
12.2.1. fill( ) Yordamı 513
12.2.2. equals( ) Yordamı 514
12.2.3. sort( ) Yordamı 515
12.2.4. binarySearch( ) Yordamı 517
12.3. Torba Sistemi 518
12.3.1. Collection Arayüzü 519
12.3.2. Ayrıntılı Şema 523
12.3.3. List Arayüzüne Erişen Sınıflar 524
12.3.3.1. ArrayList Sınıfı 524
12.3.4. Iterator Arayüzü 527
12.3.5. ListIterator Arayüzü 529
12.3.6. Acaba Torbaya Ne Koymuştum? 531
12.3.7. Garantili Torbalar 532
12.3.8. LinkedList Sınıfı 534
12.3.8.1. LinkedList Sınıfı Kullanılarak Yığın Yapısı Oluşturmak 535
12.3.8.2. LinkedList Sınıfı İle Kuyruk Yapısı Oluşturmak 536
12.3.9. Collections Sınıfı 537
12.3.10. Hangisi Daha Hızlı, ArrayList Sınıfı mı, LinkedList Sınıfı mı? 550
12.3.11. Set Arayüzü 553
12.3.11.1. HashSet Sınıfı 553
12.3.11.2. TreeSet Sınıfı 556
12.3.12. Map Arayüzü 558
12.3.12.1. HashMap Sınıfı 559
12.3.12.2. Hangisi Daha Hızlı, ArrayList Sınıfı mı, HashMap Sınıfı mı? 566
12.3.12.3 TreeMap Sınıfı 568
12.3.12.4. Hangisi Daha Hızlı, HashMap Sınıfı mı, TreeMap Sınıfı mı? 569
Genel Özet 571
12.3.13. Iterator Arayüzü ve Dikkat Edilmesi Gereken Hususlar 571
12.3.14. Zamandaş Torbalar 573
12.3.15. HashTable Sınıfı 577
12.3.16. Vector Sınıfı 578
12.4. Özet 579
12.5. Sorular 579
Bölüm 13. Java’da Ağ (NETWORK) programlama 581
13.1. Kullanıcı/Sunucu Nedir? 582
13.2. IP Adresi ve Port Kavramları 583
13.3. Sihirli Numara 127.0.0.1 585
13.4. IPv4 ve IPv6 Uyarlamaları 587
13.4.1. Ipv6’nın Adres Biçimi 587
13.4.2. Adres Gösterimi 588
13.5. Kullanıcı/Sunucu Uygulamaları 589
13.6. Bloke Bağlantılar 597
13.6.1. İş Parçacıkları İş Başında 599
13.6.2. Havuz 602
13.7. URL ve URLConnection Sınıfları 609
13.8. TCP ve UDP Protokolleri 611
13.9. Blokesiz Bağlantılar 612
13.9.1. Java 1.4’den Önce... 613
13.9.2. Java 1.4’den Sonra... 615
13.9.3. Kanal Arayüzü 615
13.9.4. Blokesiz Kanal Oluşturulması 616
13.9.5. Seçici Oluşturulması 616
13.10. Veritabanı Sunucularına Bağlantı 625
13.10.1. SQL 625
13.10.2. Java Veritabanı Bağlanılabilirliği – JDBC 626
13.10.3. MySQL 628
13.10.4. CLASSPATH Ayarları 628
13.10.5. İlk Bağlantı 628
13.10.6. SQL ve Java Uygulamaları 630
13.10.7. MUSTERİ Tablosuna Yeni Bir Kayıt Eklenmesi 635
13.10.8. MUSTERİ Tablosundaki Kayıtların Değiştirilmesi 636
13.10.9. MUSTERİ Tablosundaki Mevcut Kayıtların Silinmesi 637
13.11. Özet 638
13.12. Sorular 639
Bölüm 14. HATA YAKALAMANIN ÖTESİ... 641
14.1. Assertion Özelliği Nerede Kullanılır? 643
14.2. Assertion Özelliğini Kullanmak 647
- Birinci Yol 647
- İkinci Yol 648
14.3. Assertion ve Derleme 649
14.4. Assertion Özelliği Nasıl Kontrol Edilir? 650
14.5. Paket Denetimleri 652
14.5.1. Tüm Paketler İçin Assertion Özelliği Açık 655
14.5.2. Toplama İşlemlerinde Bir Hata Var Sanki... 655
14.5.3. Yalnızca com.kodcu.math.* Altındaki Tüm Sınıflar İçin Assertion
Özelliği Açılmak İstenirse... 656
14.5.4. Sıralamanın Önemi 657
14.6. Assertion Özelliği Açık mı? Kapalı mı? 658
14.7. AssertionError İstisnalarını Yakalamak 659
14.8. Assertion ve Başlangıç Değerlerinin Alınması 660
14.9. Ne Zaman ve Nerede? 662
14.9.1. Kuralların Açılımı 663
14.9.2. Assertion Özelliğinin Kullanılması Gereken Yerler 667
14.10. Özet 670
14.11. Sorular 670
KAYNAKLAR 671
DİZİN 683
İÇİNDEKİLER
Önsöz 15
Bölüm 1. Java nedir? 17
1.1. Java ile Ne Yapılabilir? 18
1.2. Java Nasıl Çalışır? 8
1.3. Java Sınıflaması 20
1.3.1. Standart Java 20
1.3.2. Komple Java 21
1.3.3. Gömülü Cihazlar İçin Java 21
1.3.4. XML Teknolojileri 22
1.3.5. Diğer Teknolojiler 22
1.4. Java’nın Gelişim Evreleri 23
1.5. Java’nın Başarılı Olmasındaki Anahtar Sözcükler 23
1.6. Çöp Toplayıcı 24
1.7. Java’da Açıklama Satırı 24
1.8. Herşey Nesne 24
1.9. Sınıf Nedir? Nesne Nedir? 26
1.10. Depolanan Veriler Nerede Durmaktadır? 27
1.11. Temel Tipler 27
1.12. Geçerlilik Alanı 28
1.13. Nesnelerin Geçerlilik Alanları 29
1.14. Yeni Sınıf Oluşturma 29
1.15. Alanlar ve Yordamlar 30
1.16. İlk Java Programımız 35
1.17. Java Kurulumu, Derleme ve Çalıştırma 36
1.17.1. Java’nın Unix/Linux İşletim Sistemlerinde Kurulumu 37
1.17.2. Java’nın Windows İşletim Sisteminde Kurulumu 38
1.17.3. Java Kodlarını Derleme ve Çalıştırma 39
1.18. args[ ] Nedir? Ne İşe Yarar? 39
1.19. Javadoc = Yorum İle Dokümantasyon Oluşturmak 41
1.19.1. Söz Dizimi Kuralları 41
1.19.2. Gömülü HTML 41
1.19.3. Doc Tag 42
1.19.3.1. Ortak Kullanılan Yorum Ekleri 42
1.19.3.2. Sınıflara Ait JavaDoc Etiketleri 43
1.19.3.3. Global Değişkenlere Ait JavaDoc Etiketleri 43
1.19.3.4. Yordamlara Ait JavaDoc Etiketleri 43
1.19.4. Dokümantasyon Örneği 44
1.20. Sınıf İsimleri ve Yordam İsimleri 45
1.21. Dosya İsimleri 45
1.22. Özet 46
1.23. Sorular 46
Bölüm 2. JAVA’DA PROGRAM DENETİMİ VE OPERATÖRLER 47Atamalar 47
2.1.1. Temel Tiplerde Atama 47
2.1.2. Nesneler ve Atamalar 48
2.2. Yordamların Çağrılması 50
2.3. Java Operatörleri 52
2.3.1. Aritmetik Operatörler 53
2.3.1.1. Dönüştürme İşlemi 55
2.3.1.2. Bir Artırma ve Azaltma 56
2.3.2. İlişkisel Operatörler 57
2.3.3. Mantıksal Operatörler 59
2.3.4. Bit Düzeyinde Operatörler 60
- VE İşlemi/Operatörü 61
- VEYA İşlemi/Operatörü 61
- YA DA İşlemi/Operatörü 62
- TÜMLEME İşlemi/Operatörü 62
- Öteleme Operatörleri 63
2.3.5. Atama Operatörleri 64
2.3.6. String Operatörü 66
2.3.7. Nesnelerin Karşılaştırılması 66
2.4. Kontrol Deyimleri/İfadeler 68
2.4.1. Döngü Deyimleri 68
- while Döngü Deyimi 68
- do-while Döngü Deyimi 69
- for Döngü Deyimi 70
2.4.2. Karşılaştırma Deyimleri 72
- if-else Deyimi 72
- switch Deyimi 75
2.4.3. Dallandırma Deyimleri 77
- break Deyimi 77
- continue Deyimi 79
- return Deyimi 80
2.5. Özet 81
2.6. Sorular 81
Bölüm 3. NESNELERİN BAŞLANGIÇ DURUMU VE TEMİZLİK 83
3.1. Başlangıç Durumuna Getirme İşlemi ve Yapılandırıcılar 83
3.1.1. Bir İsmin Birden Çok Yordam İçin Kullanılması-Adaş Yordamlar 85
- Adaş Yordamlar Nasıl Ayırt Edilir? 86
- Dönüş Değerlerine Göre Adaş Yordamlar Ayırt Edilebilir mi? 87
3.1.2. Varsayılan Yapılandırıcılar 88
- Büyünün Bozulması 88
3.1.3. this Anahtar Sözcüğü 89
- Yordam Çağrımlarımda this Kullanımı 91
- Bir Yapılandırıcıdan Diğer Bir Yapılandırıcıyı Çağırmak 92
3.1.4. Statik Alanlar 93
3.1.5. Statik Yordamlar 94
3.1.6. Bir Yordamın Statik mi Yoksa Nesne Yordamı mı Olacağı
Neye Göre Karar Verilecek? 95
3.2. Temizlik İşlemleri: finalize() ve Çöp Toplayıcı 97
3.2.1. finalize() Yordamı 97
3.2.2. Bellekten Hangi Nesneler Silinir? 100
3.2.3. finalize() Yordamına Güvenilirse Neler Olur? 102
3.2.4. Çöp Toplayıcısı Nasıl Çalışır? 103
- Eski Yöntem 103
- Yeni Yöntemler 104
3.2.5. Heap Bölgesi 104
3.2.6. Yeni Nesil 105
3.2.7. Eski Nesil 105
3.2.8. Heap Bölgesi Boyutları Nasıl Denetlenir? 105
3.2.9. Kopyalama Yönteminin Gösterimi 107
3.2.10. İşaretle ve Süpür Yönteminin Gösterimi 108
3.2.11. İlk Değerlerin Atanması 109
3.2.12. Yerel Değişkenler 110
3.2.13. Nesnelere Ait Global Alanlar 110
3.2.13.1. Nesnelere Ait Global Alanların Temel Bir Tip Olması Durumunda 110
3.2.13.2. Nesnelere Ait Global Alanların Sınıf Tipi Olması Durumunda 111
3.2.14. Sınıflara Ait Global Alanlar 112
3.2.14.1. Sınıflara Ait Global Alanların Temel Bir Tip Olması Durumunda 112
3.2.14.2. Sınıflara Ait Global Alanların Sınıf Tipi Olması Durumunda 113
3.2.15. İlk Değerler Atanırken Yordam Kullanımı 113
3.2.16. İlk Değer Alma Sırası 114
3.2.17. Statik ve Statik Olmayan Alanların Değer Alma Sırası 115
3.2.18. Statik Alanlara Toplu Değer Atama 117
3.2.19. Statik Olmayan Alanlara Toplu Değer Atama 117
3.3. Diziler 118
3.3.1. Dizi Türündeki Referanslar 118
3.3.2. Dizileri Oluşturmak 119
3.3.2.1. Temel Türlerden Oluşan Bir Dizi 119
3.3.2.2. Nesnelerden Oluşan Bir Dizi 120
3.3.3. Dizi Boyu/Uzunluğunun Değiştirilmesi 121
3.3.4. Dizi Elemanlarına Erişim 121
3.3.5. Dizi Elemanlarını Sıralama 123
3.3.6. Dizilerin Dizilere Kopyalanması 124
3.3.7. Çok Boyutlu Diziler 125
3.4. Özet 129
3.5. Sorular 130
Bölüm 4. Paket Erişimleri 131
4.1. Paket 131
4.2. Varsayılan Paket 132
4.3. Paket Oluşturma 134
4.4. Classpath Ayarları 135
4.4.1. Önemli Nokta 137
4.5. Çakışma 138
4.6. Paket İçerisindeki Tek Başına Yürütülebilir Uygulamaları Çalıştırmak 139
4.7. JAR Dosyaları 141
4.7.1. JAR Dosyası İçersindeki Bir Uygulamayı Çalıştırmak 143
4.8. Erişim Belirleyiciler 143
4.8.1. friendly 143
4.8.1.1. Varsayılan Paketlerde Erişim 145
4.8.2. public 146
4.8.3. private 147
4.8.4. protected 148
4.9. Kapsüllenme 151
4.10. Genel Bir Bakış 152
4.11. Özet 154
4.12. Sorular 154
Bölüm 5. SINIFLARIN TEKRAR KULLANILMASI 155
5.1. Komposizyon 155
5.2. Kalıtım 158
5.2.1 Gizli Kalıtım 161
5.2.2. Kalıtım ve Başlangıç Değeri Alma Sırası 163
5.2.3. Parametre Alan Yapılandırıcılar ve Kalıtım 164
5.3. Komposizyon mu? Kalıtım mı? 166
5.4. İptal Etmek 168
5.4.1. Sanki İptal Ettim Ama... 171
5.4.2. İptal Etmek ve Adaş Yordamların Birbiriyle Karıştırılması 173
5.5. Yukarı Çevrim 174
5.6. Final Özelliği 175
5.6.1. Global Alanlar ve Final Özelliği 175
5.6.2. Final Parametreler 177
5.6.3. Boş Final 177
5.6.4. Final Yordamlar 178
5.6.5. Private ve Final 179
5.6.6. Final Sınıflar 179
5.7. Kalıtım ve İlk Değer Alma Sırası 180
5.8. Özet 181
5.9. Sorular 182
Bölüm 6. POLİMORFİZM 183
6.1. Ayrıntılar 183
6.2. Geç Bağlama 185
6.3. Final Deyimi ve Geç Bağlama 188
6.4. Neden Polimorfizm? 189
6.5. Genişletilebilirlik 192
6.6. Soyut Sınıflar ve Yordamlar 195
6.6.1. Niye Soyut Sınıf ve Yordamlara İhtiyaç Duyulur? 197
6.7. Yapılandırıcılar İçersindeki İlginç Durumlar 199
6.8. Kalıtım ve Yukarı Çevrim 201
6.9. Aşağıya Çevrim 203
6.10. Özet 207
6.11. Sorular 207
Bölüm 7. Arayüzler ve Dahili Sınıflar 209
7.1. Arayüz 209
7.1.1. Birleştiricilik 209
7.1.2. Arayüz ve Soyut Sınıflar 212
7.1.3. Arayüz İle Çoklu Kalıtım 214
7.1.4. Arayüzlerin Kalıtım Yoluyla Genişletilmesi 217
7.1.5. Çakışmalar 219
7.1.6. Arayüzün İçerisinde Alan Tanımlama 220
7.6.1.1. Arayüzün İçerisinde Tanımlanmış Alanlara
Başlangıç Değerleri Verilmesi 221
7.1.7. Genel Bakış 222
7.1.8. Dahili Arayüzler 224
7.1.8.1. Sınıflarda Tanımlanan Dahili Arayüzler 225
7.2. Dahili Sınıflar 227
7.2.1. Dahili Üye Sınıflar 227
7.2.1.1. Dahili Üye Sınıflar ve Erişim 228
7.2.1.2. Dahili Üye Sınıflar ve Bunları Çevreleyen Sınıflar Arasındaki İlişki 230
7.2.1.3. Statik Dahili Üye Sınıflar 232
7.2.1.4. Statik Dahili Üye Sınıflar ve Statik Yordamlar 235
7.2.1.5. Statik ve Final Alanlar 235
7.2.1.6. Dahili Üye Sınıflar ve Yapılandırıcılar 236
7.2.1.7. İç İçe Dahili Üye Sınıflar 237
7.2.1.8. Soyut Dahili Üye Sınıflar 237
7.2.1.9. Türetilebilen Dahili Üye Sınıflar 240
7.2.2. Yerel Sınıflar 241
7.2.3. İsimsiz Sınıflar 244
7.2.4. Fiziksel İfade 248
7.2.5. Neden Dahili Sınıflar? 249
7.3. Özet 251
7.4. Sorular 251
Bölüm 8. AYRICALIKLI (İSTİSNA) DURUMLAR 253
8.1. İstisnalara Giriş 253
8.1.1. İstisna Nasıl Oluşabilir? 254
8.1.2. Başka İstisnalar Neler Olabilir? 255
8.1.3. İstisna Yakalama Mekanizması 255
8.1.4. İstisna İfadeleri 257
8.1.5. İstisna Tip Hiyerarşisi 268
8.1.5.1. Diğer İstisna Tiplerini Yakalamak 269
8.1.5.2. RuntimeException İstisna Tipleri 269
8.1.6. İstisna Mesajları 270
8.1.7. Kendi İstisnalarımızı Nasıl Oluşturabiliriz? 277
8.1.8. finally Bloğu 281
8.1.8.1. return ve finally Bloğu 285
8.1.8.2. Dikkat System.exit(); 286
8.1.9. İstisnanın Yeniden Fırlatılması 287
8.1.10. printStackTrace() ve Hata Mesajlarının Kısaltılması 290
8.1.11. İlginç Gelişme 292
8.1.12. İptal Etme ve İstisnalar 294
8.1.13. İstisnaların Sıralanması 298
8.2. Özet 299
8.3. Sorular 300
Bölüm 9. JAVA’DA GİRİŞ/ÇIKIŞ İŞLEMLERİ 301
9.1. Sekizli Irmakları 302
9.1.1. InputStream Sınıfı 302
9.1.1.1. FilterInputStream Sınıfı 312
9.1.1.2. BufferedInputStream Sınıfı 312
9.1.1.3. CheckedInputStream Sınıfı 316
9.1.1.3.1. Checksum Arayüzü 317
9.1.1.3.2. CRC 317
9.1.1.3.3. CRC32 Sınıfı 317
9.1.1.3.4. Adler32 Sınıfı 318
9.1.1.4. DataInputStream Sınıfı 319
9.1.1.5. PushbackInputStream Sınıfı 321
9.1.1.6. Standart Okuma 323
9.1.2. OutputStream 324
9.1.2.1. FilterOutputStream Sınıfı 329
9.1.2.1.1. BufferedOutputStream Sınıfı 329
9.1.2.1.2. CheckedOutputStream Sınıfı 332
9.1.2.1.3. DataInputStream ve DataOutputStream Sınıfları 333
9.1.2.1.4. Printstream Sınıfı 334
9.1.3. Önemli Noktalar 336
9.2. Karakter Irmakları 337
9.2.1. Reader 338
9.2.1.1. InputStreamReader Sınıfı 340
9.2.1.1.1. FileReader Sınıfı 340
9.2.1.2. BufferedReader Sınıfı 344
9.2.1.2.1. BufferedReader İle Standart Okuma 347
9.2.1.3. PushbackReader Sınıfı 348
9.2.2. Writer 350
9.2.2.1. OutputStreamWriter ve FileWriter Sınıfı 352
9.2.2.2. PrinterWriter Sınıfı 356
9.2.2.3. BufferedWriter Sınıfı 358
9.2.2.4. StringWriter Sınıfı 359
9.3. Başarım (Performans) 360
9.4. Unicode 368
9.5. File Sınıfı 373
9.5.1. Geçici Dosyalar 373
9.5.2. Listeleme 375
9.6. Rasgele Erişimli Dosyalar 377
9.7. Dönüşüm 378
9.7.1. Externalizable 389
9.8. Sıkıştırma 393
9.9. Bölümleyiciler 400
9.9.1. StreamTokenizer Sınıfı 401
9.9.2. StringTokenizer Sınıfı 403
9.10. Özet 405
9.11. Sorular 406
Bölüm 10. JAVA’DA YENİ GİRİŞ/ÇIKIŞ ÖZELLİKLERİ 407
10.1. Tamponlar 408
10.1.1. hasRemaining(), flip(), get() Yordamları 411
10.1.2. Bağıl ve Mutlak Operasyonlar 413
10.1.2.1. Bağıl Operasyonlar 413
10.1.2.2. Mutlak Operasyonlar 415
10.1.3. Sarmalama 416
10.1.4. Doğrusal ve Doğrusal Olmayan Tamponlar 417
10.1.5. compact() Yordamı 420
10.1.6. duplicate() 422
10.1.7. slice() Yordamı 424
10.1.8. ByteOrder sınıfı 426
10.1.9. Nesne Dönüştürme 429
10.1.10. Salt Okunur Tamponlar 430
10.1.11. Tampon Nesneler ve Diziler 431
10.1.12. İşaretleme İşlemleri 432
10.2. Kanallar 433
10.2.1. FileChannel Sınıfı 434
10.3. Özet 441
10.4. Sorular 441
Bölüm 11. JAVA’DA İŞ PARÇACIKLARI (THREADS) 443
11.1. İş Parçacıklarının Başlatılması 448
11.2. Durumlar 450
11.3. Öncelik Sırası 451
11.4. İş Parçacıklarının Sonlandırılması 452
11.5. İş Parçacıklarının Denetimi 454
11.5.1. sleep( ) ve interrupt( ) Yordamları 454
11.5.2. yield( ) Yordamı 461
11.6. İş Parçacığı Yaşıyor mu? 463
11.7. Bekle Beni... join( ) Yordamı 465
11.8. İş Parçacıklarının Tasarımı 466
11.8.1. Thread Sınıfından Kalıtım 466
11.8.2. Runnable Arayüzü 467
11.9. Giriş/Çıkış ve İş Parçacıkları 469
11.10. Daemon ve User İş Parçacıklarının Arasındaki Fark 472
11.11. Paylaşılamayan Kaynak 474
11.11.1. Nesnenin Kilidi 476
11.11.2. synchronized Anahtar Kelimesi 477
11.11.3. wait(), notify() ve notifyAll() Yordamları 480
11.11.3.1. wait() Yordamı 480
11.11.3.2. notify() Yordamı 481
11.11.3.3. notifyAll() Yordamı 481
11.11.4. Problemin Çözümü 481
11.11.5. synchronize Anahtar Kelimesi Üzerine... 483
11.11.6. Sınıf Kilidi 488
11.11.7. Semafor 488
11.11.8. Birden Fazla Nesne Kilidini Kullanmak 491
11.12. Ölümcül Kilitlenme (deadlock) 494
11.13. İş Parçacıkları Arasındaki Veri Alış Verişi 497
11.13.1. PipedReader ve PipedWriter Sınıfları 500
11.14. Gruplar 501
11.15. Oynaklık 507
11.16. suspend( ) ve resume( ) Yordamları Neden Tedavülden Kalktı? 509
11.17. stop( ) Yordamı Neden Tedavülden Kalktı? 509
11.18. Özet 510
11.19. Sorular 510
Bölüm 12. NESNELER İÇİN TORBALAR 511
12.1. Diziler 511
12.2. Arrays Sınıfı 512
12.2.1. fill( ) Yordamı 513
12.2.2. equals( ) Yordamı 514
12.2.3. sort( ) Yordamı 515
12.2.4. binarySearch( ) Yordamı 517
12.3. Torba Sistemi 518
12.3.1. Collection Arayüzü 519
12.3.2. Ayrıntılı Şema 523
12.3.3. List Arayüzüne Erişen Sınıflar 524
12.3.3.1. ArrayList Sınıfı 524
12.3.4. Iterator Arayüzü 527
12.3.5. ListIterator Arayüzü 529
12.3.6. Acaba Torbaya Ne Koymuştum? 531
12.3.7. Garantili Torbalar 532
12.3.8. LinkedList Sınıfı 534
12.3.8.1. LinkedList Sınıfı Kullanılarak Yığın Yapısı Oluşturmak 535
12.3.8.2. LinkedList Sınıfı İle Kuyruk Yapısı Oluşturmak 536
12.3.9. Collections Sınıfı 537
12.3.10. Hangisi Daha Hızlı, ArrayList Sınıfı mı, LinkedList Sınıfı mı? 550
12.3.11. Set Arayüzü 553
12.3.11.1. HashSet Sınıfı 553
12.3.11.2. TreeSet Sınıfı 556
12.3.12. Map Arayüzü 558
12.3.12.1. HashMap Sınıfı 559
12.3.12.2. Hangisi Daha Hızlı, ArrayList Sınıfı mı, HashMap Sınıfı mı? 566
12.3.12.3 TreeMap Sınıfı 568
12.3.12.4. Hangisi Daha Hızlı, HashMap Sınıfı mı, TreeMap Sınıfı mı? 569
Genel Özet 571
12.3.13. Iterator Arayüzü ve Dikkat Edilmesi Gereken Hususlar 571
12.3.14. Zamandaş Torbalar 573
12.3.15. HashTable Sınıfı 577
12.3.16. Vector Sınıfı 578
12.4. Özet 579
12.5. Sorular 579
Bölüm 13. Java’da Ağ (NETWORK) programlama 581
13.1. Kullanıcı/Sunucu Nedir? 582
13.2. IP Adresi ve Port Kavramları 583
13.3. Sihirli Numara 127.0.0.1 585
13.4. IPv4 ve IPv6 Uyarlamaları 587
13.4.1. Ipv6’nın Adres Biçimi 587
13.4.2. Adres Gösterimi 588
13.5. Kullanıcı/Sunucu Uygulamaları 589
13.6. Bloke Bağlantılar 597
13.6.1. İş Parçacıkları İş Başında 599
13.6.2. Havuz 602
13.7. URL ve URLConnection Sınıfları 609
13.8. TCP ve UDP Protokolleri 611
13.9. Blokesiz Bağlantılar 612
13.9.1. Java 1.4’den Önce... 613
13.9.2. Java 1.4’den Sonra... 615
13.9.3. Kanal Arayüzü 615
13.9.4. Blokesiz Kanal Oluşturulması 616
13.9.5. Seçici Oluşturulması 616
13.10. Veritabanı Sunucularına Bağlantı 625
13.10.1. SQL 625
13.10.2. Java Veritabanı Bağlanılabilirliği – JDBC 626
13.10.3. MySQL 628
13.10.4. CLASSPATH Ayarları 628
13.10.5. İlk Bağlantı 628
13.10.6. SQL ve Java Uygulamaları 630
13.10.7. MUSTERİ Tablosuna Yeni Bir Kayıt Eklenmesi 635
13.10.8. MUSTERİ Tablosundaki Kayıtların Değiştirilmesi 636
13.10.9. MUSTERİ Tablosundaki Mevcut Kayıtların Silinmesi 637
13.11. Özet 638
13.12. Sorular 639
Bölüm 14. HATA YAKALAMANIN ÖTESİ... 641
14.1. Assertion Özelliği Nerede Kullanılır? 643
14.2. Assertion Özelliğini Kullanmak 647
- Birinci Yol 647
- İkinci Yol 648
14.3. Assertion ve Derleme 649
14.4. Assertion Özelliği Nasıl Kontrol Edilir? 650
14.5. Paket Denetimleri 652
14.5.1. Tüm Paketler İçin Assertion Özelliği Açık 655
14.5.2. Toplama İşlemlerinde Bir Hata Var Sanki... 655
14.5.3. Yalnızca com.kodcu.math.* Altındaki Tüm Sınıflar İçin Assertion
Özelliği Açılmak İstenirse... 656
14.5.4. Sıralamanın Önemi 657
14.6. Assertion Özelliği Açık mı? Kapalı mı? 658
14.7. AssertionError İstisnalarını Yakalamak 659
14.8. Assertion ve Başlangıç Değerlerinin Alınması 660
14.9. Ne Zaman ve Nerede? 662
14.9.1. Kuralların Açılımı 663
14.9.2. Assertion Özelliğinin Kullanılması Gereken Yerler 667
14.10. Özet 670
14.11. Sorular 670
KAYNAKLAR 671
DİZİN 683