2014-11-03 15 views
7

tôi thấy mã này trong một trong những kỳ thi chứng chỉ:phương pháp chính là cuối cùng trong java

public class SimpleClass 
{ 
    int num; 
    final static void main(final String args[]) 
    { 
     String s1="new"; 
     String s2="String"; 
     String s3="Creation"; 
     System.out.println(s1+s2+s3); 
    } 
} 

Tôi biết rằng phương pháp cuối cùng là những người mà không phải là có thể ghi đè lên. Tôi cũng biết rằng nếu chữ ký thông thường của phương pháp main bị thay đổi, nó sẽ được xử lý như bất kỳ phương pháp thông thường nào khác của JVM, và không phải là main().

Tuy nhiên, các tùy chọn dành cho tôi là:

1> Code won't compile 
2> Code will throw an exception 
3> will print newStringCreation. 

Nó không thể chạy chương trình này trên IDE Eclipse. Bất cứ ai có thể giải thích những gì nên được câu trả lời và tại sao?

Ok hãy để tôi đặt câu hỏi của tôi như thế này - Khi tôi thực hiện chương trình của mình, điều gì sẽ xảy ra? Tôi nên chọn tùy chọn nào trong số 3 tùy chọn ở trên?

+1

Câu hỏi khó chịu. 'final' không quan trọng. Nhưng 'main' cũng không công khai, điều đó sẽ làm tôi lo lắng. – Thilo

+0

Có, mã sẽ biên dịch, nó sẽ không chạy. – Davio

+3

Vâng, xác định "chạy"; nếu điều này có nghĩa là bạn khởi chạy nó bằng 'java SimpleClass' thì nó sẽ ném một ngoại lệ, vì như bạn đã đề cập đến chính mình, trên thực tế, không có' main() 'để chạy. Ngoài ra, bạn không thể ghi đè các phương thức 'static' theo bất kỳ cách nào, hình dạng hoặc biểu mẫu, vì vậy tuyên bố chúng' final' là thừa. – fge

Trả lời

5

Bộ luật sẽ biên dịch mà không cần bất kỳ vấn đề nhưng nó sẽ ném một ngoại lệ thời gian chạy nói "phương pháp chính không công khai ". Phương thức chính phải được công khai bởi vì nó phải được gọi bởi JVM nằm ngoài phạm vi của gói và do đó sẽ cần truy cập specifier-public. Nếu bạn không thể chạy nó trong nhật thực, hãy thử phương pháp cổ xưa để lưu tệp trong một notepad với filename.java. Đi đến cmd và đến vị trí tập tin .. Nếu trên máy tính để bàn, sử dụng máy tính để bàn cd! Sử dụng các lệnh sau để chạy tệp-

javac filename.java 

java filename 

Bạn sẽ thấy ngoại lệ thời gian chạy yêu cầu mà tôi đã đề cập ở trên.

+0

Tôi đồng ý với Stefan về câu trả lời của ông, tôi không thể đưa ra một mô tả chi tiết làm bình luận để trả lời riêng. @Gpar, hãy thử phương pháp này, bạn có thể tìm thấy những gì bạn đang tìm kiếm :) – hchawla

+0

Cảm ơn @hchawla, tôi đã thử đề xuất của bạn, nhưng trong cmd có lỗi gọi là "javac không được công nhận là lệnh nội bộ hoặc bên ngoài". Vui lòng cho tôi biết tôi nên làm gì tiếp theo? – Gpar

+0

Bạn có trong cùng một thư mục trong cmd nơi tệp được, khi bạn thực thi nhận xét javac không? – hchawla

8

final static void main sẽ không chạy, vì chính không được công khai.

public final static void main sẽ hoạt động.

Ít nhất đó là hành vi trên IDE Eclipse của tôi.

4

Có thể truy cập phương thức main từ bên ngoài. Do đó, trong trường hợp của bạn, ứng dụng sẽ biên dịch nhưng thực thi một lệnh trong thời gian chạy.

+1

Nếu nó ném một ngoại lệ hơn, loại ngoại lệ nó có thể là gì? Xin lỗi tôi không thể thực hiện chương trình vì nó nằm trên IDE Eclipse. – Gpar

0

Bạn có phương pháp chính nhưng vì trình sửa đổi là JVM cuối cùng sẽ không thể chạy phương thức chính của chương trình.Bạn sẽ không thấy bất kỳ lỗi biên dịch nào.

Bạn có thể chạy các chương trình trong nhật thực khi bạn thực hiện thay đổi sửa đổi của thức để công

+0

Phương pháp chính có thể là cuối cùng. Nó phải là trận chung kết công khai. – Reetika

Các vấn đề liên quan