Khái niệm hướng đối tượng (OOP) trong Java (Phần  24)

Khái niệm hướng đối tượng (OOP) trong Java (Phần 24)

7 - 28/09/2018

Gọi bởi giá trị trong Java

Chỉ có gọi bởi giá trị trong Java, không có gọi bởi tham chiếu. Nếu chúng ta gọi một phương thức đang truyền một giá trị, thì đó là gọi bởi giá trị. Các thay đổi đang được thực hiện trong phương thức được gọi, sẽ không bị tác động trong phương thức đang gọi.

Ví dụ về gọi bởi giá trị trong Java

Trong trường hợp gọi bởi giá trị, giá trị ban đầu không bị thay đổi. Bạn theo dõi ví dụ đơn giản sau:

class Vidu{  
 int data=50;  
  
 void change(int data){  
 data=data+100;//cac thay doi se chi o trong bien cuc bo  
 }  
     
 public static void main(String args[]){  
   Vidu op=new Vidu();  
  
   System.out.println("Truoc khi thay doi "+op.data);  
   op.change(500);  
   System.out.println("Sau khi thay doi "+op.data);  
  
 }  
}  

Chạy chương trình Java trên sẽ cho kết quả dạng:

Output:Truoc khi thay doi 50
       Sau khi thay doi 50         

Ví dụ khác về gọi bởi giá trị trong Java

Trong gọi bởi tham chiếu, giá trị ban đầu bị thay đổi nếu chúng ta tạo thay đổi trong phương thức được gọi. Nếu chúng ta truyền đối tượng thay cho bất cứ giá trị kiểu gốc nào, thì giá trị ban đầu sẽ bị thay đổi. Trong ví dụ này, chúng ta đang truyền đối tượng như là giá trị. Bạn theo dõi ví dụ đơn giản sau:

class Vidu2{  
 int data=50;  
  
 void change(Vidu2 op){  
 op.data=op.data+100;//Cac thay doi se la trong bien instance  
 }  
     
    
 public static void main(String args[]){  
   Vidu2 op=new Vidu2();  
  
   System.out.println("Truoc khi thay doi "+op.data);  
   op.change(op);//truyen doi tuong  
   System.out.println("Sau khi thay doi "+op.data);  
  
 }  
}   

Chạy chương trình Java trên sẽ cho kết quả dạng:

Output:Truoc khi thay doi 50

       Sau khi thay doi 150       

Từ khóa strictfp trong Java

Từ khóa strictfp bảo đảm rằng bạn sẽ lấy cùng kết quả trên mỗi nền tảng nếu bạn thực hiện các hoạt động trong giá trị số thực dấu chấm động. Phần sau dấu thập phân Precision có thể khác nhau giữa các nền tảng, và đó là lý do tại sao ngôn ngữ lập trình Java cung cấp từ khóa strictfp, để mà bạn có thể nhận được cùng kết quả trên mỗi nền tảng. Vì thế, bây giờ bạn sẽ có sự điều khiển tốt hơn với các phép toán về số thực.

Code hợp lệ cho từ khóa strictfp trong Java

Từ khóa strictfp có thể được áp dụng trên các phương thức, các lớp, và interface.

strictfp class A{}//strictfp ap dung tren lop  
strictfp interface M{}//strictfp ap dung tren interface  
class A{  
strictfp void m(){}//strictfp ap dung tren phuong thuc  
}  

Code không hợp lệ cho từ khóa strictfp trong Java

Từ khóa strictfp không thể được áp dụng trên các phương thức trừu tượng, các biến hoặc các constructor.

class B{  
strictfp abstract void m();//su to hop khong hop le cua các modifier  
}  

class B{ 

strictfp int data=10;//modifier strictfp khong duoc cho phep o day

} 

class B{ 

strictfp B(){}//modifier strictfp khong duoc cho phep o day 

} 

Date và Time trong Java

Java cung cấp lớp Date có sẵn trong java.util package, lớp này tóm lược ngày tháng và thời gian hiện tại.

Để hiểu sâu hơn các khái niệm được trình bày trong chương này, mời bạn tham khảo loạt bài: Ví dụ về Date & Time trong Java.

Lớp Date hỗ trợ hai constructor. Constructor đầu tiên khởi tạo đối tượng với ngày và thời gian hiện tại.

Date( )

Constructor sau chấp nhận một tham số bằng số mili giây đã trôi qua từ nửa đêm ngày 1/1/1970.

Date(long millisec)

Một khi bạn có một đối tượng Date có sẵn, bạn có thể gọi bất kỳ phương thức hỗ trợ nào để thao tác với ngày tháng này:

STT

Phương thức và Miêu tả

1

boolean after(Date date)

Trả về true nếu gọi đối tượng Date chứa một ngày mà chậm hơn ngày đã xác định, nếu không là false.

2

boolean before(Date date)

Trả về true nếu gọi đối tượng Date chứa một ngày mà sớm hơn ngày đã xác định, nếu không là false.

3

Object clone( )

Sao chép đối tượng Date đang gọi

4

int compareTo(Date date)

So sánh giá trị đối tượng đang gọi với giá trị đó của date. Trả về 0 nếu các giá trị này là cân bằng. Trả về một giá trị âm nếu đối tượng đang gọi là sớm hơn date. Trả về một giá trị dương nếu đối tượng đang gọi chậm hơn date.

5

int compareTo(Object obj)

Tiến hành tương tự như compareTo(Date) nếu đối tượng là của lớp Date. Nếu không thì, nó cho một ClassCastException.

6

boolean equals(Object date)

Trả về true nếu đối tượng Date đang gọi chứa thời gian và ngày tháng giống như date đã cho, nếu không là false.

7

long getTime( )

Trả về số mili giây đã trôi qua từ 1/1/1970

8

int hashCode( )

Trả về một mã hóa băm (hash code) cho đối tượng đang gọi

9

void setTime(long time)

Thiết lập ngày tháng và thời gian như time đã cho, mà biểu diễn một time đã trôi qua (giá trị mili giây) từ nửa đêm 1/1/1970

10

String toString( )

Biến đổi đối tượng Date đang gọi thành một chuỗi và trả về kết quả

Bình luận

Ảnh đại diện của bạn