Lỗi không tìm thấy hàm main trong java năm 2024

Phương thức main trong Java là một trong những phương thức đầu tiên mà người học Java tiếp cận khi bắt đầu học ngôn ngữ lập trình Java.Chắc rằng có rất nhiều người đã ít nhất một lần thắc mắt rằng vì sao phương thức main trong Java lại là public static void.Hầu hết những người học về C hay C++ thì thường quen với kiểu phương thức main đơn giản hơn theo kiểu int void main().Nhưng trong ngôn ngữ lập trình Java thì phương thức main hơi khác so với C và C++.Bài viết hôm nay mình sẽ giải thích chi tiết vì sao phương thức main trong Java là public static void.

Show

-Phương thức main trong Java là gì?

Trong chương trình Java,quá trình thực thi bắt đầu từ hàm main.JVM(Java Virtual Machine) sẽ tìm kiếm đến public static void main(String [] args) để thực hiện.Nếu không tìm thấy thì nó sẽ ném ra một ngoại lệ là NoSuchMethodError:main.Phương thức main phải viết theo đúng cú pháp đã quy định – đó dường như là điều bắt buộc mà những người học ngôn ngữ Java buộc phải tuân theo.Tuy nhiêu với những phiên bản Java 1.5 trở lên thì cũng có một cách khác để khai báo phương thức main là public static void main(String … args).

-Tại sao phương thức main lại là static?

Khi phương thức main là static thì máy ảo (JVM) sẽ gọi nó mà không cần tạo bất kì một đối tượng (instance) nào.

Nếu phương thức main không khai báo là static thì JVM bắt buộc phải tạo ra một instance của lớp main,mặt khác hàm dựng (constructor) của lớp main cũng có thể overloaded và có thể có nhiều tham số truyền vào nên máy ảo sẽ không nhận biết được phiên bản nào cần thiết để gọi.Hay nói cách khác là sẽ gây ra sự nhập nhằng cho máy ảo.

Trong Java thì kiểu dữ liệu tham chiếu (reference) thì phải yêu cầu đối tượng đó phải được tạo trước khi sử dụng,nhưng với phương thức tỉnh(static) thì điều đó là không cần vì dữ liệu sẽ được xữ lý vào trong một vùng nhớ riêng bên trong JVM gọi là context,nó được tạo khi một lớp được xử lý.Và khi hàm main là static thì nó sẽ xử lý bên trong JVM context và sẵn sàng để thực thi.

-Tại sao phương thức main lại là public?

Java cung cấp nhiều kiểu định danh truy cập (access modifier) như private,default,protected,public.Bất kì phương thức hay biến nào được khai báo là public thì nó có thể truy cập từ bên ngoài lớp.Chính vì thế,phương thức main là public thì JVM dể dàng truy cập và thực thi nó.

-Tại sao phương thức main là void?

Vì phương thức main trong Java không cho phép trả về bất kì giá trị nào (phương thức void thì không có giá trị trả về ).

Kết luận (Summary):

1.Hàm main phải declared ( khai báo ) public static void nếu không sẽ không chạy được chương trình Java.

2.JVM sẽ ném lỗi NoSuchMethodException:main nếu nó không tìm thấy hàm main đúng định dạng trong chương trình.Nếu bạn chạy chương trình HelloWord bạn sẽ tìm thấy public static void main(String [] args) bên trong file HelloWord.class.

3.Việc thực thi một chương trình trong Java bắt đầu từ phương thức main.

4.Phương thức main được chạy trong một thread đặc biệt là main thread.

5.Khi bạn thấy lỗi Exception in Thread main:Java.lang.NullPointerException thì lỗi này được ném từ main thread.

6.Bạn có thể khai báo phương thức main bằng cú pháp là public static void main(String … args).

7.Phương thức main cũng có thể overloaded như bất kì phương thức nào khác trong Java nhưng máy ảo (JVM) sẽ gọi phương thức main theo đúng cú pháp như được chỉ định ở trên.

8.Khối static được thực thi thậm chí trước khi JVM gọi phương thức main.Nó được thực thi khi một lớp được xử lý.

Tại sao hàm main là public: Java xác định rằng hàm hoặc biến nào được khai báo là public thì có thể truy xuất từ bên ngoài lớp đó. Vì hàm main là public nên JVM dễ dàng để truy xuất vào và thực thi nó.

Ý nghĩa của phương thức này là khi ta dùng lệnh java gọi đến lớp nào đó, Java VM sẽ cố gắng tìm phương thức main trong lớp. Quay lại những bài đầu tiên, ta dùng CMD gõ lệnh như sau:

Lỗi không tìm thấy hàm main trong java năm 2024

Như ta viết java Helloworld thì Java VM sẽ tìm phương thức main trong lớp HelloWorld để chạy chương trình. Nếu ta muốn viết main trong lớp khác cũng tương tự.

Ý nghĩa từng cú pháp của phương thức Main:

  • public: Ta phải để quyền truy cập ở dạng public để JRE ở bên ngoài có thể truy cập được phương thức để thực thi. Nếu ta không có từ khóa public thì chương trình không thể tìm được như sau:

Lỗi không tìm thấy hàm main trong java năm 2024

  • static: Khi JRE bắt đầu, chưa có đối tượng nào được khởi tạo. Vì vậy ta nên để phương thức ở dạng static để JVM có thể load class vào bộ nhớ và có thể gọi phương thức. Nếu không có static thì có lỗi như sau:

Lỗi không tìm thấy hàm main trong java năm 2024

  • void: phương thức main bắt buộc là void, khi bạn thử return giá trị khác thì Eclipse sẽ cảnh báo:

Lỗi không tìm thấy hàm main trong java năm 2024

  • String[] args: Đây là những tham số mà người dùng truyền vào sau tên lớp. Mặc định những giá trị người dùng sẽ nằm trong một mảng kiểu String tên args. Ta sẽ thử in ra như sau:

public static void main(String[] args) { // TODO Auto-generated method stub for (String arg : args) {

System.out.println(arg);  
} }

Lỗi không tìm thấy hàm main trong java năm 2024

Nếu dùng Eclipse ta sẽ thêm các tham số như sau:

Lỗi không tìm thấy hàm main trong java năm 2024

Lỗi không tìm thấy hàm main trong java năm 2024

Lỗi không tìm thấy hàm main trong java năm 2024


Kết

Như vậy chúng ta đã tìm hiểu phương thức main trong JAVA

Ở bài sau, Kteam sẽ giới thiệu đến bạn về TRY CATCH TRONG JAVA

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Phương thức main trong Java dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Lỗi không tìm thấy hàm main trong java năm 2024


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.