Важливо розуміти, що gotoконструкція є залишком від днів, коли програмісти запрограмовані на машинному коді та мові збірки. Оскільки ці мови є настільки базовими (як, наприклад, кожна інструкція виконує лише одне ), потік управління програмою виконується повністю з gotoоператорами (але в мові збірки вони називаються вказівками щодо стрибка або гілки ).
Тепер, хоча мова С досить низького рівня, її можна вважати дуже складною мовою складання - кожен вислів і функція в С легко можна розділити на інструкції з мови монтажу. Хоча C не є основним мовою для програмування комп’ютерів у наш час, він все ще широко використовується у додатках низького рівня, таких як вбудовані системи. Оскільки функція C настільки віддзеркалює функцію мови складання, вона має сенс gotoлише включити її в C.
Зрозуміло, що Java - це еволюція C / C ++. Java має багато функцій від C, але абстрагує набагато більше деталей, а тому просто пишеться по-іншому. Java є дуже високим рівнем мови, тому просто не потрібно мати функції низького рівня, наприклад, gotoколи більш високі рівні конструюють, як функції, для кожної, і в той час як циклі виконують потік управління програмою. Уявіть, якби ви були в одній функції та робили gotoмітку для іншої функції. Що буде, коли інша функція повернеться? Ця думка абсурдна.
Це не обов'язково відповідає тому, чому Java включає gotoзаяву, але вона не дозволить її складати, але важливо знати, чому gotoвона коли-небудь використовувалася, в додатках нижчого рівня, і чому це просто не має сенсу бути використовується на Java.