Biến static lưu ở đâu

Static là một trong những từ khóa quan trọng của Java. Để lập trình tốt, bạn cần nắm chắc khái niệm của từ khóa Static cũng như các dạng thể hiện và cách sử dụng của nó. Static không gây khó khăn cho người dùng nhưng lại đòi hỏi bạn phải thấu hiểu hoàn toàn khái niệm của nó để có thể vận dụng tốt. Với bài viết sau đây, Teky giúp bạn tìm hiểu về các thông tin và nội dung xung quanh từ khóa Static trong Java.

Khái niệm của Static trong Java là gì?

Đầu tiên, ta sẽ tìm hiểu đáp án cho câu hỏi, Static là gì? Về cơ bản, từ khóa Static được dùng để quản lý bộ nhớ một cách có hệ thống hơn. Tuy nhiên, Static không thể quản lý bộ nhớ của đối tượng [hay còn gọi là thể hiện lớp] mà chỉ quản lý bộ nhớ của lớp thôi.

Static có thể được áp dụng với các biến, các phương thức, các khối hoặc các lớp lồng nhau. Chi tiết về cách sử dụng Static như sau:

Tìm hiểu về Static trong Java

  • Biến Static [Static Variables]: Ta có thể thấy rằng, Static dịch ra là Tĩnh. Chính vì vậy, biến Static hay được gọi là biến tĩnh khi ta khai báo chúng.
  • Phước thức Static [Static Methods]: Khi người dùng tiến hành khai báo một phương thức dưới dạng Static thì nó được gọi là phương thức Static.
  • Khối Static [Static Blocks]: Khi muốn khởi tạo các thành viên thuộc nhóm dữ liệu Static, ta sẽ tiến hành sử dụng khối Static.
  • Lớp Static [Static Class]: Người dùng có thể đặt các lớp lồng nhau thành dạng Static. Các lớp lồng nhau này có thể được truy cập mà không cần đến object của các lớp bên ngoài.
  • Import Static: Ta được phép tiến hành Import các Static Member của một lớp hoặc một package vào một lớp khác bằng phương thức sử dụng từ khóa Import với các phiên bản Java từ 5 trở lên. Sau đó, người dùng có thể vận dụng Import Static đó như một thành viên của lớp.

Cấu trúc hoạt động của biến Static trong Java

Biến Static có thể dùng để chỉ thuộc tính chung của một nhóm đối tượng chứ không chỉ một đối tượng riêng lẻ. Ví dụ, ta dùng biến Static để khai báo tên công ty của một nhóm nhân viên hoặc tên trường đại học của một nhóm sinh viên. Trong khu vực class, biến Static chỉ nhận bộ nhớ được một lần duy nhất tại thời điểm class loading.

Biến Static trong Java còn có thể được khai báo đồng thời cùng các từ khóa Static khác. Khi đó, nó được gọi là class variable. Để tiết kiệm bộ nhớ hơn, biến Static được sử dụng như một thuộc tính chung của tất cả các objects [hoặc instances] trong lớp đó. Nó có thể được gọi khi chưa cần tạo đối tượng nào.

Các bước hoạt động của Static trong lớp

Nếu một biến vừa được khai báo Static lại vừa được khai báo Final trong Java thì nó được xem như một hằng số. Khi giải trình một hằng số, người dùng cần viết hoa chữ cái đầu và phân cách bằng dấu [_] khi có nhiều từ.

Giá trị mặc định dùng để khai báo biến Static và non-Static là tương đồng. Cụ thể:

  • Giá trị mặc định của primitive integers [long, int, short, byte] là 0
  • Giá trị mặc định của primitive floating points [double, float] là 0.0
  • Giá trị mặc định của boolean là false
  • Giá trị mặc định của object references là null

Ví dụ về biến Static Class trong Java

Ta có 300 sinh viên trường đại học TMU, college được dùng để chỉ thuộc tính chung của các đối tượng. Khi sử dụng Static, ta sẽ chỉ cần cấp phát bộ nhớ cho tất cả các đối tượng trong 1 lần duy nhất.

// Chương trình Java ví dụ về biến static

class Student{

int id; //instance variable

String name;

static String college =TMU; //static variable

//constructor

Student[int i, String n]{

id = i;

name = n;

}

// Phương thức để hiển thị thông tin sinh viên

void display[]{

System.out.println[id+ +name+ +college];

}

}

// Tạo class khác để thực hiện hiển thị dữ liệu

public class TestStaticVariable1{

public static void main[String args[]]{

Student s1 = new Student[17,Hải];

Student s2 = new Student[18,Doanh];

// Chúng ta có thể thay đổi trường đại học của tất cả sv bằng 1 dòng code

//Student.college=TMU ICT Hà Nội;

s1.display[];

s2.display[];

}

}

