2012-03-03 1 views
8

Я случайно написал инструкцию java с двумя точками с запятой в конце. Компилятор java не показывает никаких ошибок и работает.Почему Java не показывает ошибку для двойной точки с запятой в конце инструкции?

Код:

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

Для целей обучения я пытался добавить различные символы после запятой, и Java компилятор показал ошибку во время компиляции, как Синтаксис ошибки на маркер «)», удалите этот маркер.

Это заявление:

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

Почему Java рассматривать точку с запятой и другие символы, как по-другому?

ответ

28

Потому что точка с запятой не считается двойной точкой с запятой, а точкой с запятой плюс пустой оператор. И пустой оператор, который ничего не делает, не является ошибкой.

+3

+1, точно, это очень похоже на запись '{} {} {} {} (скобки я имею в виду)' внутри вашего кода где угодно. –

+1

Спасибо, что я очищен сейчас. Я думаю, что некоторые связанные моменты, как ваш ответ, мы используем точку с запятой, чтобы закончить утверждение. Но я не знал, что вторая точка с запятой - пустой оператор. –

+2

На самом деле это пустой ** оператор **. В Java нет ничего подобного пустому выражению. –

1

; сам по себе является пустым оператором, поэтому у вас фактически есть два оператора в исходном корпусе.

+0

Спасибо, я очистился сейчас.Я думаю, что некоторые связанные моменты, как ваш ответ, мы используем точку с запятой, чтобы закончить утверждение. Но я не знал, что вторая точка с запятой - пустой оператор. –

+0

+1, для этой информации. –

1

Точка с запятой заканчивается предложением.

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

Вторая точка с запятой означает, что предложение пуст.

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

Неправильно, потому что вы пытаетесь завершить незавершенное предложение.

10

В соответствии со стандартом языка Java вторая точка с запятой - empty statement.

An empty statement does nothing.

EmptyStatement: 
    ; 

Execution of an empty statement always completes normally.

+2

+1 для ссылки на JLS –

0

Потому что это не ошибка? Почему вы спрашиваете о java? Это относится к большинству языков с аналогичным синтаксисом ...

14

Как сказано в других ответах, обычно вторая точка с запятой интерпретируется как пустое утверждение, которое допустимо там, где допустимо утверждение.

На самом деле, существует случаи, когда двойная точка с запятой действительно производит ошибку:

public int method() { 
    return 1;; 
} 

Когда компилятор определяет, что местоположение не доступно (и это определенно точно в JLS, но включает в себя места напрямую после return, break, continue и throw), никакое заявление не допускается там, даже пустое.