1 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Java 2 Micro Edition Лаборатория информационных технологий (ИТЛаб) При поддержке фирмы.

Презентация:



Advertisements
Похожие презентации
Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках, комментарии для документирования. Комментарии,
Advertisements

Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Данные в программах и алгоритмах Программы и их алгоритмы пишутся для обработки данных. Чтобы реализовать алгоритм, программам необходимо работать с данными.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Разработка программного обеспечения для сигнальных процессоров TMS320C64xx в IDE Code Composer Studio Часть II. Язык программирования С. Основные понятия.
©ρŧą Базовые конструкции языка.
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
b5_java_s4
Язык программирования Pascal. Программа это упорядоченный список команд, необходимых для решения некоторой задачи. Языком программирования называют систему.
Тип, имя и значение переменной.. Переменные. В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют.
Тема: Управление потоком в PHP Изучить возможности языка PHP при решении задач, требующих использования условного оператора. Рассмотреть примеры управления.
Лекция 1 по дисциплине «Программные средства математических расчетов» тема: «Основы языка С++» гр. 8Е31 Мамонова Татьяна Егоровна
Лекция 2 Введение в язык Си.
Элементы языка СИ Средства для написания простейших программ.
Тема 2. Операторы (инструкции) передачи управления. Условный оператор (инструкция) и его формы. Логические выражения и логические переменные. Составные.
Транксрипт:

1 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Java 2 Micro Edition Лаборатория информационных технологий (ИТЛаб) При поддержке фирмы Intel Проект ТЭЛМА Язык Java Жерздев С.В.

2 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Отличия Java от C++

3 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Отличия Java от C++ Большинство архитектурных решений, принятых при создании Java, было продиктовано желанием предоставить синтаксис, сходный с С и C++. В Java используются практически идентичные соглашения для объявления переменных, передачи параметров, операторов и для управления потоком выполнением кода. В Java добавлены все хорошие черты C++, но исключены недостатки последнего.

4 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Глобальные переменные При использовании глобальных переменных основная проблема состоит в том, что любая функция может привести к широкомасштабным побочным эффектам, изменив глобальное состояние системы. В Java единственным глобальным пространством имен является иерархия классов. В этом языке просто невозможно создать глобальную переменную, не принадлежащую ни од-ному из классов.

5 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Goto До того, как в C++ появился механизм работы с исключениями, goto активно использовался для выхода из циклов в исключительных ситуациях. В Java оператора goto нет. Зато в Java есть операторы continue и break с меткой, восполняющие отсутствие goto в тех единственных случаях, когда использование последнего было бы оправдано. А мощный хорошо определенный встроенный в Java механизм исключений делает ненужным использование goto во всех остальных ситуациях.

6 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Указатели Указатели или адреса в памяти наиболее мощная и наиболее опасная черта C++. При-чиной большинства ошибок в сегодняшнем коде является именно неправильная работа с указателями. Хотя в Java дескрипторы объектов и реализованы в виде указателей, в ней отсутствуют возможности работать непосредственно с указателями. Вы не можете преобразовать целое число в указатель, а также обратиться к произвольному адресу памяти.

7 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Распределение памяти Распределение памяти в С, а значит и в C++, опирается на вызовы библиотечных функци. Если вы попытаетесь освободить блок памяти, который вы уже освободили ранее готовьтесь к худшему. Обратная проблема, когда вы просто забываете освободить ненужный больше блок памяти. Поскольку в Java каждая сложная структура данных это объект, память под такие структуры резервируется в куче (heap) с помощью оператора new. Вам не придется вызывать delete, поскольку Java система с так называемым сборщиком мусора.

8 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Хрупкие типы данных C++ получил в наследство от С все обычные типы данных последнего. К несчастью, реальный диапазон и точность этих типов колеблется в зависимости от конкретной реализации транслятора. Различные трансляторы C++ могут резервировать под целый тип 16, 32 или 64 бита в зависимости от разрядности машинного слова. В Java эта проблема решена, поскольку в ней для всех базовых числовых типов используются соглашения, не зависящие от конкретной реализации среды.

9 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Ненадежное приведение типов Приведение типов в С и C++ мощный механизм, который позволяет произвольным образом изменять тип указателей. Поскольку объекты в C++ это просто указатели на адреса памяти, в этом языке во время исполнения программы нет способа обнаруживать случаи приведения к несовместимым типам. Дескрипторы объектов в Java включают в себя информацию о классе объекта, так что Java может выполнять проверку совместимости типов на фазе исполнения кода, возбуждая исключение в случае ошибки.

10 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Раздельные файлы заголовков В С++ используются файлы заголовков, в которые можно было поместить прототипы классов и распространять их вместе с оттранслированными двоичными файлами, содержащими реализации этих классов. Поддержка этих файлов заголовков становилась непосильной задачей по мере роста размеров библиотек классов. В Java отсутствуют файлы заголовков. Тип и видимость членов класса при трансляции встраиваются внутрь файла *.class (файла с байт- кодом). Интерпретатор Java пользуется этой информацией в процессе выполнения кода.

11 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Ненадежные структуры С++ пытается предоставить программисту возможность инкапсуляции данных посредством объявления структур (struct) и полиморфизм с помощью объединений (union). Эти две конструкции прикрывают критические и катастрофические машиннозависимые ограниче- ния по размеру и выравниванию данных. В Java нет конструкций struct и union, все это объединено в концепции классов.

12 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Препроцессорная обработка Работа препроцессора C++ которого заключается в поиске специальных команд, начи-нающихся с символа #. Эти команды позволяют выполнять простую условную трансляцию и расширение макроопределений. Java управляется со своими задачами без помощи препроцессора, вместо принятого в С стиля определения констант с помощью директивы #define в ней используется ключевое слово final.

13 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Лексические основы

14 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Лексические основы Исходный файл на языке Java это текстовый файл, содержащий в себе одно или не-сколько описаний классов. Транслятор Java предполагает, что исходный текст программ хранится в файлах с расширениями *.java. Язык Java требует, чтобы весь программный код был заключен внутри поименованных классов. Получаемый в процессе трансляции независимый от процессора байт-код для каждого класса записывается в отдельном выходном файле, с именем совпадающем с именем класса, и расширением *.class.

15 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Пробелы Java допускает произвольное форматирование текста программ. Для того, чтобы программа работала нормально, нет никакой необходимости выравнивать ее текст специальным образом, при условии, что между отдельными лексемами (между которыми нет операторов или разделителей) имеется по крайней мере по одному пробелу, символу табуляции или символу перевода строки.

16 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Комментарии Комментарии, которые начинаются с символов // заканчиваются в конце строки. Комментарии, которые находятся между символами /* и */. Документирующий комментарий перед объявлением открытого класса, метода или переменной находится между символами /** и */. Программа javadoc, которая используется для автоматической генерации документации, умеет различать в таких комментариях некоторые специальные переменные, имена которых начинаются с

17 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Зарезервированные ключевые слова Зарезервированные ключевые слова это специальные идентификаторы, используются для того, чтобы идентифицировать встроенные типы, модификаторы и средства управления выполнением программы. Эти ключевые слова совместно с синтаксисом операторов и разделителей входят в описание языка Java. Они могут применяться только по назначению, их нельзя использовать в качестве идентификаторов для имен переменных, классов или методов. Кроме этого, в Java есть зарезервированные имена методов.

18 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Идентификаторы Идентификаторы используются для именования классов, методов и переменных. В качестве идентификатора может использоваться любая последовательность строчных и прописных букв, цифр и символов _ (подчеркивание) и $ (доллар). Идентификаторы не должны начинаться с цифры, чтобы транслятор не перепутал их с числовыми литеральными константами. Java язык, чувствительный к регистру букв.

19 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Литералы Константы в Java задаются их литеральным представлением.

20 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Целые литералы Любое целочисленное значение, например, 3, 42 это целый литерал. Кроме десятичных, в качестве целых литералов могут использоваться также числа с основанием 8 и 16. Java распознает восьмеричные числа по стоящему впереди нулю. Шестнадцатеричная константа различается по стоящим впереди символам нуль-х (0х или 0Х). Целые литералы являются значениями типа int (32-битовое слово). К числам можно приписать справа строчную или прописную букву L, указав таким образом, что данное число относится к типу long (64-битовое слово).

21 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Литералы с плавающей точкой В обычном формате число с плавающей точкой состоит из некоторого количества десятичных цифр, стоящей после них десятичной точки, и десятичных цифр дробной части. В экспоненциальном формате после перечисленных элементов указывается порядок (положительное или отрицательное десятичное число), следующий за символом Е или e. Числа с плавающей точкой по умолчанию рассматриваются, как значения типа double. Для констант типа float, справа к литералу надо приписать символ F или f.

22 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Логические литералы У логической переменной может быть лишь два значения true (истина) и false (ложь). Логические значения true и false не преобразуются ни в какое числовое представление. В Java эти значения могут присваиваться только переменным типа boolean либо использоваться в выражениях с логическими операторами.

23 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Символьные литералы Символы в Java это индексы в таблице символов UNICODE. Они представляют собой 16- битовые значения, которые можно преобразовать в целые числа и к которым можно при-менять операторы целочисленной арифметики, например, операторы сложения и вычитания. Символьные литералы помещаются внутри пары апострофов (' '). Все видимые символы таблицы ASCII можно прямо вставлять внутрь пары апострофов: - 'a', 'z', Для символов, которые невозможно ввести непосредственно, используются управляющие последовательности.

24 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Управляющие последовательности \ddd Восьмеричный символ \uxxxx Шестнадцатиричный символ UNICODE \'Апостроф \"Кавычка \\Обратная косая черта \rВозврат каретки (carriage return) \nПеревод строки (line feed, new line) \fПеревод страницы (form feed) \tГоризонтальная табуляция (tab) \bВозврат на шаг (backspace)

25 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Строчные литералы Строчные литералы в Java это произвольный текст, заключенный в пару двойных ка-вычек (""). Все управляющие последовательности, которые определены для символьных литералов, работают точно так же и в строках. Строчные литералы в Java должны начинаться и заканчиваться в одной и той же строке исходного кода. В этом языке, в отличие от многих других, нет управляющей последовательности для продолжения строкового литерала на новой строке.

26 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Разделители Простые разделители влияют на внешний вид и функциональность программного кода. ( ) Выделяют списки параметров в объявлении и вызове метода, используются для задания приоритета операций в выражениях, выделения выражений в операторах управления выполнением программы, и в операторах приведения типов. { } Содержат значения автоматически инициализируемых массивов, также используются для ограничения блока кода в классах, методах и локальных областях видимости.

27 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Разделители [ ] Используются в объявлениях массивов и при доступе к отдельным элементам массива. ; Разделяет операторы., Разделяет идентификаторы в объявлениях переменных, также используется для связи операторов в заголовке цикла for.. Отделяет имена пакетов от имен подпакетов и классов, также используется для отделения имени переменной или метода от имени переменной.

28 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Простые типы

29 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Простые типы Простые типы в Java не являются объектно- ориентированными, они аналогичны простым типам большинства традиционных языков программирования. Их можно разделить на четыре группы: – Целые (byte, short, int и long). Эти типы предназначены для целых чисел со знаком. – Типы с плавающей точкой (float и double). Они служат для представления чисел, имеющих дробную часть. – Символьный тип (char). Предназначен для представления символов, например, букв или цифр. – Логический тип (boolean). Используется для представления логических величин.

30 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Целые числа В языке Java понятие беззнаковых чисел отсутствует. Все числовые типы этого языка знаковые. В языке имеется 4 целых типа, занимающих 1, 2, 4 и 8 байтов в памяти. Для каждого типа byte, short, int и long, есть свои естественные области применения. Всякий раз, когда в одном выражении фигурируют переменные типов byte, short, int и целые литералы, тип всего выражения перед завершением вычислений приводится к int.

31 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Целые числа byte знаковый 8-битовый. Диапазон от -128 до 127. Он лучше всего подходит для хранения произвольного потока байтов, загружаемого из сети или из файла. short знаковый 16-битовый. Диапазон от до При хранении это тип, в котором старший байт стоит первым. int знаковый 32-битовый. Диапазон от до Этот тип прекрасно подходит для использования при обработке массивов и для счетчиков. long знаковый 64-битовый.

32 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Числа с плавающей точкой В Java реализован стандартный (IEEE-754) набор типов для чисел с плавающей точкой float и double и операторов для работы с ними. В переменных с обычной, или одинарной точностью, (тип float), для хранения вещественного значения используется 32 бита. Диапазон значений 3.4е е В случае двойной точности (тип double), для хранения значений используется 64 бита. Диапазон значений 1.7е е Все трансцендентные математические функции возвращают результат типа double.

33 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Символы Поскольку в Java для представления символов в строках используется кодировка Unicode, разрядность типа char в этом языке 16 бит. В нем можно хранить десятки тысяч символов интернационального набора символов Unicode. Диапазон типа char Unicode это объединение десятков кодировок символов, он включает в себя латинский, греческий, арабский алфавиты, кириллицу и многие другие наборы символов. Хотя величины типа char и не используются, как целые числа, вы можете оперировать с ними так, как если бы они были целыми.

34 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Тип boolean В языке Java имеется простой тип boolean, используемый для хранения логических зна- чений. Переменные этого типа могут принимать всего два значения true (истина) и false (ложь). Значения типа boolean возвращаются в качестве результата всеми операторами срав-нения. Кроме того, boolean это тип, требуемый всеми условными операторами управления такими, как if, while, do.

35 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Приведение типа В Java автоматическое преобразование возможно только в том случае, когда точности представления чисел переменной-приемника достаточно для хранения исходного значения. В противном случае необходимо использовать оператор приведения типа. Для приведения величины к определенному типу перед ней нужно указать этот тип, заключенный в круглые скобки. int a = 100; byte b = (byte) a;

36 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Автоматическое преобразование типов в выражениях Если в выражении используются переменные типов byte, short и int, то тип всего выражения автоматически повышается до int. Если же в выражении тип хотя бы одной переменной long, то и тип всего выражения тоже повышается до long. Если выражение содержит операнды типа float, то и тип всего выражения автоматически повышается до float. Если же хотя бы один из операндов имеет тип double, то тип всего вы-ражения повышается до double.

37 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Автоматическое преобразование типов в выражениях Точность, требуемая для хранения промежуточных результатов, может быть выше, чем требуется для представления окончательного результата. Например, показанный ниже код, приводит к сообщению об ошибке на фазе трансляции (из-за автоматического преобразования типа результата в int). byte b = 50; b = b* 2; ^ Incompatible type for =. Explicit cast needed to convert int to byte.

38 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Переменные

39 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Переменные Переменная это основной элемент хранения информации в Java-программе. Переменная характеризуется комбинацией идентификатора, типа и области действия. В зависимости от того, где вы объявили переменную, она может быть локальной, например, для кода внутри цикла for, либо это может быть переменная экземпляра класса, доступная всем методам данного класса. Локальные области действия объявляются с помощью фигурных скобок.

