Оператор варианта выполняется так. Все константные выражения вычисляются заранее, на этапе компиляции, и должны иметь отличные друг от друга значения. Сначала вычисляется
Если же ни одна константа не равна значению
Таким образом, константы в вариантах case играют роль только меток, точек входа в один из вариантов, а далее выполняются все оставшиеся варианты в порядке их записи.
После выполнения одного варианта оператор switch продолжает выполнять все оставшиеся варианты.
Чаще всего необходимо "пройти" только одну ветвь операторов. В таком случае используется оператор break, сразу же прекращающий выполнение оператора switch.
С другой стороны, может понадобиться выполнить один и тот же оператор в разных ветвях case. В этом случае ставим несколько меток case подряд. Вот простой пример.
switch (dayOfWeek){
case 1: case 2: case 3: case 4: case 5:
System.out.println("Рабочий день"); break; case 6: case 7:
System.out.println("Выходной день"); break; default:
System.out.println("Нeправильно задан день недели");
}
Если дни недели заданы строковыми константами, то предыдущий оператор можно записать так:
switch (dayOfWeek){
case "Mon": case "Tue": case "Wed": case "Thu": case "Fri": System.out.println("Рабочий день"); break; case "Sat": case "Sun":
System.out.println("Выходной день"); break; default:
System.out.println("Нeправильно задан день недели");
}
Не забывайте завершать варианты оператором break, если нужно выполнить только один вариант.
Массивы
Как всегда в программировании,
Массивы в языке Java относятся к ссылочным типам и описываются своеобразно, но характерно для ссылочных типов. Описание производится в три этапа.
Первый этап —
double[] a, b;
Здесь определены две переменные — ссылки a и b на массивы типа double. Можно поставить квадратные скобки и непосредственно после имени. Это удобно делать, если массив объявляется среди определений обычных переменных:
int i = 0, ar[], k = -1;
Здесь определены две переменные целого типа i и k и объявлена ссылка на целочисленный массив ar.
Второй этап —
Например,
a = new double[5]; b = new double[100]; ar = new int[50];
При этом все элементы массива получают нулевые значения.
Индексы массивов всегда начинаются с 0. Массив a состоит из пяти переменных: a[0], a[1] ... a[4] . Элемента a[5] в массиве нет. Индексы можно задавать любыми целочисленными выражениями, кроме типа long, например a[i+j], a[i%5], a[++i]. Исполняющая система Java следит за тем, чтобы значения этих выражений не выходили за границы длины массива. Интерпретатор Java в таком случае прекратит выполнение программы и выведет на консоль сообщение о выходе индекса массива за границы его определения.
Третий этап —
a[0] = 0.01; a[1] = -3.4; a[2] = 2.89; a[3] = 4.5; a[4] = -6.7; for (int i = 0; i < 100; i++) b[i] = 1.0 / i; for (int i = 0; i < 50; i++) ar[i] = 2 * i + 1;
Первые два этапа можно совместить:
double[] a = new double[5], b = new double[100]; int i = 0, ar[] = new int[50], k = -1;
Можно сразу задать и начальные значения, записав их в фигурных скобках через запятую в виде констант или константных выражений. При этом даже необязательно указывать количество элементов массива, оно будет равно количеству начальных значений:
double[] a = {0.01, -3.4, 2.89, 4.5, -6.7};
Можно совместить второй и третий этап:
a = new double[] {0.1, 0.2, -0.3, 0.45, -0.02};
Можно даже создать безымянный массив, сразу же используя результат операции new, например так: