Giới thiệu một số keyword trong Java
Bài viết này sẽ giới thiệu một số keyword tương đối ít được sử dụng trong Java như assert, strictfp, transient: Assert là keyword có từ Java 1.4 sử dụng để kiểm tra một biểu thức có đúng hay không, thường sử dụng cho việc viết code unit test. Trong Java sử dụng assert có 2 cách viết: Cú ...
Bài viết này sẽ giới thiệu một số keyword tương đối ít được sử dụng trong Java như assert, strictfp, transient:
- Assert là keyword có từ Java 1.4 sử dụng để kiểm tra một biểu thức có đúng hay không, thường sử dụng cho việc viết code unit test. Trong Java sử dụng assert có 2 cách viết:
-
Cú pháp thứ nhất: assert Expression1;
Khi chương trình thực thi Expression1 nó sẽ đánh giá Expression1 có đúng hay không. Nếu sai thì một lỗi AssertionError sẽ được ném ra.
-
Cú pháp thứ hai: assert Expression1 : Expression2;
Trong đó: • Expression1 là biểu thức trả về kết quả dạng boolean. • Expression2 là biểu thức trả về giá trị. (tức là nó không thể gọi 1 phương thức khai báo return void)
Đoạn code sau sẽ mô tả cách sử dụng:
import java.io.*; public class AssertionTest { public static void main(String argv[]) throws IOException { System.out.print("Enter your marital status: "); int c = System.in.read(); switch ((char) c) { case 's': case 'S': System.out.println("Single"); break; case 'm': case 'M': System.out.println("Married"); break; case 'd': case 'D': System.out.println("Divorced"); break; default: assert !true : "Invalid Option"; break; } } }
Chú ý là ta chỉ có thể sử dụng keyword này từ Java 1.4 và măc định nó được disable. Muốn sử dụng nó cần thêm tham số -enableassertion hoặc –ea khi run chương trình.
-
strictfp là keyword đảm bảo cho bạn sẽ nhận một kết quả như nhau khi thực hiện các toán tử với số thập phân trên các platform’s hardware khác nhau. Keyword này có thể được sử dụng cho classes, interfaces and methods. Tuy nhiên nó cũng có những quy tắc:
- Không thể sử dụng strictfp cho contrustor.
- Không thể dử dụng cho method của interface.
- Nếu một interface hay class sử dụng strictfp có nghĩa là tất cả các method hay class bên trong nó điều được strictfp.
Ví dụ sau minh họa cách sử dụng:
-- The class is declared with strictfp strictfp class StrictFPClass { double num1 = 10e+102; double num2 = 6e+08; double calculate() { return num1 + num2; } } -- The following interface is declared with strictfp, but its methods cannot: strictfp interface StrictFPInterface { double calculate(); strictfp double compute(); // compile error } -- The following method is declared with strictfp: class StrictFPMethod { strictfp double computeTotal(double x, double y) { return x + y; } }
-
transient là keyword sẽ thông báo cho JVM biết đối tượng được transient sẽ không được serialization khi truyền qua IO (cũng có nghĩa là đối tượng đó sẽ không được chuyển qua mạng). Ví dụ sau giúp hiểu hơn về về transient:
Tạo một class Student có sử dụng biến transient import java.io.Serializable; public class Student implements Serializable{ int id; String name; transient int age;//Now it will not be serialized public Student(int id, String name,int age) { this.id = id; this.name = name; this.age=age; } } Ghi object xuống file: import java.io.*; class PersistExample{ public static void main(String args[])throws Exception{ Student s1 =new Student(211,"ravi",22);//creating object //writing object into file FileOutputStream f=new FileOutputStream("f.txt"); ObjectOutputStream out=new ObjectOutputStream(f); out.writeObject(s1); out.flush(); out.close(); f.close(); System.out.println("success"); } } Output: import java.io.*; class DePersist{ public static void main(String args[])throws Exception{ ObjectInputStream in=new ObjectInputStream(new FileInputStream("f.txt")); Student s=(Student)in.readObject(); System.out.println(s.id+" "+s.name+" "+s.age); in.close(); } } Kết quả: 211 ravi 0