40 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Объявление переменной Основная форма объявления переменной такова: тип идентификатор [ = значение] [, идентификатор [ = значение...]; Тип это либо один из встроенных типов, либо имя класса или интерфейса. Переменные, для которых начальные значения не указаны, автоматически инициализируются нулем. int a, b, с; int d = 3, e, f = 5;

41 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Массивы Для объявления типа массива используются квадратные скобки. В приведенной ниже строке объявляется переменная month_days, тип которой массив целых чисел типа int. int month_days []; Для того, чтобы зарезервировать память под массив, используется специальный оператор new. В приведенной ниже строке кода с помощью оператора new массиву month_days выде-ляется память для хранения двенадцати целых чисел. month_days = new int [12];

42 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Массивы Имеется возможность автоматически инициализировать массивы. Инициализатор массива представляет собой список разделенных запятыми выражений, заключенный в фигурные скобки. Запятые отделяют друг от друга значения элементов массива. При таком способе создания массив будет содержать ровно столько элементов, сколько требуется для хранения значений, указанных в списке инициализации. int month_days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

43 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Массивы Java строго следит за тем, чтобы вы случайно не записали или не попытались получить значения, выйдя за границы массива. Если же вы попытаетесь использовать в качестве индексов значения, выходящие за границы массива отрицательные числа либо числа, которые больше или равны количеству элементов в массиве, то получите сообщение об ошибке времени выполнения.

44 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Многомерные массивы Настоящих многомерных массивов в Java не существует. Зато имеются массивы массивов, которые ведут себя подобно многомерным массивам, за исключением нескольких незначительных отличий. Приведенный ниже код создает матрицу из шестнадцати элементов типа double, каждый из которых инициализируется нулем. Внутренняя реализация этой матрицы массив массивов double. double matrix [][] = new double [4][4];

45 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Многомерные массивы Следующий фрагмент кода инициализирует такое же количество памяти, но память под вторую размерность отводится вручную. double matrix [][] = new double [4][]; matrix [0] = new double[4]; matrix[1] = new double[4]; matrix[2] = new double[4]; matrix[3] = { 0, 1, 2, 3 };

46 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Многомерные массивы Для задания начальных значений массивов существует специальная форма инициализатора, пригодная и в многомерном случае. Обратите внимание на тот факт, что внутри инициализатора массива можно использовать не только литералы, но и выражения. double m[][] = { { 0*0, 1*0, 2*0, 3*0 }, { 0*1, 1*1, 2*1, 3*1 }, { 0*2. 1*2, 2*2, 3*2 }, { 0*3, 1*3. 2*3, 3*3 } };

47 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Операторы

48 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Операторы Операторы в языке Java это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с некоторыми операндами. По количеству операндов операторы делятся на: – унарные (префиксные и постфиксные); – бинарными (инфиксные); – тернарный. В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса - арифметические, битовые, операторы сравнения и логические.

49 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Арифметические операторы Арифметические операторы используются для вычислений так же как в алгебре. Допустимые операнды должны иметь числовые типы. + сложение += сложение с присваиванием - вычитание (унарный минус) -= с присваиванием * умножение *= умножение с присваиванием / деление /= деление с присваиванием % деление по модулю %= с присваиванием ++ инкремент -- декремент Операторы инкремента и декремента имеют как префиксную, так и в постфиксную форму.

50 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Целочисленные битовые операторы Для целых числовых типов данных, определен набор операторов, с помощью которых можно проверять и модифицировать состояние отдельных битов. ~ побитовое унарное отрицание (NOT) & побитовое И (AND) &= побитовое AND с присваиванием | побитовое ИЛИ (OR) |= побитовое OR с присваиванием ^ побитовое исключающее ИЛИ (XOR) ^= с присваиванием >> сдвиг вправо >> = сдвиг вправо с присваиванием >>> сдвиг вправо с заполнением 0 >>>= с присваиванием

51 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Операторы отношения Для того, чтобы можно было сравнивать два значения, в Java имеется набор операторов, описывающих отношение и равенство. == равно != не равно > больше < меньше >= больше или равно

52 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Булевы логические операторы Булевы логические операторы оперируют только с операндами типа boolean. Все бинарные логические операторы воспринимают в качестве операндов два значения типа boolean и возвращают результат того же типа. & логическое И (AND) &= AND с присваиванием | логическое ИЛИ (OR) |= OR с присваиванием ^ логическое XOR ^= XOR с присваиванием || и && операторы OR и AND быстрой оценки == равно != не равно ! логическое отрицание (NOT) ?: тернарный оператор if-then-else

53 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Приоритеты операторов В Java действует определенный порядок, или приоритет, операций. Круглые скобки () используются для явной установки приоритета. Квадратные скобки [] используются для индексирования переменной-массива. Оператор. (точка) использует-ся для выделения элементов из ссылки на объект.

54 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Условные операторы

55 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. if-else В обобщенной форме этот оператор записывается следующим образом: if (логическое выражение) оператор1; [ else оператор2;] Раздел else необязателен. На месте любого из операторов может стоять составной оператор, заключенный в фигурные скобки. Логическое выражение это любое выражение, возвращающее значение типа boolean.

56 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. switch Оператор switch обеспечивает способ переключения между различными частями программного кода в зависимости от значения одной переменной или выражения. Общая форма этого оператора такова: switch ( выражение ) { case значение1: break; case значениеN: break; default: }

57 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. switch Результатом вычисления выражения может быть значение любого простого типа, при этом каждое из значений, указанных в операторах case, должно быть совместимо по типу с выражением в операторе switch. Все эти значения должны быть уникальными литералами. Если значению выражения не соответствует ни один из операторов case, управление передается коду, распо-ложенному после ключевого слова default. Оператор default необязателен. Внутри оператора switch break без метки при- водит к передаче управления на код, стоящий после оператора switch. Если break отсутствует, после текущего раздела case будет выполняться следующий.

58 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Циклы

59 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Циклы Любой цикл можно разделить на 4 части – инициализацию, – тело, – итерацию, – условие завершения. В Java есть три циклические конструкции: while (с пред-условием), do-while (с пост-условием) и for (с параметром).

60 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. while Этот цикл многократно выполняется до тех пор, пока значение логического выражения равно true. Ниже приведена общая форма оператора while: [ инициализация; ] while ( условие ) { тело; [ итерация; ] }

61 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. do-while Иногда возникает потребность выполнить тело цикла по крайней мере один раз. Для таких случаев используется циклическая конструкция do-while. Ее общая форма записи такова: [ инициализация; ] do { тело; [ итерация; ] } while ( условие );

62 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. for В этом операторе предусмотрены места для всех четырех частей цикла. Ниже приведена общая форма оператора записи for. for ( инициализация; условие; итерация ) тело; Если начальные условия таковы, что при входе в цикл условие ложно, то операторы тела и итерации не выполняются ни одного раза.

63 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. for В канонической форме цикла for происходит увеличение значения счетчика. for (int i = 1; i

64 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Передача управления

65 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. break Для того, чтобы в некоторых случаях заменять goto, в Java предусмотрен оператор break. Этот оператор сообщает исполняющей среде, что следует прекратить выполнение именованного блока и передать управление оператору, следующему за указанным блоком. Для именования блоков в языке Java используются метки. Оператор break при работе с циклами и в операторах switch может использоваться без метки. В таком случае подразумевается выход из текущего блока.

66 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. break В следующей программе два вложенных блока, и у одного своя уникальная метка. Оператор break, стоящий во внутреннем блоке, вызывает переход на оператор, следующий за блоком b. boolean t = true; b:{ { System.out.println("Выполнено"); if (t) break b; System.out.println("He выполнено"); } System.out.println("He выполнено"); } System.out.println("Выполнено");

67 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. continue В некоторых ситуациях возникает потребность досрочно перейти к выполнению следующей итерации, проигнорировав часть операторов тела цикла, еще не выполненных в текущей итерации. Для этой цели в Java предусмотрен оператор continue. Как и в случае оператора break, в операторе continue можно задавать метку, указывающую, в каком из вложенных циклов вы хотите досрочно прекратить выполнение текущей итерации.

68 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. return В Java для реализации процедурного интерфейса к объектам классов используется разновидность подпрограмм, называемых методами. В любом месте программного кода метода можно поставить оператор return, который приведет к немедленному завершению работы и передаче управления коду, вызвавшему этот метод. Кроме передачи управления, с помощью оператора return можно возвратить некоторое значение. return значение ;

69 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Исключения Последний способ вызвать передачу управления при выполнении кода использование встроенного в Java механизма обработки исключительных ситуаций. Для этой цели в языке предусмотрены операторы try, catch, throw и finally.

70 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В. Оператор запятая Иногда возникают ситуации, когда разделы инициализации или итерации цикла for требуют нескольких операторов. Поскольку составной оператор в фигурных скобках в заголовок цикла for вставлять нельзя, Java предоставляет альтернативный путь применение запятой (,) для разделения нескольких операторов. int a, b; for (a = 1, b = 4; a < b; a++, b--) { System.out.println("a = " + a); System.out.println("b = " + b); }