1.final用於聲明屬性、方法和類,分別表示屬性不可變,方法不可覆蓋類和類不可能被繼承(不可能再派生出新的子類)。java
程序員
1).引用不可變sql
2).對象不可變app
1.final在定義的時候初始化。socket
2.final成員變量能夠再初始化塊中初始化,不能在靜態初始化塊中初始化。函數
3.靜態final成員變量能夠在靜態初始化中初始化但不能夠在初始化塊中初始化。url
4.類的構造器中初始化,但靜態final成員變量不能夠在構造函數中初始化spa
public class finaltest {
public static void main(String[] args) {
final StringBuffer stringBuffer=new StringBuffer("hello");
stringBuffer.append(" word");
System.out.println(stringBuffer);
}
}
運行結果:hello word對象
public class finaltest {
public static void main(String[] args) {
final StringBuffer stringBuffer=new StringBuffer("hello");
stringBuffer =new StringBuffer("hello word");
System.out.println(stringBuffer);
}
}
編譯期間報錯。繼承
final方法:當一個方法聲明爲final時,該方法不容許任何子類重寫這個方法,但子類仍然可使用這個方法。
final參數:用來表示這個參數在函數內部不容許修改。
final類:當一個類被聲明爲final時,此類不能被繼承,全部方法都不能被重寫。
一個類既不能被聲明爲abstract,又被聲明爲final。
finally做爲異常處理的一部分,他只能使用於try/catch語句中,而且附帶一個語句塊,表示這個語句塊最終必定被執行,常常使用與須要釋放資源的狀況下。
Connection conn;
Statement stmt;
try{
conn=DriverMannager.getConnection(url,username,password);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
catch (Exception e) {
// TODO: handle exception
System.out.println(e);
}fianlly{
if(stmt!=NUll)
stmt.close();
if(conn!=NUll)
conn.close();
}
}
finalize()是在java.lang.Object裏定義的,也就是說每個對象都有這麼個方法。這個方法在gc啓動,該對象被回收的時候被調用。其實gc能夠回收大部分的對象(凡是new出來的對象,gc都能搞定,通常狀況下咱們又不會用new之外的方式去建立對象),因此通常是不須要程序員去實現finalize的。 特殊狀況下,須要程序員實現finalize,當對象被回收的時候釋放一些資源,好比:一個socket連接,在對象初始化時建立,整個生命週期內有效,那麼就須要實現finalize,關閉這個連接。 使用finalize還須要注意一個事,調用super.finalize();