его ниша как язык программирования систем/производительности
Это - довольно большая ниша! Возможности состоят в том, что, если часть программного обеспечения имеет более чем 10 миллионов пользователей, это записано в C++:
- Windows
- IE
- SQL Server PhotoShop
- Firefox
- Office
- источник AutoDesk
Google Search Engine
В списке ключевых слов Java указано ключевое слово goto
, но оно помечено как "не используется".
Оно было в оригинальной JVM (см. ответ @VitaliiFedorenko), но затем было удалено. Вероятно, его оставили как зарезервированное ключевое слово на случай, если оно будет добавлено в более позднюю версию Java.
Если goto
не было в списке, и оно будет добавлено в язык позже, существующий код, использующий слово goto
в качестве идентификатора (имя переменной, имя метода, и т.д...), сломается. Но поскольку goto
является ключевым словом, такой код даже не будет компилироваться в настоящем, и остается возможность заставить его сделать что-то позже, не ломая существующий код.
См. Следующую ссылку, где показаны все зарезервированные слова java и указаны версии, которые они были добавлены.
http://java.sun.com/docs/books/tutorial/java/ nutandbolts / _keywords.html
goto зарезервирован, хотя в настоящее время он не используется, но никогда не говори никогда :)
Чтобы запретить объявление переменных с одинаковыми именами.
например
int i = 0, goto;
Обратите внимание, что вы можете заменить большинство неопасных применений goto на
return
break
break label
throw внутри try-catch-finally
Таким образом, они могут быть использованы однажды, если разработчики языка почувствуют в этом необходимость.
Кроме того, если программисты из языков, которые имеют эти ключевые слова (например, C, C ++), используют их по ошибке , то компилятор Java может выдать полезное сообщение об ошибке.
Или, может быть, просто остановили программистов, использующих goto:)
Потому что он не поддерживается и зачем вам ключевое слово goto
, которое ничего не делает, или переменная с именем goto
?
Хотя вы можете использовать операторы break label;
и continue label;
, чтобы эффективно выполнять то, что делает goto
. Но я бы не рекомендовал это.
public static void main(String [] args) {
boolean t = true;
first: {
second: {
third: {
System.out.println("Before the break");
if (t) {
break second;
}
System.out.println("Not executed");
}
System.out.println("Not executed - end of second block");
}
System.out.println("End of third block");
}
}
Нет, к счастью, в Java нет goto
.
Ключевое слово goto
только зарезервировано, но не используется (то же самое касается const
).
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
"Ключевые слова const и goto зарезервированы, хотя они не в настоящее время используются. "
Это очень часто считается одной из тех вещей, которые вы не делаете, но, вероятно, было указано как зарезервированное слово, чтобы избежать путаницы для разработчиков.
Они зарезервированы для использования в будущем (см .: Ключевые слова языка Java )
Ключевые слова const и goto зарезервированы, хотя они в настоящее время не используются.
Причину , почему в Java нет оператора goto, можно найти в « Среда языка Java »:
В Java нет оператора goto. Исследования показали, что goto (неправильно) используется чаще, чем просто «потому что он есть». Исключение goto привело к упрощению языка - например, нет правил, касающихся эффектов goto в середине оператора for. Исследования примерно 100 000 строк кода C показали, что примерно 90 процентов операторов goto использовались исключительно для получения эффекта выхода из вложенных циклов. Как упоминалось выше, многоуровневый break и continue устраняют большую часть необходимости в операторах goto.
Ключевое слово существует, но оно не реализовано.
Единственная веская причина для использования goto, о которой я могу подумать, это следующее:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
goto outsideloops; // to break out of both loops
}
}
outsideloops:
В Java вы можете сделать это следующим образом:
loops:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
break loops;
}
}
Нет, goto
не используется в Java, несмотря на то, что это зарезервированное слово. То же верно и для const
. Оба они используются в C ++, вероятно, поэтому они зарезервированы; вероятно, намерение состояло в том, чтобы не сбивать с толку программистов на C ++, переходящих на Java, и, возможно, также сохранить возможность использовать их в более поздних версиях Java.
Как было указано, в Java нет goto
, но ключевое слово было зарезервировано на случай, если Sun захотелось добавить goto
в Java однажды. Они хотели иметь возможность добавлять его, не нарушая слишком много кода, поэтому зарезервировали ключевое слово. Обратите внимание, что в Java 5 они добавили ключевое слово enum
, и это тоже не повлияло на такой объем кода.
Хотя в Java нет goto
, в ней есть некоторые конструкции, которые соответствуют некоторым применениям goto
, а именно возможность break
и continue
с именованными петлями. Кроме того, finally
можно рассматривать как разновидность скрученного goto
.
Нет, goto
не используется, но вы можете определить метки и выйти из цикла до этикетки. Вы можете использовать break
или continue
, за которыми следует метка. Таким образом, вы можете перепрыгнуть более чем на один уровень петли. Взгляните на учебное пособие .