İÇİNDEKİLER VII İÇİNDEKİLER 1 JAVA DİLİNE GİRİŞ Java Dilinin Kısa Tarihi Java Dilinin Üstünlükleri JVM (Java Virtual Machine - Java Sanal Makinesi) JRE (Java Runtime Environment - Java Çalışma Ortamı) JDK (Java Development Kit - Java Geliştirme Kiti) J2EE, J2SE, J2ME Kavramları J2EE (Enterprise Edition) J2ME (Micro Edition) J2SE (Standart Edition) Değerlendirme Soruları 1 1 2 3 5 5 6 6 6 6 7 2 JAVA ÇALIŞTIRMA ORTAMI JDK Kurulumu Path Ayarları Eclipse Kurulumu Eclipse Ortamını Tanıyalım Eclipse Arayüzü Eclipse İçerisinde JRE Ayarları Eclipse ile Proje Oluşturma Bir Projeyi Eclipse İçerisine Dahil Etme Eclipse Kısayolları Java Uygulamasını Eclipse Dışında Çalıştırma Java ile İlk Programımız Intellisense Teknolojisi Not Defteri ile Java Kodu Yazma ve Derleme Eclipse Üzerinde Debug İşlemleri Debug Nedir? Breakpoint Yerleştirme Breakpoint Görünümü ve Breakpoint’leri Kaldırma Değerler Görünümü ve Değişkenlerin Debug Modunda Değerlerini Değiştirme Değerlendirme Soruları 9 9 13 15 17 17 19 20 21 23 24 26 30 31 32 32 33 36 37 37 38 VIII YENİ BAŞLAYANLAR İÇİN JAVA 3 PAKET (PACKAGE) KAVRAMI Paket (Package) Kavramına Giriş Paket Tanımlaması Paketleri Import Etme Java Path ve ClassPath Ayarları Değerlendirme Soruları 39 39 39 41 43 46 4 DEĞİŞKENLER VE VERİ TİPLERİ 47 Değişkenler ve Veri Tiplerine Giriş 47 Değişken Tanımlama Kuralları 48 Primitif Tipler 49 Byte 49 Short 50 Int 50 Long 50 Float 50 Double 51 Char 51 Boolean 52 Referans Tipler 52 String Veri Tipi 53 Primitive Tipleri, Referans Tipi Şeklinde Yazma 55 Sayılarda Altçizgi ( _ ) Kullanarak Sayıları Bölümleme 57 İkili Tabandaki Sayıları Değişkenlerde Tutma 58 Boxing ve Unboxing Kavramları 60 Lokal Değişkenler 61 Sabit Tanımlama 62 Tip Dönüşümleri (Type Casting) 64 Java’da Kullanılan Anahtar Kelimeler 69 Değerlendirme Soruları 70 5 OPERATÖRLER Operatörlere Giriş Atama Operatörleri Temel Atama Operatörü ( = ) Diğer Atama Operatörleri ( +=, -=, *=, /= ) Çoklu Atama İşlemi 71 71 71 72 72 73 İÇİNDEKİLER İki Değişkenin Değerinin Takas Yapılması İlişkisel Operatörler Aritmetik Operatörler Temel Aritmetik Operatörler ( +, -, *, / ) Mod Operatörü ( % ) ( - ) Operatörü ile Sayıyı Negatif Yapma Arttırma (++) ve Azaltma (--) Operatörleri Mantıksal Operatörler Bitsel Operatörler Temel Bitsel Operatörler ( ~, &, |, ^ ) Kaydırma Operatörleri ( >>, << ) Tip Karşılaştırma Operatörü Operatör Önceliği Değerlendirme Soruları 74 75 78 78 79 79 80 82 84 84 86 88 89 91 6 KONTROL YAPILARI VE DÖNGÜLER 93 Kontrol Yapıları 93 If-Else Yapısı 93 If-Else if Yapısı 96 İç içe If Yapıları 97 Switch Yapısı 98 Döngüler 104 While Döngüsü 104 Do-While Döngüsü 107 For Döngüsü 109 Gelişmiş For Döngüsü 113 Break ve Continue İfadeleri 115 Değerlendirme Soruları 118 7 METODLAR Metod Nedir? Metod Oluşturma Parametresiz Metodlar Parametreli Metodlar Metodlara Dizi Türünden Parametre Geçirmek Metodları Aşırı Yükleme (Overloading) Metodlarda Özyineleme (Recursion) 119 119 119 120 122 129 131 134 IX X YENİ BAŞLAYANLAR İÇİN JAVA Static Metodlar Main Metodu Neden Static? Değerlendirme Soruları 137 140 141 8 DİZİLER Dizilere Giriş Dizi Tanımlama Şekilleri Dizi Elemanına Erişme Dizi Elemanlarını Listeleme Object Sınıfından Dizi Oluşturma Bir Dizinin Boyutu Dizileri Kopyalama System.arraycopy Metodu ile Diziyi Kopyalama Dizileri Sıralama Array.sort Metodu ile Diziyi Sıralama Dizilerde Arama binarySearch Yöntemi ile Dizilerde Arama İşlemi Dizileri Karşılaştırma Arrays.equals Metodu ile Dizilerde Eşitlik Kontrolü Çok Boyutlu Diziler Çok Boyutlu Dizi Tanımlaması Çok Boyutlu Dizi Elemanlarına Erişim Çok Boyutlu Dizileri Listeleme Çok Boyutlu Dizinin Uzunluğu String [ ] args Dizisi Arrays Sınıfı Metotları Arrays.asLıst Metodu ile Diziyi Liste Yapısına Kopyalama Arrays.copyOf Metodu ile Dizinin Belli Bölümünü Kopyalama Arrays.copyOfRange ile İki İndis Arasındaki Elemanları Kopyalama Arrays.fill Metodu ile Diziye Eleman Atamak Değerlendirme Soruları 143 143 143 145 146 149 150 152 153 154 154 155 155 155 157 157 158 158 159 161 163 164 169 169 170 171 172 174 9 SCANNER SINIFI VE JOPTIONPANE İLE KLAVYEDEN VERİ ALMA Scanner Sınıfına Giriş Scanner Sınıfı ile İlgili Örnekler JOptionPane Kullanımı 177 177 178 185 İÇİNDEKİLER Kullanıcıdan Veri Alma Bilgi Mesajı Gösterme JOptionPane ile İlgili Örnekler Değerlendirme Soruları 10 NESNEYE YÖNELİK PROGRAMLAMA Nesneye Yönelik Programlamaya Giriş Sınıf ve Nesne Kavramları Sınıf Oluşturma new Anahtar Kelimesi ile Nesne Oluşturma Sınıf ve Nesne Değişkenleri Pass By Value - Pass By Reference (Değer ve Referans Tipler) Yapıcılar (Constructor) Kapsülleme (Encapsulation) Erişim Belirleyiciler (Access Modifiers) Private Anahtar Kelimesi Protected Anahtar Kelimesi Public Anahtar Kelimesi Getter ve Setter Metodlar Getter ve Setter Metodlarını Tanımlama Eclipse Üzerinde Kısayoldan Getter ve Setter Oluşturma this Anahtar Kelimesi Static Anahtar Kelimesi Static Metodlar Static Import Enum Kavramı Enum Tanımlama Enum İçerisindeki Elemanları Yazdırmak Ordinal Metodu ile enum Elemanlarının İndisini Öğrenme Enum İçerisinde Metod Tanımlama Annotation Kavramı Annotation Oluşturma Garbage Collector (Çöp Toplayıcı) Finalize Metodunun Kullanımı Değerlendirme Soruları 185 186 189 193 195 195 196 197 198 201 205 209 214 214 215 217 219 222 222 225 226 229 231 232 233 233 236 237 239 240 241 244 245 248 XI XII YENİ BAŞLAYANLAR İÇİN JAVA 11 KALITIM (INHERITANCE) Kalıtım Kavramına Giriş Super Class (Üst Sınıf) ve Sub Class (Alt Sınıf) Kavramları Super Metodu ile Üst Sınıfın Yapıcısını Çağırmak Metod Overriding toString Metodunun Override Edilmesi Final Anahtar Kelimesi Final ile Sabit Tanımlama Final ile Metodların Override Edilmelerini Engelleme Final ile Parametrelerin Değerinin Değişmesini Engelleme Final ile Sınıfların Kalıtımını Engelleme Upcasting ve Downcasting Kavramları Değerlendirme Soruları 251 251 253 257 262 267 271 272 274 275 276 277 282 12 SOYUT (ABSTRACT) SINIFLAR, METODLAR Soyut Sınıflar ve Metodlara Giriş Soyut Sınıf ve Kalıtım Arasındaki İlişki Soyut Sınıf Örneği Değerlendirme Soruları 283 283 284 285 291 13 ARAYÜZLER (INTERFACE) Arayüz Kavramına Giriş Arayüz Örneği Arayüzlerde Genişletilme Özelliği Arayüz İçerisinde Başka Bir Arayüz Kullanma Değerlendirme Soruları 293 293 294 298 301 303 14 DAHİLİ SINIFLAR (INNER CLASSES) Dahili Sınıflara Giriş Dahili Üye Sınıflar Dahili Üye Sınıflar ve Erişim Belirteçleri Yerel Sınıflar İsimsiz Sınıflar Değerlendirme Soruları 305 305 305 307 314 316 318 15 ÇOK BİÇİMLİLİK (POLYMORPHISM) Polimorfizm Kavramına Giriş Geç Bağlama Instanceof ile Tip Kontrolü 319 319 324 327 İÇİNDEKİLER getclass Metodu ile Nesnenin Sınıfını Öğrenme Değerlendirme Soruları 331 334 16 MATH SINIFI İLE MATEMATİKSEL İŞLEMLER Math Sınıfına Giriş Math.pow Metodu ile Sayının Üssünü Alma Math.sqrt Metodu ile Sayının Karekökünü Alma Math.abs Metodu ile Sayının Mutlak Değerini Alma Math.floor Metodu ile Sayıyı Alt Değere Yuvarlama Math.ceil Metodu ile Sayıyı Üst Değere Yuvarlama Math.max Metodu ile Büyük Sayıyı Bulma Math.min Metodu ile Küçük Sayıyı Bulma Math.random Metodu ile Rastgele Sayı Üretme Random Sınıfı ile Rastgele Sayı Üretme Math.toDegrees Metodu ile Radyanı Dereceye Çevirme Math.toRadians Metodu ile Dereceyi Radyana Çevirme Math.sin Metodu ile Sinüs Bulma Math.asin Metodu ile Ters Sinüs Bulma Math.cos Metodu ile Cosinüs Bulma Math.acos Metodu ile Ters Cosinüs Bulma Math.PI ile PI Sabitini Kullanma Logaritma Metodları Değerlendirme Soruları 335 335 335 336 337 338 338 339 340 341 344 348 348 349 350 350 351 352 353 355 17 STRING SINIFI İLE METİNLER ÜZERİNDE ÇALIŞMA String Sınıfına Giriş String Nesnesinin Uzunluğu Karakter Katarlarını Birleştirmek + Operatörü ile Strıng İfadeleri Birleştirme Concat Metodu ile String İfadeleri Birleştirme String Nesnelerini Karşılaştırma equals ve equalsIgnoreCase Metodları ile String Nesneleri Karşılaştırma compareTo ve compareToIgnoreCase Metodları ile Büyüklük Kontrolü regionMatches Metodu ile Belirli Bir Bölgenin Karşılaştırılması startsWith ve endsWith Metodları ile Başlangıç ve Bitiş Kontrolü Karakter Metodları getChars Metodu ile String İçerisindeki Bir Bölümü Diziye Aktarma charAt Metodu ile String İçerisindeki Karaktere Ulaşmak 357 357 358 359 359 360 361 361 363 365 366 368 368 369 XIII XIV YENİ BAŞLAYANLAR İÇİN JAVA toCharArray Metodu ile String Nesneyi Karakter Dizine Dönüştürme indexOf ve lastIndexOf Metodları ile String İçerisinde Karakter Arama String Düzenleme Metodları substring Metodu ile String İçerisinden Bir Bölüm Seçme replace Metodu ile String İçerisindeki Karakteri Değiştirme trim Metodu ile String İfadenin Yanındaki Boşlukları Silme toUpperCase ve toLowerCase Metodları ile Harf Kipini Değiştirme valueOf Metodu ile Veri Tiplerini String Veri Tipine Çevirme StringTokenizer ve StringBuffer Sınıfları StringTokenizer Sınıfını Kullanarak Metni Parçalama StringBuffer Sınıfı ile Bazı Metin İşlemleri Değerlendirme Soruları 370 371 373 373 374 375 376 376 378 378 384 387 18 HATA YAKALAMA (EXCEPTION HANDLING) Exceptions (İstisnalar) Hata Yakalama (try-catch blokları) Hata Yakalamada Yeni Catch Bloğu Sistemi finally Bloğu Hata Yakalamada Finally Bloğunun Alternatifi Finally Bloğunda try-catch Kullanımı Birden Fazla Hata Yakalama throw Anahtar Kelimesi throws Anahtar Kelimesi Exception Türü Oluşturma Hata Türleri RuntimeException Hata Türü Çözülemeyen Hatalar (Error) Değerlendirme Soruları 389 389 390 396 398 399 401 402 404 405 410 412 414 414 416 19 GİRİŞ ÇIKIŞ (IO) İŞLEMLERİ I/O Kavramına Giriş Karakter Tabanlı Veri Taşıma Byte Tabanlı Veri Taşıma File Sınıfının Kullanımı createNewFile Metodu ile Dosya Oluşturma getName Metodu ile Dosyanın Adını Öğrenme getAbsolutePath Metodu ile Dosyanın Yolunu Öğrenme delete Metodu ile Dosyayı Silme 417 417 418 419 420 421 421 422 422 İÇİNDEKİLER mkdir Metodu ile Klasör Oluşturma renameTo Metodu ile Dosyanın Adını Değiştirme canRead ve canWrite Metodları ile Yazma Okuma Kontrolü FileReader ile Dosya Okuma FileWriter ile Dosyaya Yazma FileInputStream ile Dosya Okuma FileOutputStream ile Dosyaya Yazma BufferedReader ile Dosyadan Okuma BufferedWriter ile Dosyaya Yazma BufferedInputStream ile Dosya Okuma BufferedOutputStream ile Dosyaya Yazma Scanner Sınıfı ile Dosya Okuma Scanner Sınıfı Yapıcıları Rastgele Erişimli Dosyalarda Okuma ve Yazma Object Serialization (Nesne Serileştirme) Serializable Arayüzü Externalizable Arayüzü Transient Anahtar Kelimesi Değerlendirme Soruları 423 423 424 426 428 431 433 434 436 437 438 439 443 444 448 448 452 457 458 20 JAVA KOLEKSİYONLARI (JAVA COLLECTIONS) 461 Koleksiyonlara Giriş 461 Java Koleksiyonlarının Avantajları 461 Java Koleksiyonlarının Dezavantajları 462 Collection Arayüzü 462 Iterator 463 Set (Kümeler) 464 HashSet 465 LinkedHashSet 468 Sorted Set 469 TreeSet 469 Liste Yapıları (Lıst) 472 ListIterator 472 ArrayList 473 LinkedList (Bağlı Liste) 476 Vector 480 Queue (Kuyruk) 481 Map Arayüzü 482 XV XVI YENİ BAŞLAYANLAR İÇİN JAVA HashMap 483 LinkedHashMap 486 SortedMap 487 TreeMap 487 Elmas Operatör İçerisindeki Tanım Zorunluluğu 490 SafeVarags ile Uyarı ve Hata Giderimi 491 Değerlendirme Soruları 493 21 OLAY YÖNETİMİ (EVENT HANDLING) 495 Olay Yönetimine Giriş 495 Olay Sınıfları 496 ActionEvent 497 AdjustmentEvent 497 ComponentEvent 498 ContainerEvent 499 FocusEvent 500 InputEvent 500 ItemEvent 501 KeyEvent 502 MouseEvent 503 MouseWheelEvent 505 TextEvent 506 WindowEvent 506 Olay Dinleyicileri (Event Listeners) 507 ActionListener 507 AdjustmentListener 508 ComponentListener 508 ContainerListener 508 FocusListener 508 ItemListener 509 KeyListener 509 MouseListener 509 MouseMotionListener 509 MouseWheelListener 510 TextListener 510 WindowFocusedListener 510 WindowListener 510 Fare ve Klavye Olay Metodlarının Kullanımı 511 Değerlendirme Soruları 516 İÇİNDEKİLER 22 JAVA GUI İLE ARAYÜZ PROGRAMLAMA 517 GUI (Graphical User Interface) Nedir? 517 GUI Kurulumu 517 GUI Projesi Oluşturma 520 SWING 523 SWING Bileşenleri 523 JFrame 524 Container 526 JLabel 528 JButton 531 JTextField 533 JComboBox 536 JRadioButton 538 JCheckBox 541 JToggleButton 544 JTable 546 JList 549 JScrollPane 552 JTabbedPane 555 JTree 557 Layout (Yerleşim Düzenleri) 561 GridLayout 561 BorderLayout 562 FlowLayout 563 GridBagLayout 564 Diğer Layout Tipleri 565 Değerlendirme Soruları 566 23 JDBC İLE VERİTABANI Veritabanı Kavramına Giriş Veritabanı Yönetim Sistemleri (VTYS) JDBC Tanımı Temel SQL Komutları SELECT-WHERE-LIKE Komutlarının Kullanımı INSERT Komutu ile Kayıt Ekleme DELETE Komutu ile Kayıt Silme UPDATE Komutu ile Kayıt Güncelleme MySQL Kurulumu 567 567 569 570 570 571 572 573 573 574 XVII XVIII YENİ BAŞLAYANLAR İÇİN JAVA MySQL için JDBC Connector 583 JDBC Bileşenleri 584 Connection 585 Statement Bileşenleri 586 Statement 586 PreparedStatement 587 CallableStatement 588 ResultSet 590 JDBC ile Veri Sorgulama 591 JDBC ile Veritabanına Veri Ekleme 594 JDBC ile Veritabanından Veri Silme 596 JDBC ile Veritabanındaki Verileri Güncelleme 597 Navicat Kurulumu 598 Navicat ile Örnek Uygulama 602 Değerlendirme Soruları 615 24 THREAD KAVRAMI 617 Thread Kavramına Giriş 617 Thread Oluşturma 618 Thread’i Başlatmak ve Durdurmak 622 Thread’i Beklemeye Almak ve Devam Ettirmek 625 Bir Thread Nesnesine Öncelik Atamak 626 Thread’in Çalışıp Çalışmadığının Kontrolü 629 MultiThreading 631 Thread’lerin Senkronizasyonunu Sağlamak 631 Değerlendirme Soruları 634 25 JAVA SE 8 İLE GELEN YENİLİKLER 635 Lambda İfadeleri 635 Fonksiyonel Arayüzler ve Lambda İfadeleri 638 Varsayılan Metotlar 640 Metot Çakışması 642 DateTime API 643 LocalDate 643 LocalTime 644 LocalDateTime 644 ZoneId ve ZonedDateTime 644 CEVAP ANAHTARI 647