# Условный оператор "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**?
