VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test

Java Cơ Bản

Java là gì? Lịch sử Java Các tính năng của Java Cài đặt môi trường Java (cho người mới bắt đầu) Thiết lập PATH cho java Chương trình Hello World JDK, JRE và JVM Biến trong java Các kiểu dữ liệu trong java Ép kiểu (Type casting) Các toán tử trong Java Hệ thống Unicode trong java

Câu Lệnh Điều Khiển

Mệnh đề If-else Mệnh đề Switch-case Vòng lặp For Vòng lặp While Vòng lặp Do-While Break trong java Continue trong java Chương trình java kinh điển

Các Tính Chất Của Java OOPs

Tính đóng gói trong java Tính kế thừa trong java Tính đa hình trong java Nạp chồng phương thức Ghi đè phương thức Overloading vs Overriding

Các Khái Niệm Java OOPs

Tổng quan java OOPs Lớp và đối tượng Package trong java Constructor trong java Từ khóa this trong java Từ khóa super trong java Từ khóa final trong java Từ khóa static trong java Access Modifier trong java Abstract class trong java Interface trong java Abstract vs Interface trong java Lớp Object trong java Object Cloning trong java equals() và hashCode() Array (mảng) trong java Khai báo mảng trong java Duyệt mảng trong java Lớp Wrapper trong java Đệ quy trong java Truyền giá trị và tham chiếu trong java Toán tử instanceof trong java Sử dụng regex trong java

Mô Hình MVC

Mô hình MVC là gì? - Ví dụ login sử dụng mô hình MVC trong Java

Java Programs

Tính giai thừa trong java Check số nguyên tố trong java Dãy số Fibonacci trong java Chuyển đổi hệ cơ số trong java Liệt kê n số nguyên tố đầu tiên trong Java
Java String Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Các Tính Năng Mới Trong Java Java Math Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Từ khóa static trong java


Từ khóa final trong java
Access Modifier trong Java

Từ khóa static trong Java được sử dụng chính để quản lý bộ nhớ. Chúng ta có thể áp dụng từ khóa static với các biến, các phương thức, các khối, các lớp lồng nhau(nested class). Từ khóa static thuộc về lớp chứ không thuộc về instance(thể hiện) của lớp.

Trong java, Static có thể là:

  1. Biến static: Khi bạn khai báo một biến là static, thì biến đó được gọi là biến tĩnh, hay biến static.
  2. Phương thức static: Khi bạn khai báo một phương thức là static, thì phương thức đó gọi là phương thức static.
  3. Khối static: Được sử dụng để khởi tạo thành viên dữ liệu static.

Nội dung chính

  • 1. Biến static trong Java
    • Lợi thế của biến static
    • Chương trình đếm số không sử dụng biến static trong java
    • Chương trình đếm số có sử dụng biến static trong java
  • 2. Phương thức static trong Java
    • Sự hạn chế của phương thức static
  • 3. Khối static trong Java

1. Biến static trong Java

Khi bạn khai báo một biến là static, thì biến đó được gọi là biến tĩnh, hay biến static.

  1. Biến static có thể được sử dụng để tham chiếu thuộc tính chung của tất cả đối tượng (mà không là duy nhất cho mỗi đối tượng), ví dụ như tên công ty của nhân viên, tên trường học của các sinh viên, ...
  2. Biến static lấy bộ nhớ chỉ một lần trong Class Area tại thời gian tải lớp đó.

Lợi thế của biến static

Sử dụng biến static giúp chương trình của bạn sử dụng bộ nhớ hiệu quả hơn (tiết kiệm bộ nhớ).

Vấn đề khi không sử dụng biến static

class Student{  
     int rollno;  
     String name;  
     String college="Bưu Chính Viễn Thông";  
} 

Giả sử có 1000 sinh viên trong trường đại học, bây giờ instance của các dữ liệu thành viên sẽ sự dụng bộ nhớ mỗi khi đối tượng được tạo. Tất cả sinh viên có rollno và name là thuộc tính riêng. Tuy nhiên, college là thuộc tính chung của tất cả đối tượng. Nếu chúng ta tạo nó là static, thì trường này sẽ chỉ sử dụng bộ nhớ một lần để lưu biến này.

Ghi chú: Thuộc tính static trong Java được chia sẻ tới tất cả đối tượng.

Ví dụ về biến static trong java

public class Student8 {
    int rollno;
    String name;
    static String college = "Bưu Chính Viễn Thông";

    Student8(int r, String n) {
        rollno = r;
        name = n;
    }

    void display() {
        System.out.println(rollno + " - " + name + " - " + college);
    }

    public static void main(String args[]) {
        Student8 s1 = new Student8(111, "Thông");
        Student8 s2 = new Student8(222, "Minh");

        s1.display();
        s2.display();
    }
}

Kết quả:

111 - Thông - Bưu Chính Viễn Thông
222 - Minh - Bưu Chính Viễn Thông

Chương trình đếm số không sử dụng biến static trong java

