MegaCrafter
Obsidyen Madencisi
- Mesajlar
- 1,419
- En iyi cevaplar
- 0
- Beğeniler
- 1,542
- Puanları
- 3,070
Yeniden merhaba. Hala destek geliyo bu konulara. Her neyse. Yine diğer konuların linklerini veriyorum. O konularda da güzel bilgiler var.
Bölüm 1 (final, static, kod blokları, switch-case, if-else'i kısaltma)
Bölüm 2 (main metodu, package-private, protected private, do-while, modüler)
Bölüm 3 (synchronized, interface, enum, abstract, annotation, dosya açma, silme, oluşturma, dosyaya yazı yazma, dosyadan yazı okuma, process oluşturma)
Bölüm 4 (JFrame, JButton, JTextField, JPanel, JLabel)
Bölüm 5 (Değişken Sistemi, Bazı Tavsiyeler, Thread ve Synchronized)
Bu konumuzda continue, try-catch-finally, try-with-resources, instanceof, native ve volatile'i göstericem. Başlayalım.
continue: Bu anahtar kelime bir döngüyü, geriye kalan kodunu okumadan devam ettirmeye denir. Biraz değişik bir tanım oldu sanki. Kısaca örnek verelim. Siz bir sunucudaki tüm oyuncuları bir döngüye aldınız. Ama diyorsunuz ki adam bilmem ne bölgesinde ise onu alma. Yapmanız gereken şey adamın bölgesini kontrol etmek ve o bölgedeyse bu anahtar kelimeyi kullanmak. Bu sayede döngünün dışına çıkılmadan o oyuncuyu yok sayabilirsiniz.
try-catch-finally: Aslında try-catch ile aynı şey. Ama catch'den sonra bir de finally ekleyebiliyorsunuz. Bu demektir ki ne olursa olsun bir şeyi yapması gerek. Mesela:
Burada olacak işlem şudur: Önce bir Writer tanımlıyoruz. Sonra içine bir şey yazıyoruz. Bu bir IOException verebilir. Verirse hata mesajı göndermesini söylüyoruz. Ama en sonunda Writer'ı kapatıyoruz. Tabi burada fazla işe yaramadı. Ama bir işinize yararsa diye aklınızda tutun.
try-with-resources: Bu biraz kafanızı karıştırabilir. Çünkü bunda try yazıcaksınız ama catch ve finally koymayacaksınız. Şöyle kullanabilirsiniz:
Tam olarak ne işe yarar ben de bilmiyorum. Ama anlatayım. Belki bir gün lazım olur
instanceof: Bunu plugin yazan arkadaşlar görmüşlerdir. Şu koda benzer bir kodu neredeyse her plugin içinde görebilirsiniz:
Peki ne işe yarar bu "instanceof"? Aslında bir şeyin örneğine bakar. Mesela:
native: Bunu siz kullanmayacaksınız zaten. Baya ileri bir konu aslında bu. Ama merak eden kişiler için göstericem. Bu anahtar kelime bir metodun Java'da değil de başka bir dilde var olduğunu belirtir. Yani mesela komut istemcisinin kullandığı dil Batch dilidir. Java'nın buna erişmesi gerekebilir. İşte bu yüzden kullanılır. Tabi bununla korkutma virüsü yapabilirsiniz. Çünkü Visual Basic Script'e de erişim sağlayabiliyor sanırım. O da sizin CD yerinizi açtırabiliyor
volatile: Bu biraz değişik bir şey. Normalde sizin değişkenleriniz ve metodlarınız CPU'da depolanır. Ama bu anahtar kelime bunların ana hafızada saklanmasını garantiler. Bu Thread kullanırken işe yarar. Çünkü Thread'ler bağımsız işlemlerdir ve aynı değişkenleri paylaşmazlar. Eğer ana hafızada saklanırsa bütün Thread'ler aynı değişken değerlerini paylaşırlar. Yani "static" anahtar kelimesinin Thread'ler için olan versiyonu diyebiliriz. Yine kullanılacağını düşünmüyorum.
Pencere Kapanırken İşlem Yaptırmak
Bazen penceremiz kapanırken işlem yapmamız gerekebilir. Bunu Bölüm 4'te söylemiştim ama anlatmamıştım. Şimdi anlatalım. Tabi yine kodumuza bakalım önce:
WindowAdapter abstract bir class. Pencerenin ne zaman kapatıldığını bilmek için oradaki metoddan yararlanıyoruz. Yine basit bir işlem.
Anlamadığınız bir yer varsa lütfen sorun ve bir hatamı görürseniz lütfen belirtin. İnsanları yanlış yönlendirmiş olmayayım diye. Özellikle anahtar kelimelerde bazı belirtmelerde sorun olabilir. Varsa söylemenizden hoşnut olurum Bir dahaki bilgi bölümünde görüşürüz diyecem de başka anlatılacak bir şey yok Eğer bir şeyi yapmak isterseniz veya bir sorunuz varsa bana özel mesaj olarak atabilirsiniz veya konu altından sorabilirsiniz. Okuduğunuz için teşekkür ederim. Görüşürüz
Bölüm 1 (final, static, kod blokları, switch-case, if-else'i kısaltma)
Bölüm 2 (main metodu, package-private, protected private, do-while, modüler)
Bölüm 3 (synchronized, interface, enum, abstract, annotation, dosya açma, silme, oluşturma, dosyaya yazı yazma, dosyadan yazı okuma, process oluşturma)
Bölüm 4 (JFrame, JButton, JTextField, JPanel, JLabel)
Bölüm 5 (Değişken Sistemi, Bazı Tavsiyeler, Thread ve Synchronized)
Bu konumuzda continue, try-catch-finally, try-with-resources, instanceof, native ve volatile'i göstericem. Başlayalım.
continue: Bu anahtar kelime bir döngüyü, geriye kalan kodunu okumadan devam ettirmeye denir. Biraz değişik bir tanım oldu sanki. Kısaca örnek verelim. Siz bir sunucudaki tüm oyuncuları bir döngüye aldınız. Ama diyorsunuz ki adam bilmem ne bölgesinde ise onu alma. Yapmanız gereken şey adamın bölgesini kontrol etmek ve o bölgedeyse bu anahtar kelimeyi kullanmak. Bu sayede döngünün dışına çıkılmadan o oyuncuyu yok sayabilirsiniz.
try-catch-finally: Aslında try-catch ile aynı şey. Ama catch'den sonra bir de finally ekleyebiliyorsunuz. Bu demektir ki ne olursa olsun bir şeyi yapması gerek. Mesela:
Kod:
Writer writer;
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dosya), "utf-8"));// Bölüm 3'te anlattım. Dosyaya yazı yazıcaz.
writer.write("Bir şey");
} catch (IOException e) {
System.err.println("Dosyaya yazı yazılamadı!"); // Hata mesajı göndermeye yarayan bir metod.
} finally {
writer.close; // Bunu da anlattım 3. Bölümde.
}
try-with-resources: Bu biraz kafanızı karıştırabilir. Çünkü bunda try yazıcaksınız ama catch ve finally koymayacaksınız. Şöyle kullanabilirsiniz:
Kod:
String yazı;
try (Scanner sc = new Scanner(dosya)) { // Yine Bölüm 3'te anlattım.
yazı = (sc.hasNextLine) ? sc.nextLine : "";
}
instanceof: Bunu plugin yazan arkadaşlar görmüşlerdir. Şu koda benzer bir kodu neredeyse her plugin içinde görebilirsiniz:
Kod:
if (!(sender instanceof Player)) // Bu sayede komutu gönderen kişinin konsol olduğunu anlıyoruz.
Kod:
Araba ford_focus = new Araba();
if (ford_focus instanceof Araba) { // Bu doğru olacaktır. Çünkü ford_focus değişkeni Araba class'ını örnek almış.
// Olaylar
}
native: Bunu siz kullanmayacaksınız zaten. Baya ileri bir konu aslında bu. Ama merak eden kişiler için göstericem. Bu anahtar kelime bir metodun Java'da değil de başka bir dilde var olduğunu belirtir. Yani mesela komut istemcisinin kullandığı dil Batch dilidir. Java'nın buna erişmesi gerekebilir. İşte bu yüzden kullanılır. Tabi bununla korkutma virüsü yapabilirsiniz. Çünkü Visual Basic Script'e de erişim sağlayabiliyor sanırım. O da sizin CD yerinizi açtırabiliyor
volatile: Bu biraz değişik bir şey. Normalde sizin değişkenleriniz ve metodlarınız CPU'da depolanır. Ama bu anahtar kelime bunların ana hafızada saklanmasını garantiler. Bu Thread kullanırken işe yarar. Çünkü Thread'ler bağımsız işlemlerdir ve aynı değişkenleri paylaşmazlar. Eğer ana hafızada saklanırsa bütün Thread'ler aynı değişken değerlerini paylaşırlar. Yani "static" anahtar kelimesinin Thread'ler için olan versiyonu diyebiliriz. Yine kullanılacağını düşünmüyorum.
Pencere Kapanırken İşlem Yaptırmak
Bazen penceremiz kapanırken işlem yapmamız gerekebilir. Bunu Bölüm 4'te söylemiştim ama anlatmamıştım. Şimdi anlatalım. Tabi yine kodumuza bakalım önce:
Kod:
// Pencere tanımı...
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); // Anlattım.
frame.addWindowListener(new WindowAdapter() { // Pencereyi dinleyen sanal bir class oluşturuyoruz. Pencerenin kapatıldığı anı dinleyecek.
@Override
public void windowClosing(WindowEvent e) { // Pencere kapatma metodunu geçersiz kılıp kendimizinkini yazıyoruz.
// Olaylar
}
});
// Pencere tanımının devamı...
Anlamadığınız bir yer varsa lütfen sorun ve bir hatamı görürseniz lütfen belirtin. İnsanları yanlış yönlendirmiş olmayayım diye. Özellikle anahtar kelimelerde bazı belirtmelerde sorun olabilir. Varsa söylemenizden hoşnut olurum Bir dahaki bilgi bölümünde görüşürüz diyecem de başka anlatılacak bir şey yok Eğer bir şeyi yapmak isterseniz veya bir sorunuz varsa bana özel mesaj olarak atabilirsiniz veya konu altından sorabilirsiniz. Okuduğunuz için teşekkür ederim. Görüşürüz
Son düzenleme: