main
không phải là từ khóa trong java. Làm thế nào để JVM biết để thực hiện phương thức main
làm điểm bắt đầu của bất kỳ chương trình nào?JVM sử dụng "Phương pháp chính" để bắt đầu một chương trình Java như thế nào?
Trả lời
main
không cần phải là từ khóa trong java để JVM tìm kiếm nó khi bắt đầu thực thi. Không có xung đột với các phương pháp hay biến số khác cũng được gọi là main
. Đây chỉ đơn giản là cách mà JVM spec được thiết kế. Nó rất có thể được mượn từ ngôn ngữ c.
Tham chiếu Java: keywords, invoking main.
+1 Lưu ý rằng nó không chỉ là tên phương thức quan trọng, nó cũng cần phải là 'static' (có thể' void', quá) và lấy một 'String []' làm các đối số duy nhất của nó. – Thilo
@Thilo: Đúng. Chữ ký phương thức phải là 'public static void main (String [] args)' để được gọi khi khởi động. – Asaph
Quay lại Mac OS 7 cũ (hoặc 8?) Ngày, khi không có dòng lệnh, Mac JVM cũng sẽ cho phép một chính không có arg. Rất may, điều này đã được thống nhất ngay bây giờ (không hoạt động nữa). – Thilo
Nó chỉ được chỉ định trong JLS.
12 Execution
...
Một máy ảo Java khởi động bằng cách tải một lớp được chỉ định và sau đó gọi phương thức
main
trong lớp quy định này. Mục §12.1 vạch ra các bước tải, liên kết và khởi tạo có liên quan đến việc thực thimain
, như giới thiệu về các khái niệm trong chương này. Các phần khác chỉ định chi tiết về tải (§12.2), liên kết (§12.3) và khởi tạo (§12.4)....
12.1 Virtual Machine Start-Up
Một máy ảo Java bắt đầu thực hiện bằng cách gọi phương pháp
main
của một số lớp nhất định, đi qua nó một đối số duy nhất, đó là một mảng các chuỗi. Trong các ví dụ trong đặc điểm kỹ thuật này, lớp đầu tiên này thường được gọi làTest
....
12.1.4 Invoke Test.main
Cuối cùng, sau khi hoàn thành việc khởi tạo cho lớp
Test
(trong đó khác tải do hậu quả, liên kết, và khởi tạo có thể xảy ra), phương phápmain
củaTest
được gọi.Phương thức
main
phải được khai báopublic
,static
vàvoid
. Nó phải chấp nhận một đối số duy nhất là một chuỗi các chuỗi.
Nó gọi phương thức này bằng cách sử dụng phản chiếu. Bạn có thể có một cái nhìn vào nguồn Java Web Start ví dụ
Nó gọi phương thức này bằng cách sử dụng sự phản chiếu. Vì vậy, điều này có nghĩa là tại thời gian chạy nó tìm kiếm các lớp học có phương pháp chính. đúng không? –
Khi chạy tệp jar bạn chỉ định tên lớp bằng phương thức chính hoặc bạn có thể chỉ định lớp chính trong tệp kê khai trong jar. Trong Java Web Bắt đầu bạn chỉ định lớp chính trong tệp jnlp. –
chính về cơ bản là một chỉ số phổ biến của phương pháp trung tâm để Java tự động làm cho nó trở thành phương pháp trung tâm khi được cung cấp với public static
public static void main
Tôi không chắc chắn ý bạn là gì ... nhưng đối với tôi, dường như nó không trả lời được câu hỏi. – icedwater
Về cơ bản tất cả các ngôn ngữ là ít nhiều giống với người tiền nhiệm của nó. Trong ngôn ngữ C nó là chính() mà thực hiện lúc đầu nhưng nó không bắt buộc phải xảy ra tất cả các thời gian. Các chương trình không có phương thức chính cũng có thể được thực thi. Vì vậy, nó chỉ là quy ước mà theo đó phương pháp chính được gọi lúc đầu tiên.
xin vui lòng kiểm tra:
Entry point for Java applications: main(), init(), or run()?
- 1. Điều gì xảy ra khi chương trình java bắt đầu?
- 2. Có thể tồn tại hai phương pháp chính trong một chương trình Java không?
- 3. Làm thế nào để Daemonize một chương trình Java?
- 4. Làm cách nào để bắt đầu chương trình Java của tôi với nhiều hơn một tác nhân java?
- 5. Có thể cho một quá trình java trong một jvm để giết/dừng một quá trình java khác trong jvm?
- 6. Làm thế nào để tìm ra tên lớp gọi của phương pháp bắt đầu một chủ đề sử dụng stacktrace
- 7. Phương pháp chính có cần thiết trong một chương trình Java không?
- 8. gọi phương pháp khác từ phương pháp chính trong java
- 9. Phương pháp riêng và JVM
- 10. chương trình Python bắt đầu
- 11. Bắt đầu ra của chương trình khác như là đầu vào một cách nhanh chóng
- 12. tạo một tập tin batch cho các chương trình để bắt đầu sử dụng độ trễ
- 13. Làm thế nào để sử dụng một phương pháp đối tượng như một hàm callback
- 14. Phương pháp nào được sử dụng để chấm dứt việc thực hiện chương trình Java ở giữa?
- 15. Làm thế nào để thực hiện chương trình một bộ thử nghiệm bằng cách sử dụng JUnit4 theo chương trình?
- 16. Làm thế nào để bắt đầu 2 chương trình simultaniously trong cửa sổ command prompt
- 17. Làm thế nào để thoát khỏi một phương pháp mà không cần thoát khỏi chương trình?
- 18. Làm thế nào để bắt đầu một chương trình với bộ nhớ cache lạnh
- 19. Làm thế nào để vá một chương trình Java?
- 20. Làm cách nào để bắt đầu một ứng dụng JNLP theo chương trình?
- 21. Bảo mật Java EE - Phương pháp nào để sử dụng?
- 22. Bạn sử dụng loại phương pháp nào để làm cho chương trình Cocoa dễ dàng hơn?
- 23. Huffman Tree với tần số cho nhầm lẫn như thế nào để bắt đầu? Java
- 24. Làm thế nào để sử dụng một biến như một tên phương pháp sử dụng đối tượng năng động
- 25. JDI: Cách tạm dừng một ứng dụng Java (JVM) như trong trình gỡ rối
- 26. Khi nhiều chương trình java chạy trên cùng một máy
- 27. Bắt đầu/dừng một ứng dụng web từ chính nó?
- 28. Chạy chương trình java từ một chương trình java khác
- 29. Có phương pháp nào hoạt động giống như đoạn bắt đầu cho kết quả không?
- 30. Làm thế nào để bắt đầu sử dụng WCF/WPF?
Lưu ý rằng nó không phải là một từ khóa trong C/C++ và C# hoặc. Đoán nó chỉ là một truyền thống. –