Chuyển đến nội dung chính

Trong Java,Tại sao phương thức main là public static void?

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.
-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ươngthứ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ý.

Nhận xét

Bài đăng phổ biến từ blog này

Entry Test của FPT

IQ - Kiểm tra tư duy logic (8/20) - GMAT- Kiểm tra khả năng tính toán trong thời gian ngắn (8/20) - Tiếng Anh (18-> 25/50) - Các bài thi chuyên môn - FE (8/20) IQ: lên mạng tìm "IQ test" là ra đầy. + GMAT: Những câu trắc nghiệm tính toán đơn giản kiểu như sau:  1 . Một shop thời trang sale off quần jeans 15 %, quần jeans giá 450 $, người mua đưa 500 $, hỏi cashier trả lại bao nhiêu $ tiền thừa.? 2 . 100 % là 180 , vậy 150 là bao nhiêu %? Tiếng anh: Cỡ như thi TOEIC thôi. Chuyên môn: Mobile thì trắc nghiệm Java. Qúa trình tuyển như sau :v Lần 1: Test IQ, Tiếng Anh( mình làm í ẹ khoảng 50% mà vẫn được) , Java Lân 2: được gọi điện lên :)) + Gioi thiệu bản thân + Họ chỉ hỏi các câu căn bản như: -. OOP: là gì, 4 tính chất, ví dụ, khác nhau giữa interface và abstract - CODE: hầu toàn các bài toán vòng for :)) , cẩn thận mấy câu kế thừa. SQL (distinct, view, function, cursor, store procedure, ...v.v.), nhớ có câu cộng 2 số int không dùng biến đệm hơi khoai haha + Nói ch...

Java: Java Package-Thư viện trong Java

Giới thiệu về Package Các bạn mới học lập trình Java thường không dể ý tới package vì các bạn toàn tạo file .java vào cùng 1 chỗ, không cần sắp xếp, không cần quản lý truy nhập. Nhưng để tăng kỹ năng lập trình với Java, các bạn cần phải tìm hiểu về package trong Java. Các bạn có thể tham khảo định nghĩa sau: Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối. Đây là cách tốt nhất để lưu trữ các lớp gần giống nhau hoặc có cùng một module thành một khối thống nhất – để đáp ứng 1 khối chức năng. Từ đây mình sẽ giới thiệu thêm với các bạn các câu lệnh nhâp khẩu,nó có định dạng như sau : Định dạng :  import javaPackageNameImport;    Nó giống như khai báo thư viện ở các ngôn ngữ lập trình khác.Như vậy,chỉ khi các bạn nhập khẩu chúng,các bạn mới có thể sử dụng thư viện mà chúng cung cấp cho ta. VD :    import java.util.Date;   import java.text.SimpleDateFormat; Lưu ý : -Các câu lệnh nhập khẩu rất nhiều và...

phỏng vấn Embedded C và C++?

Có vài điểm rất nhỏ, các bạn không để ý có thể dẫn đến bất lợi (nếu không muốn nói là rớt) ở vòng hồ sơ hoặc khi đi phỏng vấn. Mình liệt kê rất cụ thể ra những chuyện mình đã thấy qua nhiều lần (người thật, việc thật), hy vọng cho các bạn thêm kinh nghiệm. Lưu ý: Những chuyện này rất chủ quan, có thể chỉ đúng trong môi trường của mình và hoàn toàn không đúng trong môi trường khác. Gửi email CV đến không có Cover Letter, chỉ đính kèm mỗi file PDF là cái CV. CV ghi : tiếng Anh: Trung Bình, C: Trung Bình,... nhưng bên dưới lại ghi ưu điểm_:  là người ham học hỏi... CV bằng tiếng Việt và lại viết sai chính tả tiếng Việt. CV ghi quá nhiều về các hoạt động tình nguyện, hiến máu, blah blah... nhưng phần kĩ thuật lại có 3 dòng thôi. Mặc đồ thể dục của trường và đi dép lê đến PV. Đến muộn PV (em ấy bảo bị kẹt xe). Đưa yêu cầu, em ấy không hiểu đề nhưng ngại không dám hỏi lại, dẫn đến viết hoàn toàn sai. Hỏi ngay câu căn bản đầu tiên em ấy đã nói không biết và  đổ do trường kh...