2012-03-03 49 views
8

Tôi vô tình viết một tuyên bố java với hai dấu chấm phẩy ở cuối. Trình biên dịch java không hiển thị bất kỳ lỗi nào và nó chạy.Tại sao Java không hiển thị lỗi cho dấu chấm phẩy kép ở cuối câu lệnh?

Code:

System.out.println("Length after delete the text is "+name.length());; 

Đối với mục đích học tập tôi đã cố gắng bổ sung thêm nhân vật khác nhau sau dấu chấm phẩy, và trình biên dịch java đã chỉ ra các lỗi thời gian biên dịch như Lỗi cú pháp trên thẻ ")", xóa thẻ này.

Tuyên bố này:

System.out.println("Length after delete the text is "+name.length());) 

Tại sao java điều trị các dấu chấm phẩy và các nhân vật khác như khác nhau?

Trả lời

28

Vì dấu chấm phẩy kép không được coi là dấu chấm phẩy kép mà là dấu chấm phẩy cộng với một câu lệnh trống. Và một tuyên bố trống rỗng, không có gì, không phải là một lỗi.

+3

+1, Chính xác, nó rất giống với viết '{} {} {} {} (niềng răng tôi có nghĩa) 'bên trong mã của bạn bất cứ nơi nào. –

+1

Cảm ơn tôi đã xóa ngay bây giờ. điều tôi một số điểm liên quan như câu trả lời của bạn có nghĩa là chúng ta sử dụng dấu chấm phẩy để kết thúc báo cáo kết quả Nhưng tôi không biết dấu chấm phẩy thứ hai là một nhà điều hành có sản phẩm nào. –

+2

Thực ra, nó là một câu lệnh ** trống **. Không có gì giống như một biểu hiện trống rỗng trong Java. –

1

; là chính nó là toán tử trống, vì vậy bạn có hai toán tử có hiệu quả trong trường hợp gốc.

+0

Cảm ơn tôi đã xóa ngay bây giờ.điều tôi một số điểm liên quan như câu trả lời của bạn có nghĩa là chúng ta sử dụng dấu chấm phẩy để kết thúc báo cáo kết quả Nhưng tôi không biết dấu chấm phẩy thứ hai là một nhà điều hành có sản phẩm nào. –

+0

+1, để biết thông tin này. –

1

Dấu chấm phẩy kết thúc câu.

System.out.println("Length after delete the text is "+name.length());; 

Dấu chấm phẩy thứ hai có nghĩa là câu trống.

System.out.println("Length after delete the text is "+name.length());) 

Sai vì bạn đang cố hoàn thành câu chưa hoàn thành.

10

Theo tiêu chuẩn ngôn ngữ Java, dấu chấm phẩy thứ hai là một empty statement.

An empty statement does nothing.

EmptyStatement: 
    ; 

Execution of an empty statement always completes normally.

+2

+1 để tham chiếu JLS –

0

Bởi vì nó không phải là lỗi? Tại sao bạn hỏi về java? Đây là trong hầu hết các ngôn ngữ với cú pháp tương tự ...

14

Như đã nói bởi câu trả lời khác, thường là dấu chấm phẩy thứ hai được hiểu như là một tuyên bố trống rỗng, đó là cho phép có bao giờ một tuyên bố được phép.

Trên thực tế, có những trường hợp một dấu chấm phẩy đôi không tạo ra một lỗi:

public int method() { 
    return 1;; 
} 

Khi trình biên dịch xác định rằng một vị trí không thể truy cập (và điều này được xác định chính xác trong JLS, nhưng bao gồm các địa điểm trực tiếp sau một return, break, continuethrow), không có tuyên bố được phép ở đó, thậm chí không phải là một một sản phẩm nào.

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