Trong ví dụ dưới đây, chúng ta tạo một biến instance có tên count mà được tăng lên trong constructor. Khi biến instance này lấy bộ nhớ tại thời điểm tạo đối tượng, mỗi đối tượng sẽ có bản sao của biến instance đó, nếu nó được tăng lên, nó sẽ không ảnh hướng đến các đối tượng khác. Vì thế mỗi đối tượng sẽ có giá trị 1 trong biến count.

public class Counter1 {
    int count = 0; // sẽ lấy bộ nhớ khi instance được tạo ra

    Counter1() {
        count++;
        System.out.println(count);
    }

    public static void main(String args[]) {

        Counter1 c1 = new Counter1();
        Counter1 c2 = new Counter1();
        Counter1 c3 = new Counter1();

    }
}

Kết quả:

1
1
1

Chương trình đếm số có sử dụng biến static trong java

Như bạn đã thấy ở trên, biến static sẽ lấy bộ nhớ chỉ một lần, nếu bất cứ đối tượng nào thay đổi giá trị của biến static, nó sẽ vẫn ghi nhớ giá trị của nó.

public class Counter2 {
    static int count = 0; // sẽ lấy bộ nhớ chỉ một lần

    Counter2() {
        count++;
        System.out.println(count);
    }

    public static void main(String args[]) {

        Counter2 c1 = new Counter2();
        Counter2 c2 = new Counter2();
        Counter2 c3 = new Counter2();

    }
}

Kết quả:

1
2
3

2. Phương thức static trong Java

Nếu bạn áp dụng từ khóa static với bất cứ phương thức nào, thì phương thức đó được gọi là phương thức static.

  1. Một phương thức static thuộc lớp chứ không phải đối tượng của lớp.
  2. Một phương thức static gọi mà không cần tạo một instance của một lớp.
  3. Phương thức static có thể truy cập biến static và có thể thay đổi giá trị của nó.

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

public class Student9 {
    int rollno;
    String name;
    static String college = "Bưu Chính Viễn Thông";

    static void change() {
        // Thay đổi thuộc tính static (thuộc tính chung của tất cả các đối tượng)
        college = "Đại Học Công Nghệ";
    }

    Student9(int r, String n) {
        rollno = r;
        name = n;
    }

    void display() {
        System.out.println(rollno + " - " + name + " - " + college);
    }

    public static void main(String args[]) {
        Student9.change();

        Student9 s1 = new Student9(111, "Thông");
        Student9 s2 = new Student9(222, "Minh");
        Student9 s3 = new Student9(333, "Anh");

        s1.display();
        s2.display();
        s3.display();
    }
}

Kết quả:

111 - Thông - Đại Học Công Nghệ
222 - Minh - Đại Học Công Nghệ
333 - Anh - Đại Học Công Nghệ

Sự hạn chế của phương thức static

Có hai hạn chế chính đối với phương thức static. Đó là:

  1. Phương thức static không thể sử dụng biến non-static hoặc gọi trực tiếp phương thức non-static.
  2. Từ khóa this và super không thể được sử dụng trong ngữ cảnh static.

Ví dụ:

class A {
    int a = 40;// non static

    public static void main(String args[]) {
        System.out.println(a);
    }
}

Kết quả:

Compile Time Error

3. Khối static trong Java

  1. Được sử dụng để khởi tạo thành viên dữ liệu static.
  2. Nó được thực thi trước phương thức main tại lúc tải lớp.

Ví dụ về khối static trong Java

public class A2 {
    static {
        System.out.println("Khối static: hello !");
    }

    public static void main(String args[]) {
        System.out.println("Main: hello !");
    }
}

Kết quả:

Khối static: hello !
Main: hello !

Câu hỏi: Tại sao phương thức main trong Java là static?

Bởi vì không cần thiết phải tạo đối tượng để gọi phương thức static. Nếu nó là phương thức non-static, JVM đầu tiên tạo đối tượng và sau đó gọi phương thức main() mà có thể gây ra vấn đề về cấp phát bộ nhớ bộ nhớ phụ.


Câu hỏi: Chúng ta có thể thực thi một chương trình mà không có phương thức main()?

Có, một trong các cách đó là khối static trong phiên bản trước của JDK. Không phải là JDK 1.7

Ví dụ:

public class A3 {
    static {
        System.out.println("static block is invoked");
        System.exit(0);
    }
}

Kết quả: (TH < jdk7)

static block is invoked

Kết quả: (TH >= jdk7)

Error: Main method not found in class A3, please define the main method as:
public static void main(String[] args)

Từ khóa final trong java
Access Modifier trong Java

Bài viết liên quan:

  • Từ khóa this trong java
  • Từ khóa super trong java
  • Từ khóa final trong java
  • Từ khóa static trong java
  • Access Modifier trong Java
  • Tính đóng gói trong java
  • Tính kế thừa trong java
  • Tính đa hình trong java

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml