Java'da, ne amaçla anahtar kelimeleri yapmak final
, finally
ve finalize
yerine getirmek?
Java'da, ne amaçla anahtar kelimeleri yapmak final
, finally
ve finalize
yerine getirmek?
Yanıtlar:
final
bir değişkeni "değiştirilemez" olarak işaretlemek için kullanılabilir
private final String name = "foo"; //the reference name can never change
final
bir yöntemi "geçersiz kılınamaz" da yapabilir
public final String toString() { return "NULL"; }
final
bir sınıfı "miras alınamaz" da yapabilir. yani, sınıf alt sınıflara ayrılamaz.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
"her zaman" kodunu yürütmek için bir dene / yakala deyiminde kullanılır
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7, java.io.Closeable veya java.lang.AutoCloseable'ı açık veya kapalı olarak uygulayan kaynakları otomatik olarak kapatmak için kullanabileceğiniz yeni bir kaynakla deneme ifadesine sahiptir.
finalize
bir nesne çöp toplandığında çağrılır. Nadiren geçersiz kılmanız gerekir. Bir örnek:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Object#finalize()
yöntem Java 9 (kullanımdan kaldırıldı JDK-8.165.641 ).
Son anahtar kelime sabitleri bildirmek için kullanılır.
final int FILE_TYPE = 3;
Nihayet anahtar sözcüğü, atılan istisnalara bakılmaksızın yürütülecek bir kod bloğu belirtmek için bir try catch deyiminde kullanılır.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
Ve son olarak (haha), bir anahtar kelime olduğundan tam olarak emin değilim, ancak Object sınıfında bir finalize () işlevi var.
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
final - sabit beyan.
Nihayet - Nihayet bloğu, System.exit (0) çağrısı dışında, try bloğu çıktığında her zaman yürütülür. Bu, beklenmeyen bir istisna meydana gelse bile final bloğunun yürütülmesini sağlar. Ancak son olarak, istisna işlemeden daha fazlası için kullanışlıdır - programcının temizleme kodunun yanlışlıkla bir dönüş, devam etme veya kesme ile atlanmasını önlemesini sağlar. Hiçbir istisna beklenmese bile temizleme kodunu nihayet bloğuna koymak her zaman iyi bir uygulamadır.
finalize () - yöntem çöp toplamaya yardımcı olur. Bir nesne çöp toplayıcı tarafından atılmadan önce çağrılan ve durumunu temizlemesine izin veren bir yöntem. Dosya tanıtıcıları, soketler, veritabanı bağlantıları vb. Gibi bellek dışı kaynakları serbest bırakmak için kullanılmamalıdır çünkü Java'da bu kaynaklardan yalnızca sınırlı sayıda vardır ve bu bellek dışı kaynakları serbest bırakmak için çöp toplama işleminin ne zaman başlayacağını bilemezsiniz. finalize () yöntemi ile.
Google'da aramayı denediniz ve bir açıklama için açıklamaya mı ihtiyacınız var?
final: final bir anahtar kelimedir. Son olarak bildirilen değişken yalnızca bir kez başlatılmalıdır ve değiştirilemez. Final olarak ilan edilen Java sınıfları genişletilemez. Final olarak bildirilen yöntemler geçersiz kılınamaz.
nihayet: nihayet bir bloktur. Nihayet bloğu, try bloğu çıktığında her zaman yürütülür. Bu, beklenmedik bir istisna meydana gelse bile nihayet bloğunun yürütülmesini sağlar. Ancak son olarak, istisna işlemeden daha fazlası için kullanışlıdır - programcının temizleme kodunun yanlışlıkla bir dönüş, devam etme veya kesme ile atlanmasını önlemesini sağlar. Hiçbir istisna beklenmese bile temizleme kodunu nihayet bloğuna koymak her zaman iyi bir uygulamadır.
finalize: finalize bir yöntemdir. Bir nesne çöp olarak toplanmadan önce, çalışma zamanı sistemi finalize () yöntemini çağırır. Çöp toplanmadan önce finalize () yönteminde sistem kaynakları yayın kodu yazabilirsiniz.
1. Son • Son, sınıf, yöntem ve değişken üzerindeki kısıtlamaları uygulamak için kullanılır. • Son sınıf miras alınamaz, son yöntem geçersiz kılınamaz ve son değişken değeri değiştirilemez. • Son değişkenler, Oluşturucu'da başlatılan boş son değişken durumu dışında, oluşturma sırasında başlatılır. • Final bir anahtar kelimedir.
2. Son olarak • Son olarak, dene ve yakala ile birlikte istisna işleme için kullanılır. • İstisna ele alınsın ya da işlenmesin yürütülecektir. • Bu blok, veritabanı bağlantısı, G / Ç kaynakları gibi kaynakları kapatmak için kullanılır. • Son olarak bir bloktur.
3. Sonlandırma • Sonlandırma, temizleme işlemini gerçekleştirmek için uygun nesneleri toplamadan hemen önce Çöp toplama iş parçacığı tarafından çağrılır. • Bu, nesnenin herhangi bir temizleme gerçekleştirmesi için son şanstır, ancak finalize () 'nin çağrılıp çağrılmayacağı garanti edilmediğinden, çağrıyı sonlandırana kadar kaynağı tutmak kötü bir uygulamadır. • Sonuçlandırmak bir yöntemdir.
Java'da final'in anlamı şudur: -bir değişkene uygulanır, ilgili değişkenin başlatıldıktan sonra artık değiştirilemeyeceği anlamına gelir
private final double numer = 12;
Bu değeri değiştirmeye çalışırsanız, bir hata alırsınız.
-bir yönteme uygulandığında, ilgili yöntemin geçersiz kılınamayacağı anlamına gelir
public final void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
Ancak son yöntem miras alınabilir çünkü son anahtar kelime yöntemin yeniden tanımlanmasını kısıtlar.
-bir sınıfa uygulandığında, ilgili sınıfın uzatılamayacağı anlamına gelir.
class Base
{
public void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
}
Nihayet'in anlamı şudur:
class TestFinallyBlock{
public static void main(String args[]){
try{
int data=25/5;
System.out.println(data);
}
catch(NullPointerException e){System.out.println(e);}
finally{System.out.println("finally block is always executed");}
System.out.println("rest of the code...");
}
}
bu örnekte, try-catch çalıştırılsa da çalıştırılmasa bile, nihayetin içinde olan her zaman yürütülecektir. Sonlandırmanın anlamı:
class FinalizeExample{
public void finalize(){System.out.println("finalize called");}
public static void main(String[] args){
FinalizeExample f1=new FinalizeExample();
FinalizeExample f2=new FinalizeExample();
f1=null;
f2=null;
System.gc();
}}
Çöp Toplayıcıyı aramadan önce.