Условный оператор "switch"

В отличие от оператора if / if ... else, у оператора switch может быть сразу много ветвей. Он работает с типами byte, short, char, и int. Также поддерживает перечисляемые типы (Enum Types), класс String и некоторые классы, являющиеся обертками над типами данных: Character, Byte, Short и Integer.

public class SwitchExample {
    public static void main(String[] args) {
        int a = 10;

        switch (a) {
            case 1:
                System.out.println("One");
                break;

            case 2:
                System.out.println("Two");
                break;

            case 3:
                System.out.println("Three");
                break;

            default:
                System.out.println("Out of range");
                break;
        }
    }
}

Вопрос 1.

Чем принципиально отличается оператор switch от if? Когда целесообразно использовать switch, а когда if?

Вопрос 2.

Почему switch будет работать быстрее, чем набор if ... else if?

Вопрос 3.

Какие ограничения делают невозможным использование switch в определенных условиях и вынуждают использовать if ... else if?

Вопрос 4.

Почему нужно ставить break в конце каждого блока case?

Last updated