Есть ли в Java оператор goto?

его ниша как язык программирования систем/производительности

Это - довольно большая ниша! Возможности состоят в том, что, если часть программного обеспечения имеет более чем 10 миллионов пользователей, это записано в C++:

  • Windows
  • IE
  • SQL Server PhotoShop
  • Firefox
  • Office
  • источник AutoDesk

Google Search Engine

  • MySQL : http://www.research.att.com/~bs/applications.html

    252
    задан ROMANIA_engineer 14 May 2015 в 12:30
    поделиться

    14 ответов

    В списке ключевых слов Java указано ключевое слово goto, но оно помечено как "не используется".

    Оно было в оригинальной JVM (см. ответ @VitaliiFedorenko), но затем было удалено. Вероятно, его оставили как зарезервированное ключевое слово на случай, если оно будет добавлено в более позднюю версию Java.

    Если goto не было в списке, и оно будет добавлено в язык позже, существующий код, использующий слово goto в качестве идентификатора (имя переменной, имя метода, и т.д...), сломается. Но поскольку goto является ключевым словом, такой код даже не будет компилироваться в настоящем, и остается возможность заставить его сделать что-то позже, не ломая существующий код.

    193
    ответ дан 23 November 2019 в 02:51
    поделиться

    См. Следующую ссылку, где показаны все зарезервированные слова java и указаны версии, которые они были добавлены.

    http://java.sun.com/docs/books/tutorial/java/ nutandbolts / _keywords.html

    goto зарезервирован, хотя в настоящее время он не используется, но никогда не говори никогда :)

    1
    ответ дан 23 November 2019 в 02:51
    поделиться

    Чтобы запретить объявление переменных с одинаковыми именами.

    например int i = 0, goto;

    1
    ответ дан 23 November 2019 в 02:51
    поделиться

    Обратите внимание, что вы можете заменить большинство неопасных применений goto на

    • return

    • break

    • break label

    • throw внутри try-catch-finally

    3
    ответ дан 23 November 2019 в 02:51
    поделиться

    Таким образом, они могут быть использованы однажды, если разработчики языка почувствуют в этом необходимость.

    Кроме того, если программисты из языков, которые имеют эти ключевые слова (например, C, C ++), используют их по ошибке , то компилятор Java может выдать полезное сообщение об ошибке.

    Или, может быть, просто остановили программистов, использующих goto:)

    29
    ответ дан 23 November 2019 в 02:51
    поделиться

    Потому что он не поддерживается и зачем вам ключевое слово 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");
         }
    }
    
    8
    ответ дан 23 November 2019 в 02:51
    поделиться

    Нет, к счастью, в Java нет goto .

    Ключевое слово goto только зарезервировано, но не используется (то же самое касается const ).

    9
    ответ дан 23 November 2019 в 02:51
    поделиться

    http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html

    "Ключевые слова const и goto зарезервированы, хотя они не в настоящее время используются. "

    43
    ответ дан 23 November 2019 в 02:51
    поделиться

    Это очень часто считается одной из тех вещей, которые вы не делаете, но, вероятно, было указано как зарезервированное слово, чтобы избежать путаницы для разработчиков.

    1
    ответ дан 23 November 2019 в 02:51
    поделиться

    Они зарезервированы для использования в будущем (см .: Ключевые слова языка Java )

    Ключевые слова const и goto зарезервированы, хотя они в настоящее время не используются.

    Причину , почему в Java нет оператора goto, можно найти в « Среда языка Java »:

    В Java нет оператора goto. Исследования показали, что goto (неправильно) используется чаще, чем просто «потому что он есть». Исключение goto привело к упрощению языка - например, нет правил, касающихся эффектов goto в середине оператора for. Исследования примерно 100 000 строк кода C показали, что примерно 90 процентов операторов goto использовались исключительно для получения эффекта выхода из вложенных циклов. Как упоминалось выше, многоуровневый break и continue устраняют большую часть необходимости в операторах goto.

    19
    ответ дан 23 November 2019 в 02:51
    поделиться

    Ключевое слово существует, но оно не реализовано.

    Единственная веская причина для использования 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;
        }
    }
    
    146
    ответ дан 23 November 2019 в 02:51
    поделиться

    Нет, goto не используется в Java, несмотря на то, что это зарезервированное слово. То же верно и для const . Оба они используются в C ++, вероятно, поэтому они зарезервированы; вероятно, намерение состояло в том, чтобы не сбивать с толку программистов на C ++, переходящих на Java, и, возможно, также сохранить возможность использовать их в более поздних версиях Java.

    7
    ответ дан 23 November 2019 в 02:51
    поделиться

    Как было указано, в Java нет goto , но ключевое слово было зарезервировано на случай, если Sun захотелось добавить goto в Java однажды. Они хотели иметь возможность добавлять его, не нарушая слишком много кода, поэтому зарезервировали ключевое слово. Обратите внимание, что в Java 5 они добавили ключевое слово enum , и это тоже не повлияло на такой объем кода.

    Хотя в Java нет goto , в ней есть некоторые конструкции, которые соответствуют некоторым применениям goto , а именно возможность break и continue с именованными петлями. Кроме того, finally можно рассматривать как разновидность скрученного goto .

    2
    ответ дан 23 November 2019 в 02:51
    поделиться

    Нет, goto не используется, но вы можете определить метки и выйти из цикла до этикетки. Вы можете использовать break или continue , за которыми следует метка. Таким образом, вы можете перепрыгнуть более чем на один уровень петли. Взгляните на учебное пособие .

    10
    ответ дан 23 November 2019 в 02:51
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: