- •Логические операции
- •Операции над целыми типами
- •Арифметические операции
- •Операции сравнения
- •Операции присваивания
- •Приоритет операций
- •1. Использование массивов
- •2. Управление выполнением программы
- •2.1. Условные операторы if-else
- •If (логическое выражение) оператор1; [ else оператор2;]
- •2.2. Оператор break
- •2.3. Оператор switch
- •2.4. Оператор return
- •2.5. Циклы
- •2.5.1. Оператор цикла while
- •2.5.2. Оператор цикла do-while
- •2.5.3. Оператор цикла for
- •2.6. Оператор запятая
- •2.7. Оператор continue
- •3. Классы
- •3.1. Переменные представителей (instance variables)
- •Создание объекта класса
- •3.3. Объявление методов
- •Вызов метода
- •Скрытие переменных представителей
- •3.6. Конструкторы
- •3.7. Совмещение методов
- •3.8. Ссылка this в конструкторах
- •3.9. Наследование классов
- •3.10. Ссылка super
- •3.11. Замещение методов
- •3.12. Динамическое назначение методов
- •3.13. Директива final
- •3.14. Метод Finalize
- •3.15. Директива static
- •3.16. Директива abstract
- •4. Работа с файлами
- •Файловые потоки
- •Работа с файлами и каталогами при помощи класса File
- •Создание объекта класса File
- •4.7.2. Определение атрибутов файлов и каталогов
2. Управление выполнением программы
2.1. Условные операторы if-else
В обобщенной форме этот оператор записывается следующим образом:
If (логическое выражение) оператор1; [ else оператор2;]
Раздел else необязателен. На месте «оператор1» или «оператор2» может стоять составной оператор, заключенный в фигурные скобки. «Логическое выражение» — это любое выражение, возвращающее значение типа boolean.
Например,
int x;
if (x > 0) {
ProcessData();
x+= n;
} else
waitForMoreData();
Ниже приведена полная программа, в которой для определения, к какому времени года относится тот или иной месяц, используются операторы if-else.
class A
{
public static void main(String args[])
{
int month = 4;
String season ="зима";
if (month == 12 || month == 1 || month == 2) {
season = "зима";
} else if (month ==3 || month == 4 || month == 5) {
season = "весна";
} else if (month == 6 || month == 7 || month == 8) {
season = "лето";
} else if (month == 9 || month == 10 || month == 11) {
season = "осень";
}
System.out.println( "Сейчас " + season + ".");
}
}
После выполнения программы вы должны получить следующий результат: Сейчас весна.
2.2. Оператор break
Этот оператор прекращает выполнение текущего блока и передает управление оператору, следующему за данным блоком. Для именования блоков в языке Java могут использоваться метки. Оператор break при работе с циклами и в операторах switch может использоваться без метки. В таком случае подразумевается выход из текущего блока. Можно использовать оператор break только для перехода за один из текущих вложенных блоков.
Например, в следующей программе имеется три вложенных блока, и у каждого своя уникальная метка. Оператор break, стоящий во внутреннем блоке, вызывает переход на оператор, следующий за блоком b. При этом пропускаются два оператора println.
2.3. Оператор switch
Оператор switch обеспечивает способ переключения между различными частями программного кода в зависимости от значения одной переменной или выражения. Общая форма этого оператора следующая:
switch ( выражение ) {
case значение 1:
break;
case значение 2:
break;
case значение n:
break;
default:
}
Результатом вычисления «выражения» может быть значение любого простого типа, при этом каждое из значений, указанных в операторах case, должно быть совместимо по типу с выражением в операторе switch. Все эти значения должны быть уникальными литералами. Если же вы укажете в двух операторах case одинаковые значения, тогда будет ошибка.
Если же значению выражения не соответствует ни один из операторов case, управление передается коду, расположенному после ключевого слова default. Отметим, что оператор default необязателен. В случае, когда ни один из операторов case не соответствует значению выражения и в switch отсутствует оператор default, выполнение программы продолжается с
оператора, следующего за оператором switch.
Внутри оператора switch (а также внутри циклических конструкций) break без метки приводит к передаче управления на код, стоящий после оператора switch. Если break отсутствует, после текущего раздела case будет выполняться следующий. Иногда бывает удобно иметь в операторе switch несколько смежных разделов case, не разделенных оператором break.
class SwitchSeason {
public static void main(String args[]) {
int month = 4;
String season;
switch (month) {
case 12:
case 1:
case 2:
season = "Зима";
break;
case 3:
case 4:
case 5:
season = "Весна";
break;
case 6:
case 7:
case 8:
season = "Лето";
break;
case 9:
case 10:
case 11:
season = "Осень";
break;
default:
season = "Неправильный номер месяца";
}
System.out.println("Апрель - это " + season + ".");
}
}
Ниже приведен пример, где оператор switch используется для передачи управления в соответствии с различными кодами символов во входной строке.
Программа подсчитывает число строк, слов и символов в текстовой строке.
class WordCount {
// Задаем текстовую строку
static String text = "Основы программирования\n" + "на языке Java\n" +
"для начинающих\n" + "разработчиков\n";
//Получаем длину строки
static int len;
public static void main(String args[]) {
len = text.length();
boolean inWord = false;
int numChars = 0; //переменная для хранения количества символов в тексте
int numWords = 0; //переменная для хранения количества слов в тексте
int numLines = 0; //переменная для хранения количества строк в тексте
//Организуем цикл по длине текстовой строки
for (int i=0; i < len; i++) {
char с = text.charAt(i); //Преобразуем элемент текстовой строки в символ
numChars++; //Увеличиваем на 1 счетчик символов
switch (с) { //Анализируем символы в текстовой строке
case '\n': numLines++; // Если символ перевода строки, то увеличиваем
//счетчик строк на 1
case '\t': // Тоже самое
case ' ' : if (inWord) { //Если пробел увеличиваем счетчик слов на 1
numWords++;
inWord = false;
}
break;
default: inWord = true;
}
}
System.out.println("\t" + numLines +"\t" + numWords + "\t" + numChars);
//Выводим на консоль количество строк, слов и символов в текстовой строке
}
}
