Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов
Лекция 2. Java – это просто, это почти как C
Hello, world! package hello; import java.lang.System; public class Hello { public static void main(String[] args) { System.out.println("Hello, world!"); }
Базовые вещи Комментарии в программе на Java – аналогично С. Литералы – как в С. Объявления переменных – как в С, но лучше. Типы данных. Области видимости имен. Константы, именование констант, использование символических имен вместо литералов.
Примитивные типы данных byte, 8 бит: short, 16 бит: -32, ,767 int, 32 бита: -2,147,483,648..2,147,483,647 long, 64 бита: - 9,223,372,036,854,775,808..9,223,372,036,854,7 75,807 float, 32 бита double, 64 бита boolean: true и false char: 16 бит, Unicode - 128
Переменные Переменные объекта (атрибуты) Переменные класса (статические атрибуты) Локальные переменные Параметры методов
Переменные 2 public class TemperatureSensor { private int temperature; private static int totalMax; public void refresh(int value) { totalMax = (value > totalMax) ? value : totalMax; temperature = value; /* or: this.temperature = value; */ }
Переменные 3 В Java можно объявлять переменные в любом месте блока, но до использования. Объявляйте переменные как можно ближе к точке их использования. Инициализируйте переменные при объявлении. Делайте время жизни переменных как можно короче.
Переменные 4 Используйте каждую переменную только с одной целью. Имя переменной должно точно и полно описывать сущность, представляемую переменной. Именуйте индексы циклов i, j, k. Но: при использовании сложных данных, например, многомерных массивов давайте содержательные имена индексам
Операторы Operators postfix unary multiplicative additive shift relational equality Precedence expr++, expr-- ++expr, --expr, +expr, -expr, ~, ! *, /, % +, - >, >>>, =, instanceof ==, !=
Операторы 2 bitwise AND bitwise exclusive OR bitwise inclusive OR logical AND logical OR conditional assignment & ^ | && || ? : =, +=, -=, *=, /=, %=, &=, ^=, |=, >=, >>=
Оператор if if (
Оператор switch switch ( ) { case : break;... case : break; default: }
Советы Размещайте нормальный вариант поведения программы после if, а не после else. Используйте ускоренное вычисление логических выражений. Размещайте наиболее вероятные варианты раньше остальных. Старайтесь завершать каждый case оператором break. Остерегайтесь сквозных case.
Циклы while ( ) do while ( ); for (опер1; опер2; опер3)
Примеры isEmpty = false; while (isEmpty) { isEmpty = refreshElements(); } do { isEmpty = refreshElements(); } while (isEmpty);
Примеры 2 int S = 0; for (int i = 0; i < 10; i++) { S += i * i; }
break, continue while (true) { if (somethingGood) { break; } else { continue; }
goto Слово goto зарезервировано Оператора goto нет Но есть оператор break: exit: while (myCondition) { if (somethingGood) { break exit; }
Советы 1 Размещайте инициализационный код непосредственно перед циклом Используйте while (true) для организации бесконечного цикла. Предпочитайте цикл for. Избегайте пустых циклов. Располагайте служебные операции либо в начале, либо в конце цикла.
Советы 2 Используйте смысловые имена переменных в циклах, чтобы сделать вложенные циклы более читабельными и чтобы не ошибаться с индексами при использовании массивов. Ограничивайте видимость переменных- индексов цикла самим циклом. Не делайте тело цикла длинной более одного экрана. Ограничивайте вложенность тремя уровнями. Используйте оператор break вместо логических флагов завершения.
Остальное Процедуры и функции. Оператор return. HelloWorld! с параметрами командной строки. Стандартные дескрипторы stdin, stdout, stderr. Строки – не совсем как в С. java.lang.String Массивы – не совсем как в С.