Cách sử dụng từ khóa tĩnh Java
Khi bạn đang làm việc với các lớp trong Java, bạn thường cần tạo một phiên bản của lớp trước khi bạn có thể truy cập các thành viên của nó. Tuy nhiên, bạn có thể gặp phải trường hợp muốn xác định một thành viên lớp mà không cần tạo một thể hiện của lớp.
Đó là nơi xuất hiện của từ khóa Java static. Từ khóa Java static được sử dụng để xác định các thành viên lớp mà bạn có thể truy cập mà không cần tạo một phiên bản của lớp.
Hướng dẫn này sẽ thảo luận, với các ví dụ, khái niệm cơ bản về từ khóa Java static và cách sử dụng nó trong các chương trình Java của bạn.
Các lớp Java
Trong Java, các lớp là bản thiết kế cho một đối tượng. Ví dụ:một lớp được gọi là OrderCoffee có thể bao gồm tất cả các chức năng liên quan đến đặt hàng cà phê, chẳng hạn như đặt hàng, thay đổi đơn hàng hiện có và thêm các món mới vào đơn hàng.
Sau đó, chúng ta có thể tạo các đối tượng là các thể hiện của lớp đó. Ví dụ:một đối tượng có tên CoffeeOrder12 có thể sử dụng bản thiết kế từ lớp CoffeeOrder để lưu trữ dữ liệu cho một đơn hàng cà phê riêng lẻ. Đối tượng CoffeeOrder12 sẽ có quyền truy cập vào tất cả các chức năng và phương thức được khai báo trong lớp CoffeeOrder. Xem Hình 1 để trình bày trực quan những ý tưởng này.
Bây giờ chúng ta đã thảo luận về những điều cơ bản của các lớp Java, chúng ta có thể chuyển sang khám phá từ khóa Java static.
Phương thức tĩnh Java
Phương thức tĩnh, còn được gọi là phương thức lớp, là các phương thức thuộc về một lớp chứ không phải các thể hiện của nó. Vì các phương thức tĩnh thuộc về một lớp, bạn chỉ có thể gọi phương thức từ chính lớp đó chứ không phải từ một đối tượng của lớp.
Đây là cú pháp để gọi một phương thức tĩnh:
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Class.methodName();
Hãy xem một ví dụ để xem cách này hoạt động như thế nào.
Giả sử chúng ta đang tạo một chương trình quản lý các đơn đặt hàng cho một cửa hàng cà phê. Chúng tôi muốn tạo một lớp có tên CoffeeOrder lưu trữ tất cả các chức năng để gọi một ly cà phê.
Chúng tôi quyết định rằng chúng tôi muốn có thể in thông báo đơn đặt hàng mới tới bảng điều khiển của nhân viên pha cà phê. Chúng tôi muốn thông báo đặt hàng mới này là tĩnh vì nó không phụ thuộc vào bất kỳ mã nào khác trong đối tượng đặt hàng cà phê. Chúng tôi có thể sử dụng mã sau để thực hiện nhiệm vụ này:
class CoffeeOrder { int createOrder() { // Code here int orderNumber = 92; return orderNumber; } static void printOrder(int order) { System.out.println("Order #" + order + " order has been placed."); } } class Main { public static void main(String[] args) { CoffeeOrder order92 = new CoffeeOrder(); int number = order92.createOrder(); System.out.println("Order number: " + number); CoffeeOrder.printOrder(number); } }
Mã của chúng tôi trả về:
Order number: 92 Order #92 has been placed.
Hãy chia nhỏ mã của chúng ta từng bước. Đầu tiên chúng ta khai báo một lớp có tên là CoffeeOrder. CoffeeOrder chứa hai phương thức:createOrder()
và printOrder()
.
createOrder()
là một phương thức thông thường tạo đơn hàng và trả về số thứ tự. printOrder()
là một phương thức tĩnh in một thông báo tới bảng điều khiển để thông báo cho nhân viên pha cà phê rằng một đơn hàng mới đã được đặt.
Trong chương trình chính của chúng tôi, chúng tôi tạo một đối tượng của CoffeeOrder được gọi là order92. Đối tượng này lưu trữ dữ liệu cho đơn đặt hàng số 92. Sau đó, chúng tôi sử dụng createOrder()
để lấy số đơn đặt hàng và chúng tôi in ra số đơn đặt hàng đó, đứng trước Số thứ tự:, ra bảng điều khiển.
Khi chúng tôi gọi createOrder()
, chúng tôi sử dụng order92.createOrder()
. Điều này là do createOrder()
không phải là một phương thức tĩnh, vì vậy chúng ta có thể truy cập nó khi thao tác với đối tượng của mình.
Ở cuối mã chính của chúng tôi, chúng tôi sử dụng CoffeeOrder.printOrder()
để in một thông báo cho biết Đơn hàng # [số đơn hàng] đã được đặt. vào bảng điều khiển. Trong tin nhắn này, order number
bằng số liên quan đến một đơn đặt hàng cụ thể. Bởi vì printOrder()
là một phương thức tĩnh, chúng tôi phải sử dụng CoffeeOrder (lớp của chúng tôi) để truy cập nó.
Nếu chúng tôi cố sử dụng order92.printOrder()
(gọi một thể hiện của lớp chúng ta), giống như chúng ta đã làm khi sử dụng createOrder()
, chúng tôi có thể đưa ra một cảnh báo.
Biến tĩnh Java
Từ khóa static trong Java cũng có thể được sử dụng để tạo các biến phiên bản tĩnh. Các biến tĩnh thuộc về một lớp và chỉ được khởi tạo một lần khi bắt đầu thực thi chương trình.
Các biến static không thuộc về một đối tượng. Điều này có nghĩa là để truy cập chúng, bạn cần phải tham khảo lớp có liên quan. Đây là cú pháp để khai báo một biến tĩnh trong Java:
static String COFFEE_NAME = "Espresso";
Trong ví dụ này, chúng tôi đã khai báo một biến tĩnh có tên COFFEE_NAME, mà chúng tôi đã gán giá trị chuỗi Espresso.
Hãy xem qua một ví dụ để giới thiệu một biến tĩnh Java đang được sử dụng.
Giả sử chúng ta đang tạo một chương trình xử lý các đơn đặt hàng tại một quán cà phê. Chương trình này sẽ lưu trữ số nhân viên pha chế đang làm nhiệm vụ và khi một đơn đặt hàng được tạo, chương trình sẽ liên kết đơn đặt hàng đó với tên của nhân viên pha chế sẽ chuẩn bị đơn hàng đó.
Chúng tôi có thể sử dụng mã này để tạo chương trình chế biến cà phê của mình:
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
Mã của chúng tôi trả về:
Baristas on duty: 2 Assigned barista: Hannah Johnson
Trong mã của chúng tôi, chúng tôi khai báo hai biến sau:
- baristasOnDuty. Đây là một biến tiêu chuẩn, có nghĩa là nó có thể được truy cập trong toàn bộ lớp học của chúng tôi.
- tên. Đây là một biến tĩnh, có nghĩa là chúng ta cần tham chiếu đến đối tượng mà nó được liên kết để truy xuất giá trị của nó.
Trong chương trình chính của chúng tôi, chúng tôi tạo một thể hiện của lớp CoffeeOrder và gọi nó là order111. Sau đó, chúng tôi in ra thông báo Baristas on duty:tiếp theo là nội dung của biến baristasOnDuty. Bởi vì đây là một biến tiêu chuẩn, chúng tôi không cần tham chiếu đến tên lớp của nó.
Trên dòng tiếp theo của mã của chúng tôi, chúng tôi in thông báo Đã chỉ định barista:đến bàn điều khiển, theo sau là tên của nhân viên pha chế được chỉ định đơn hàng. Tuy nhiên, tên của nhân viên pha chế được lưu trữ dưới dạng một biến tĩnh.
Điều này có nghĩa là, để truy xuất tên của nhân viên pha cà phê, chúng ta cần tham chiếu đến tên của đối tượng mà biến đó được liên kết. Trong trường hợp này, chúng tôi sử dụng order111.name để truy xuất tên nhân viên pha chế. Điều này là do tên biến là tĩnh và do đó chỉ có thể được truy cập khi tham chiếu đến đối tượng order111.
Khối tĩnh Java
Từ khóa Java static cũng có thể được sử dụng để tạo một khối tĩnh. Nếu một lớp có các biến tĩnh khác nhau cần được khởi tạo riêng lẻ, thì bạn nên sử dụng một khối tĩnh.
Các khối tĩnh được thực thi một lần — khi lớp được tải lần đầu tiên vào bộ nhớ của máy tính. Đây là cú pháp cho một khối mã tĩnh trong Java:
static { // Code here }
Hãy xem qua một ví dụ để chứng minh cách hoạt động của khối tĩnh. Giả sử chúng ta được yêu cầu gửi thông báo A new order is incoming …
in ra bàn điều khiển trước khi chương trình giao lệnh cho nhân viên pha chế để nhân viên pha chế biết để chuẩn bị. Chúng ta có thể làm như vậy bằng cách tạo một lớp tĩnh. Lớp tĩnh sẽ chạy lần đầu tiên chương trình được thực thi.
Dưới đây là một ví dụ về lớp tĩnh in ra thông báo nói trên, sau đó chỉ định một đơn hàng cho nhân viên pha chế:
class CoffeeOrder { int baristasOnDuty = 2; static String name = "Hannah Johnson"; static { System.out.println("A new order is incoming …"); } public static void main(String[] args) { CoffeeOrder order111 = new CoffeeOrder(); System.out.println("Baristas on duty: " + baristasOnDuty); System.out.println("Assigned barista: " + order111.name); } }
Mã của chúng tôi trả về:
A new order is incoming … Baristas on duty: 2 Assigned barista: Hannah Johnson
Trong mã của chúng tôi, đầu tiên chúng tôi khởi tạo các biến baristasOnDuty và đặt tên. Sau đó, chương trình in thông báo Một đơn đặt hàng mới đang đến… ra bảng điều khiển. Thông báo này đã được lưu trữ trong khối mã tĩnh của chúng tôi. Sau khi chương trình thực thi nội dung của khối tĩnh, nó sẽ chạy chương trình chính của chúng tôi, chương trình này trả về kết quả đầu ra giống như chương trình chính từ ví dụ cuối cùng của chúng tôi.
Kết luận
Từ khóa Java static có một số cách sử dụng. Bạn có thể sử dụng từ khóa static để tạo các phương thức tĩnh, biến tĩnh và các khối mã tĩnh.
Hướng dẫn này đã giới thiệu sơ qua về các ví dụ, kiến thức cơ bản về từ khóa tĩnh và cách bạn có thể sử dụng từ khóa tĩnh với các phương thức, biến và khối mã. Sau khi đọc hướng dẫn này, bạn đã sẵn sàng để bắt đầu sử dụng từ khóa Java static như một người chuyên nghiệp.