Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
11
Добавлен:
20.04.2019
Размер:
936.45 Кб
Скачать

Язык программирования Java

План

  1. Введение в Java-технологии

  2. Синтаксис языка Java

  3. Массивы и строки

  4. Объектно-ориентированное программирование

  5. Исключения

  6. Потоковый ввод-вывод

  7. Коллекции

  8. Графический пользовательский интерфейс

  9. События

  10. Java2D

  11. Потоки исполнения

Введение в Java-технологии

Хронология развития языка Java

1991 Проект “Oak” – программирование устройств бытовой электроники

1994 Браузер “WebRunner” – интерактивные апплеты для гипертекстовых страниц

1995 Официальное объявление технологии Java

1997 Первые применения Java для разработки корпоративных информационных систем

. . .

Составляющие Java-технологии

Жизненный цикл Java-приложения

Особенности Java-технологии

1. Переносимость Программы, написанные на языке Java, после однократной трансляции в байт-код могут быть исполнены на любой платформе, для которой реализована виртуальная Java-машина.

Особенности Java-технологии

2. Безопасность Функционирование программы полностью определяется (и ограничивается) виртуальной Java-машиной. Отсутствуют указатели и другие механизмы для непосредственной работы с физической памятью и прочим аппаратным обеспечением компьютера.

Особенности Java-технологии

3. Надежность В языке Java отсутствуют механизмы, потенциально приводящие к ошибкам: арифметика указателей, неявное преобразование типов с потерей точности и т.п. Присутствует строгий контроль типов, обязательный контроль исключительных ситуаций. Многие логические ошибки обнаруживаются на этапе компиляции.

Особенности Java-технологии

4. Сборщик мусора Освобождение памяти при работе программы осуществляется автоматически с помощью «сборщика мусора».

(программировать проще и надежнее)

Особенности Java-технологии

5. Самодокументируемый код Имеется механизм автоматического генерирования документации на основе комментариев, размещенных в тексте программ.

Особенности Java-технологии

6. Многообразие типов приложений На языке Java возможно реализовать абсолютно разные по способу функционированию и сфере использования программы.

Типы Java-приложений

1. Приложения (application) обычные прикладные программы, которые запускаются пользователем и имеют доступ ко всем ресурсам компьютера наравне с любыми другими программами.

Типы Java-приложений

2. Мидлеты (midlet) специализированные программы, предназначенные для использования на мобильных устройствах. Структура и возможности мидлетов обусловлены техническими особенностями мобильных устройств.

Типы Java-приложений

3. Апплеты (applet) специализированные программы, обычно небольшого размера, запускаемые браузером внутри web-документа для вывода динамического содержимого и/или интерактивного взаимодействия с пользователем.

Типы Java-приложений

4. JSP-страницы (Java Server Pages) HTML-документы со вставками на языке Java, используемые web-серверами для анализа пользовательских запросов и динамического формирования web-документов на основе результатов обработки этих запросов.

Типы Java-приложений

5. Сервлеты (servlet) специализированные программы, функционирующие в рамках web-сервера и имеющие доступ к его ресурсам: файлам, базам данных и т.п.

Примитивные типы данных аналогичны простым типам, которые используются в других языках программирования. При реализации примитивных типов объектно-ориентированный подход не используется.

Ссылочные типы данных используются для работы с объектами.

Синтаксис языка Java

Язык Java имеет строгую типизацию, т.е. все переменные, константы, выражения имеют свой тип, который должен быть определен еще на этапе трансляции программ.

Тип данных определяет

– набор значений, которые может иметь переменная или которые могут получаться в результате вычисления выражения;

– набор операций, применимый к этим значениям;

– смысл этих операций.

Типы данных языка Java

Логический тип данных (boolean) используется для представления двух логических значений: «истина» или «ложно».

Символьный тип данных (char) используется для представления кодов символов в двухбайтовой кодировке Unicode.

Целочисленные типы данных отличаются диапазонами допустимых значений:

byte

-27

27 – 1

short

-215

215 – 1

int

-231

231 – 1

long

-263

263 – 1

Все целочисленные типы знаковые.

Вещественные типы данных отличаются точностью представления значений:

