30/09/2018, 19:20
Hỏi static trong java
Mình có đọc 1 đoạn code trên mạng và thấy người ta viết:
private final int BOX_WIDTH=6; //cái này với cái trên khác nhau chỗ nào?```
Mình không hiểu tại sao dùng ```static``` ở đây, vì đã là ```private``` thì class khác đâu thể truy cập biến ```BOX_WIDTH``` thông qua tên class được, và có ```final``` thì đâu thể thay đổi giá trị ```BOX_WIDTH``` được.
Mong mọi người giúp đỡ!
Bài liên quan
static tức là biến tĩnh , hiểu nôn na là khi ứng dụng bạn chạy biến ấy là duy nhất , và ví dụ khi đối tượng A nào đó thay đổi giá trị từ 3 sang 4 chẳng hạn , thì khi đối tượng B nào đó sử dụng biến ấy sẽ nhận giá trị 4. và nếu không có từ khóa static thì nó sẽ là biến thường và sẽ tồn tại nhiều biến trong chương trình nếu có nhiều đối tượng.
Nếu bạn khai báo final tức là hằng không thể đổi được . Thông thường static final hay dùng cho các hằng số để có thể lấy dễ dàng và tiết kiệm bộ nhớ. ví dụ Constant.PI chẳng hạn thì sẽ sử dụng và quản lý dễ dàng.
Thường thì hay khai báo các hằng số này trong một Interface tên là Constant là hợp lý nhất.
ở trên bạn dùng private vậy chỉ có thể lấy từ trong class dùng nó thôi , đó là một biện pháp chống hard-code rất tốt.
vậy sự khác nhau của 2 cách dước đây:
private static final int BOX_WIDTH=6;
private final int BOX_WIDTH=6;
là
Đúng không anh
đúng rồi đó em , làm như vậy là tốt nhất ^^~ , em đọc hai ví dụ dưới đây là hiểu sâu liền.
1 ) dùng static final , ví dụ số PI chẳng hạn , nó đâu thay đổi mà nếu cứ tạo ra một đối tượng lại tạo ra nó thì quá phí phạm đúng không.
^^~~
Đọc cái 1 ) của anh là em hiểu rồi còn cái 2 ) có phần hơi khó hiểu chắc do ít chơi game
Cảm ơn anh vì đã giúp em hiểu thêm 1 vấn đề đơn giản mà đó giờ cứ mặc định là như thế mà không biết tại sao phải là như thế!