Trong Java, mục đích gì làm các từ khóa final
, finally
và finalize
thực hiện?
Trong Java, mục đích gì làm các từ khóa final
, finally
và finalize
thực hiện?
Câu trả lời:
final
có thể được sử dụng để đánh dấu một biến "không thể thay đổi"
private final String name = "foo"; //the reference name can never change
final
cũng có thể làm cho một phương thức không bị "ghi đè"
public final String toString() { return "NULL"; }
final
cũng có thể làm cho một lớp không được "kế thừa". tức là lớp không thể được phân lớp.
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
được sử dụng trong câu lệnh try / catch để thực thi mã "luôn luôn"
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7 có một thử nghiệm mới với tuyên bố tài nguyên mà bạn có thể sử dụng để tự động đóng các tài nguyên triển khai rõ ràng hoặc ngầm định java.io.Closable hoặc java.lang.AutoClosable
finalize
được gọi khi một đối tượng được thu gom rác. Bạn hiếm khi cần ghi đè nó. Một ví dụ:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
Object#finalize()
phương pháp đã bị phản đối trong Java 9 ( JDK-8.165.641 ).
Từ khóa final dùng để khai báo hằng số.
final int FILE_TYPE = 3;
Từ khóa cuối cùng được sử dụng trong câu lệnh try catch để chỉ định một khối mã để thực thi bất kể ngoại lệ được đưa ra.
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
Và cuối cùng (haha), finalize tôi không hoàn toàn chắc chắn là một từ khóa, nhưng có một hàm finalize () trong lớp Object.
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
cuối cùng - khai báo hằng.
cuối cùng - Khối cuối cùng luôn thực thi khi khối thử thoát, ngoại trừ lệnh gọi System.exit (0). Điều này đảm bảo rằng khối cuối cùng được thực thi ngay cả khi một ngoại lệ không mong muốn xảy ra. Nhưng cuối cùng hữu ích cho nhiều hơn là chỉ xử lý ngoại lệ - nó cho phép lập trình viên tránh việc mã dọn dẹp vô tình bị bỏ qua khi trả về, tiếp tục hoặc ngắt. Đặt mã dọn dẹp trong một khối cuối cùng luôn là một phương pháp hay, ngay cả khi không có ngoại lệ nào được dự đoán trước.
finalize () - phương thức giúp thu gom rác. Một phương thức được gọi trước khi một đối tượng bị bộ thu gom rác loại bỏ, cho phép nó dọn dẹp trạng thái của nó. Không nên được sử dụng để giải phóng các tài nguyên không phải bộ nhớ như xử lý tệp, ổ cắm, kết nối cơ sở dữ liệu, v.v. vì Java chỉ có một số lượng hữu hạn các tài nguyên này và bạn không biết khi nào bộ sưu tập rác sẽ bắt đầu giải phóng các tài nguyên không phải bộ nhớ này thông qua phương thức finalize ().
Bạn đã thử tìm kiếm trên google và cần được giải thích rõ ràng?
final: cuối cùng là một từ khóa. Biến được coi là cuối cùng chỉ được khởi tạo một lần và không thể thay đổi. Các lớp Java được khai báo là cuối cùng không thể được mở rộng. Không thể ghi đè các phương thức được khai báo là cuối cùng.
cuối cùng: cuối cùng là một khối. Khối cuối cùng luôn thực thi khi khối try thoát. Điều này đảm bảo rằng khối cuối cùng được thực thi ngay cả khi một ngoại lệ không mong muốn xảy ra. Nhưng cuối cùng hữu ích cho nhiều hơn là chỉ xử lý ngoại lệ - nó cho phép lập trình viên tránh việc mã dọn dẹp vô tình bị bỏ qua khi trả về, tiếp tục hoặc ngắt. Đặt mã dọn dẹp trong một khối cuối cùng luôn là một phương pháp hay, ngay cả khi không có ngoại lệ nào được dự đoán trước.
finalize: cuối cùng là một phương thức. Trước khi một đối tượng được thu gom rác, hệ thống thời gian chạy sẽ gọi phương thức finalize () của nó. Bạn có thể viết mã giải phóng tài nguyên hệ thống trong phương thức finalize () trước khi thu gom rác.
1. Cuối cùng • Cuối cùng được sử dụng để áp dụng các hạn chế về lớp, phương thức và biến. • Không thể kế thừa lớp cuối cùng, không thể ghi đè phương thức cuối cùng và không thể thay đổi giá trị biến cuối cùng. • Các biến cuối cùng được khởi tạo tại thời điểm tạo ngoại trừ trường hợp biến cuối cùng trống được khởi tạo trong Constructor. • Cuối cùng là một từ khóa.
2. Cuối cùng • Cuối cùng được sử dụng để xử lý ngoại lệ cùng với thử và bắt. • Nó sẽ được thực thi cho dù ngoại lệ có được xử lý hay không. • Khối này được sử dụng để đóng các tài nguyên như kết nối cơ sở dữ liệu, tài nguyên I / O. • Cuối cùng là một khối.
3. Finalize • Finalize được gọi bởi chuỗi thu gom rác ngay trước khi thu thập các đối tượng đủ điều kiện để thực hiện xử lý dọn dẹp. • Đây là cơ hội cuối cùng để đối tượng thực hiện bất kỳ thao tác dọn dẹp nào nhưng vì nó không được đảm bảo rằng liệu finalize () có được gọi hay không, nên thực tế không tốt là giữ nguyên tài nguyên cho đến khi lệnh gọi finalize. • Finalize là một phương pháp.
Ý nghĩa của final trong java là: -được áp dụng cho một biến có nghĩa là biến tương ứng sau khi được khởi tạo không thể sửa đổi được nữa
private final double numer = 12;
Nếu bạn cố gắng sửa đổi giá trị này, bạn sẽ gặp lỗi.
-được áp dụng cho một phương thức có nghĩa là không thể ghi đè phương thức tương ứng
public final void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
Nhưng phương thức cuối cùng có thể được kế thừa vì từ khóa cuối cùng hạn chế việc định nghĩa lại phương thức.
-được áp dụng cho một lớp có nghĩa là lớp tương ứng không thể được mở rộng.
class Base
{
public void displayMsg()
{
System.out.println("I'm in Base class - displayMsg()");
}
}
Ý nghĩa của cuối cùng là:
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...");
}
}
trong ví dụ này, ngay cả khi try-catch được thực thi hay không, những gì bên trong cuối cùng sẽ luôn được thực thi. Ý nghĩa của finalize:
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();
}}
trước khi gọi Người thu gom rác.