float – одинарная точность (7-8 цифр)

double – двойная точность (17 цифр)

Константы

Константами обычно называют представление значений типов данных в тексте программы.

Логические константы записываются с помощью ключевых слов true – «истина» false – «ложь»

Целочисленные константы могут быть записаны в трех системах счисления:

– десятичной (1, 10, 100);

– восьмеричной (01, 010, 0100);

– шестнадцатеричной (0x1, 0x10, 0x100).

По умолчанию целочисленным константам сопоставляется тип int.

При необходимости использовать константы типа long, следует указывать суффикс типа данных ‘L’.

Например: 2147483648L 0xABCDEFL

Вещественные константы могут быть записаны в десятичной или шестнадцатеричной системах счисления.

Признаком десятичной вещественной константы служит:

– десятичный разделитель ‘.’;

– экспоненциальная часть, начинающаяся с ‘E’;

– суффикс типа данных – ‘F’ (float) или ‘D’ (double).

Если суффикс типа данных явно не указан, то используется тип double.

При записи вещественной константы в шестнадцатеричной системе счисления обязательно должна присутствовать экспоненциальная часть, начинающаяся с ‘P’, которая указывает на степень двойки.

Например: 0x3P-5 → 3 ∙ 2-5 0xB.8P10 → 11.5 ∙ 210.

Символьные константы представляют собой отдельные символы, записанные в одиночных кавычках (апострофах).

Значением символьной константы является целое число от 0 до 65535 – код символа в кодировке Unicode.

Непечатные и специальные символы могут быть представлены с помощью:

escape-последовательностей, например, '\n' (допускаются значения '\\', '\'', '\"', '\b', '\f', '\n', '\r', '\t');

кода символа, записанного в восьмеричной системе счисления, например, '\100' (допускаются значения от \000 до \377);

кода символа, записанного в шестнадцатеричной системе счисления, например, '\u0020' (допускаются значения от '\u0000' до '\uFFFF').

Строковые константы записываются в двойных кавычках и могут содержать как печатные символы, так и символы, задаваемые escape-последовательностями или с помощью кода.

Внутреннее представление строк использует кодировку Unicode и не зависит от программно-аппаратной платформы.

Особенностью строковых констант является то, что они являются записью значений ссылочного типа данных String, т.е. фактически представляют собой ссылки на автоматически создаваемые объекты этого типа.

Специальная константа – пустая ссылка null – совместима с переменными любого ссылочного типа и обозначает отсутствие ссылки на объект.

Операторы

Операторами обычно называют неделимую последовательность символов, используемую для обозначения операции, которая выполняется над данными.

Арифметические операторы применяются к значениям числовых типов данных (в том числе и char).

– операторы инкремента ++ и декремента – –;

– аддитивные операторы + и –;

– мультипликативные операторы *, / и %;

– побитовые операторы ~ («не»), & («и»), | («или»), ^ («исключающее или»);

– операторы битового сдвига <<, >>, >>>.

Особенности выполнения операций:

/ , % действие зависит от типа операндов

>> знаковый сдвиг

>>> беззнаковый сдвиг

Операторы отношения <, >, = =, <=, >=, != позволяют сравнивать значения двух совместимых между собой примитивных типов данных. Операторы отношения = = и != могут применяться к значениям ссылочных типов данных. Результатом операций отношения является значение логического типа.

Логические операторы применяются к значениям логического типа и позволяют выполнить над ними основные логические операции.

– оператор отрицания !;

– операторы полных логических операций & («и»), | («или»), ^ («исключающее или»);

– операторы сокращенных логических операций && («и»), || («или»).

Результатом логических операций является значение логического типа.

Особенность выполнения сокращенных логических операций:

если по левому операнду можно судить об истинности всего выражения, то правый операнд не вычисляется.

Например:

(x==y) || (x==–y)

(n!=0) && (m/n>0)

Условный оператор ? : позволяет вычислить значение одного из двух выражений в зависимости от истинности некоторого условия.

Например: a>b ? a : b

Операторы присваивания позволяют менять значение переменных.

Оператор простого присваивания применяется к переменным любого типа:

a = b;

Операторы составного присваивания позволяют изменить значение числовой переменной, выполнив над ней одну из 11 бинарных арифметических операций