Với nội dung như trê, ta thu được kết quả là:

17 Hải TMU

18 Doanh TMU

Ví dụ về Static trong Java

Lưu ý về phương thức Static Java

Đặc điểm của phương thức Static trong Java

Như đã nói ở trên, một phương thức được gọi là Static khi ta khai báo nó với biến Static. Phương thức Static bao gồm một số đặc điểm rất riêng biệt:

  • Phương thức Static thuộc một lớp nhưng không phải đối tượng của lớp.
  • Người dùng có thể gọi phương thức Static mà không cần phải khởi tạo trước một lớp.
  • Biến Static có thể được truy cập bởi phương thức Static để thay đổi giá trị của nó.
  • Phương thức Static không thể gọi được phương thức non-Static, nó chỉ có thể gọi được phương thức dạng khác. Ngoài ra, phương thức Static cũng không thể truy cập được data của phương thức non-Static.
  • Ta không thể dùng phương thức Static với 2 từ khóa this và super.
  • Bản chất của quá trình đè dựa trên hoạt động gán động khi chương trình đang chạy hoặc gán tĩnh tại thời gian biên dịch. Chính vì thế, người dùng không thể ghi đè phương thức trong Java. Phương thức tĩnh không có ràng buộc với thực thể của class nên cũng không thể ghi đè nó.

Đặc điểm của Static trong Java

Trường hợp nên sử dụng phương thức Static

Có những trường hợp riêng để sử dụng phương thức Static. Người dùng nên cân nhắc các yếu tố sao cho phương thức Static phát huy hiệu quả ở mức cao nhất và tránh được rủi ro.

Một trong những trường hợp phổ biến nhất để sử dụng từ khóa Static trong Java cho một phương thức là khi phương thức ấy không bị phụ thuộc vào trạng thái của một đối tượng bất kỳ. Nói dễ hiểu hơn tức là phương thức không cần dùng đến dữ liệu thành viên. Mọi thứ sẽ được truyền đi dưới dạng tham số.

Bạn có thể ứng dụng Static Method như một phương thức tiện ích bởi nó cho phép người dùng truy cập trực tiếp bằng tên lớp mà không cần bất cứ thể hiện nào. Ví dụ phổ biến nhất của trường hợp này chính là lớp java.lang.Math.

Và cuối cùng, người ta cũng sẽ sử dụng phương thức Static trong trường hợp các Design Pattern cần truy cập global như Singleton pattern, Factory pattern

Ví dụ về phương thức Static trong Java

Ví dụ: Website gpcoder.com hiện sở hữu rất nhiều bài viết. Mỗi bài viết cần phải có địa chỉ của website ở cuối. Tất nhiên là các địa chỉ này đều giống nhau và có nhiều lớp cần sử dụng. Để giảm thiểu lưu trữ bộ nhớ và dễ dàng chia sẻ khi sử dụng ở các lớp khác, người dùng nên áp dụng từ khóa Static như sau:

public class UsingStaticExample {

private String subject;

UsingStaticExample [String subject] {

this.subject = subject;

}

public void print[] {

System.out.println[Subject = + subject];

System.out.println[Website = + MyWebsite.WEBSITE];

}

public static void changeWebsite[String website] {

MyWebsite.WEBSITE = website;

}

public static void main[String[] args] {

UsingStaticExample ex1 = new UsingStaticExample[Core Java];

ex1.changeWebsite[abc.com];

ex1.print[];

System.out.println[-];

UsingStaticExample.changeWebsite[//gpcoder.com];

ex1.print[];

}

}

Từ đó, ta có kết quả thu được là:

Subject = Core Java

Website = abc.com

-

Subject = Core Java

Website = //gpcoder.com

Kết luận

Với bài viết trên, Teky đã giúp bạn đọc hiểu thêm một số thông tin cơ bản xung quanh biến và phương thức Static trong Java. Thực ra dùng Static không hề khó nếu bạn nắm rõ khái niệm và cách thức hoạt động của nó. Static hoạt động rất tốt trong trường hợp người dùng muốn tiết kiệm bộ nhớ và giảm tải các quy trình trùng lặp với nhau. Tuy nhiên, hãy cân nhắc các trường hợp nên sử dụng Static như chúng tôi đã gợi ý. Việc quá lạm dụng Static ngược lại sẽ gây tốn thời gian và rắc rối hơn.

Cảm ơn bạn đọc đã theo dõi bài viết về Static trong Java trong Java của chúng tôi. Đừng quên rằng Teky còn rất nhiều bài viết giải mã về lập trình IT rất hấp dẫn.

Tham khảo ngay thêm: Z-index trong CSS là gì? Ưu điểm của chúng là gì?

Tìm hiểu thêm về lập trình tại: //www.youtube.com/c/TekyAcademy

Video liên quan

Chủ Đề