Почему в Java есть метки, но нету оператора goto?
Оператор goto может совершить переход в любую точку программы, в то время как оператор break ваша_метка; может быть использована для быстрого выхода из двух и более циклов. Именно из-за этого использовать метку с оператором break вы можете в циклах, а не везде, в отличие goto. Насколько мне известно, использование метки не является правилом хорошего тона в Java и скорее всего код можно рефакторить так, чтобы у вас не было кучи вложенностей циклов.
с метками тоже ничего нормального. Не надо это все использовать просто потому что с ними нереально разобраться как работает код