a += b;

Переменные

Переменной называют программный объект (не в смысле ООП), имеющий имя и значение, которое может быть получено и изменено программой.

Синтаксис объявления переменных

[ final ] тип имя [ = значение ]

В зависимости от места объявления переменных различают:

формальные параметры – объявляются в заголовке метода;

локальные переменные – объявляются в любом месте внутри тела метода;

(глобальные переменные в языке Java отсутствуют!)

Область видимости переменной простирается от места объявления переменной до конца блока, в котором была объявлена переменная

{

// . . .

int x;

// . . . область

// . . . видимости

// . . . переменной

}

В языке Java не разрешается повторно использовать имена переменных внутри вложенных блоков:

{

// . . .

int x;

// . . .

{

// . . .

double x; // ошибка!

// . . .

}

// . . .

}

Если при объявлении переменной был использован модификатор final, то значение такой переменной изменить нельзя.

final int x;

// . . .

x=18; // ошибка!

До первого использования переменным должно быть присвоено значение.

Переменным с модификатором final значение должно быть присвоено при объявлении.

int x;

x=5;

final int y=6;

Выражения

Выражениями обычно называют конструкцию языка программирования, определяющую способ вычисления некоторого значения с помощью одного или нескольких операндов.

Порядок вычисления выражения, содержащего несколько операций, определяется:

– по приоритету операций: b*b – 4*a*c

– с помощью скобок: b*(b – 4)*a*c

– по ассоциативности операций a+b+c a=b=c

– по форме записи (префиксная или постфиксная): a – b++ a – ++b

Приоритеты операций (от старшего к младшему):

– операции инкремента и декремента;

– мультипликативные операции;

– аддитивные операции;

. . .

– операции отношения;

. . .

– логические операции;

. . .

– операции присваивания.

При вычислении выражений часто происходит неявное преобразование типа операндов:

1. Операнды типа byte, short, char перед выполнением операции всегда приводятся к типу int.

byte a=10; byte b=20; int c=a+b;

2. Если в одной операции смешиваются операнды разных типов, то тип операнда с меньшей точностью приводится к типу операнда с большей точностью:

int ® long int, long ® float int, long, float ® double

3. При присваивании тип значения справа приводится к типу переменной слева (если при этом не происходит потери точности):

double c = 16 / 5;

но

int a = 15.0 / 3.0; // ошибка

В выражениях можно использовать явное преобразование типа операндов:

byte a=10; byte b=20; byte c=(byte)(a+b);

int Summa, Kolichestvo; . . . double Srednee=(double)Summa/Kolichestvo;

int c=(int)(15.0/3.0);

Математические функции и константы

В языке Java математические функции (37 шт.) и константы (2 шт.) доступны посредством объекта Math.

Math.E – число e

Math.PI – число p

Большинство функций соответствуют языку C, например:

Math.abs(x) – модуль числа

Math.sqrt(x) – квадратный корень из числа

и т.д.

Имеются функции для часто выполняемых операций, например:

Math.min(x,y) – минимум из двух чисел

Math.max(x,y) – максимум из двух чисел

Math.hypot(x,y) – гипотенуза прямоугольного треугольника с катетами {x,y}

Math.toRadians(x) – преобразовать из градусов в радианы

Math.toDegrees(x) – преобразовать из радианов в градусы

Структура простейшего Java-приложения

public class HelloWorld {

public static void main(String arg[]) {

System.out.println("Hello, World!");

}

}

Структурные операторы

Язык программирования Java имеет полный набор структурных операторов.

Составной оператор { }

Составной оператор предназначен для логического объединения нескольких операторов. Чаще всего составной оператор используется в других структурных операторах, в которых по правилам языка допускается только один оператор.

Иногда составные операторы применяются для ограничения области видимости переменных.

Оператор ветвления

краткая форма записи if (условие) оператор;

полная форма записи if (условие) оператор1; else operator2;

В качестве условия должно выступать логическое (boolean) выражение.

В качестве операторов могут быть использованы составные операторы.

В соответствии с «Code Conventions for the Java Programming Language» рекомендуется оформлять операторы ветвления следующим образом:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]