Java_Lecture1.ppt
- Количество слайдов: 49
Язык программирования Java (учебный курс подготовил: руководитель группы разработчиков ООО «МЕРА НН» М. В. Лейкин) 13 Delovaya St. , Niznhy Novgorod, 603163, Russia Tel. : +7 (8312) 778822, Fax: +7 (8312) 777790 Email: info@mera-group. com URL: www. meranetworks. ru
История создания и эволюция языка Java Sun Microsystems (www. sun. com) – ныне часть компании Oracle (www. oracle. com) Patrick Naughton James Gosling Scott Mc. Nealy Январь, 1991 г. Начало разработки нового языка программирования. Главная причина недовольства С++: Необходимо перекомпилировать, а зачастую и переписывать код под каждую новую архитектуру микропроцеесора, операционную систему и т. п. 2
История создания и эволюция языка Java Сентябрь, 1992 г. Oak (дуб) 23 марта 1995 г. Официальное объявление языка Java 1999 г. - Java 2 SE – Java 2 Standard Edition 3
Ключевые особенности языка Java • • архитектурная независимость и переносимость кода полная объектная ориентированность устойчивость (надежность) кода встроенный механизм поддержки многопоточности безопасность Java-программ встроенная структура коллекций удобство разработки GUI 4
Архитектурная независимость и переносимость кода C++ "Write Once, Run Anywhere" Java 5
Архитектурная независимость и переносимость кода Байт-код – архитектурно нейтральный, высокооптимизированный набор команд, предназначенных для выполнения специальной исполняющей системой. Java JVM (Java Virtual Machine, виртуальная Java-машина) – исполняющая система, интерпретирующая байт-код 6
Архитектурная независимость и переносимость кода 7
Полная объектная ориентированность Основная структурная единица программы – класс, весь код Java-программы должен находиться внутри одного или нескольких классов. 8
Устойчивость (надежность) кода • • • отсутствие адресной арифметики технология «сборки мусора» (garbage collection) строгая типизация отсутствие множественного наследования запрет перегрузки операторов встроенная обработка исключений «Java is C without the Guns and Knives» (С) J. Gosling 9
Поддержка многопоточности Многопоточность Java предоставляет средства создания приложений с множеством одновременно активных потоков. Для эффективной работы с потоками в Java реализован механизм семафоров и средств синхронизации потоков: библиотека языка предоставляет класс Thread, а система выполнения предоставляет средства диспетчеризации и средства, реализующие семафоры. 10
Безопасность JVM - аналог виртуального компьютера, расположенного в оперативной памяти и интерпретирующего байткод. Все действия Javaпрограммы замкнуты внутри этого виртуального компьютера. JVM может не допускать деструктивных действий Java-программ. 11
Встроенная структура коллекций Структура коллекций (collections framework) Java стандартизирует способ, с помощью которого программы хранят и обрабатывают структуры данных. Структура коллекций Интерфейсы Реализации Алгоритмы 12
Встроенная структура коллекций Преимущества использования структуры коллекций: 1. Избавление от рутинных операций по кодированию стандартных структур данных и алгоритмов 2. Высокая эффективность реализации 3. Универсальность и простота изучения (различные типы коллекций работают похожим друг на друга образом и с высокой степенью способности к взаимодействию) 4. Расширяемость 5. Параметризация 13
Удобство разработки GUI В состав Java входят 2 библиотеки, предназначенных для разработки GUI: - AWT (Abstract Window Toolkit) – платформно-зависимая библиотека, вывод осуществляется через вызовы OS API - Swing - платформно-незаивисимая библиотека, реализованная полностью на Java, через OS API выводится только окно, все остальное рисуется средствами Java 14
Инструментальные средства Большая часть инструментария для разработки Java-программ распространяется бесплатно! 1. Java Software Development Kit - Sun Microsystems Текущая версия Java(TM) SE Development Kit 6 http: //www. oracle. com/technetwork/javase/downlo ads/index. html 2. RAD – средства разработки: – – – – Eclipse Project (open source project) Net. Beans (open source project) Intelli. J IDEA (Jet. Brains) JCreator Pro (Xinox Software) Symantec Cafe (Symantec) Visual J++ (Microsoft) Together (Together. Soft Corporation) 15
Первая программа на Java class First. Prog {public static void main(String args[ ]) { System. out. println (“Hello, world”); } } 1. -> First. Prog. class 2. 16
Литература и источники информации в сети Интернет 1. 2. 3. 4. 5. 6. 7. 8. 9. • • • Ноутон П. , Шилдт Г. Java 2 в подлиннике. – СПб, «BHV» , 2001. Хабибуллин И. Самоучитель Java. – СПб, «BHV» , 2001. Арнолд К. , Гослинг Дж. , Холмс Д. Язык программирования Java. – М. : «Вильямс» , 2001. Шилдт Г. Java 2, v 5. 0 (Tiger). Новые возможности. – СПб, «BHV» , 2005. Флэнаган Д. Java в примерах. Справочник. – М. : «Символ-Плюс» , 2003. Стелтинг С. Java без сбоев. Обработка исключений, тестирование, отладка. – М. : «КУДИЦ-Образ» , 2005. Дейтел Х. М. , Дейтел П. Дж. Как программировать на Java. Книга 1. Основы программирования. – М. : «Бином-Пресс» , 2003. Дейтел Х. М. , Дейтел П. Дж. Как программировать на Java. Книга 2. Файлы, сети, базы данных. – М. : «Бином-Пресс» , 2006. Шилдт Г. , Холмс Дж. Искусство программирования на Java. – М. : «Вильямс» , 2005. http: //www. sun. ru/win/java http: //www. javable. com http: //www. firststeps. ru/java 1. html 17
Синтаксис Java Лексические элементы языка: • • пробельные символы комментарии идентификаторы разделители ключевые слова константы (литералы) операции 18
Синтаксис Java Пробельные символы • • • пробел табуляция перевод строки Комментарии • • • // … однострочный комментарий /* … многострочный комментарий … */ /** … документационный комментарий … */ Для сборки док. комментариев: javadoc. exe 19
Синтаксис Java Идентификаторы • • • A-Z, a-z, 0 -9, _, $ 2 count Test ≠ test ≠ TEST Разделители () Списки параметров в объявлении и вызове метода, задание приоритета операций в выражениях, выделение выражений в операторах управления выполнением программы и в операторах приведения типов. {} Блоки кода, списки инициализации массивов [] Объявление массивов, доступ к элементам массивов ; Разделяет операторы. , Разделяет идентификаторы в объявлениях переменных, а также цепочку выражений внутри оператора for. . Разделение имен пакетов и классов, обращение к члену или методу класса. 20
Синтаксис Java Ключевые слова abstract const finally int public this boolean continue float interface return throw break default for long short throws byte do goto native static transient case double if new strictfp try catch else implements package super void char extends import private switch volatile class final instanceof protected synchronized while 21
Типы данных в Java Целые (byte, short, int, long) C пл. точкой (float, double) Простые Символьный (char) Типы данных Логический (boolean) Ссылочные Массивы Классы Интерфейсы 22
Типы данных в Java Целочисленные типы Имя Ши- Диапазон типа рина byte 8 -128 … 127 short 16 -32 768 … 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 775 807 С плавающей точкой Имя типа Ширина Диапазон float 32 3. 4 е-038 … 3. 4 е+038 double 64 1. 7 е-308 … 1. 7 е+308 23
Типы данных в Java Символьный тип Имя типа Ширина Диапазон char 16 0 … 65 535 Логический тип Переменная типа boolean может принимать одно из двух значений: true или false. При этом true !=1, а false !=0. Ширина типа зависит от реализации JVM. 24
Константы в Java Типы констант (литералов): • • • целочисленные с плавающей точкой булевские символьные строковые 25
Константы в Java Целочисленные константы - 23 //десятичный 06 //восьмеричный 0 x 6 A, 0 X 75 F //шестнадцатеричный 987 L, 3456 l //long int i = 09 ? ? ? Неверно, т. к. восьмеричная константа не может содержать 9 byte b; b=17; - верно b=523; - неверно, 523 выходит за диапазон byte 26
Константы в Java Константы с плавающей точкой - 3. 14159 //обычная форма 314159 Е-05 //научная форма Логические константы - true != 1 false != 0 Строковые константы - “Hello, World!” “двеnстроки” “”А это в кавычках”” 27
Константы в Java Символьные литералы - ‘a’, ’z’, ’@’ управляющие последовательности 28
Переменные Объявление переменных: <type> identifier [ = value ] [, identifier [ = value ]. . . ]; – – – – byte b = 0 х55; short s = 0 x 55 ff; int i = 1000000; long l = 0 xffff. L; char с = 'a' ; float f =. 25 f; double d =. 00001234; boolean bool = true; 29
Преобразование и приведение типов Автоматическое преобразование Необходимо соблюдение 2 -х условий: - типы совместимы - целевой тип больше по диапазону чем исходный byte short int long float double char boolean 30
Преобразование и приведение типов Автоматическое преобразование byte b = 3; int i = b; boolean bool = b; • • //корректное преобразование //ошибка: несовместимые типы char short s = i; c = ‘a’; int i = с; short s = c; c = s; ? ? ? //ошибка: целевой тип меньше верно! исходного неверно! (диапазон char больше) неверно! (потеря знака) 31
Преобразование и приведение типов Явное приведение типов 1. Сужение (narrowing conversion) 2. Усечение (truncation) 3. Сужение + усечение int i = 260; byte b = (byte) i; double d = 4. 45; byte b = (byte) d; double d = 260. 45; b=4 b=4 byte b = (byte) d; 32
Преобразование и приведение типов Автоматическое расширение типов в выражениях • все byte и short-операнды расширяются до int • если один операнд в выражении имеет тип long, тип всех операндов и результата расширяется до long • если один операнд в выражении имеет тип float, тип всех операндов и результата расширяется до float • если один операнд в выражении имеет тип double, тип всех операндов и результата расширяется до double 33
Преобразование и приведение типов Для чего нужно автоматическое расширение типов? byte b = 100; int i = (b * 2)/2; //без расширения типов даст -28 вместо 100! 34
Массивы Одномерные массивы Объявляются только динамически с помощью оператора new или списка инициализации. Формы объявления: 1. <type> arr[ ]; arr = new <type>[10]; int m[ ]; m = new int[3]; 2. <type> [ ]arr; arr = new <type>[10]; 3. <type> arr[ ] = new <type>[10]; 4. <type> arr[ ] = {1, 2, 3, 4, 5}; int m[ ]=new int[3]; int m[ ]={1, 2, 3}; 35
Массивы Многомерные массивы <type> var_name [ ][ ]…[ ] = new <type>[ ][ ] … [ ] int massiv[ ][ ] = new int[3][5]; int massiv[ ][ ] = {{1, 2}, {3, 4}, {5, 6}}; «Ступенчатые» массивы: int massiv[ ][ ] = new int[3][ ]; massiv[0] = new int[1]; massiv[1] = new int[2]; massiv[2] = new int[3]; 36
Операции • арифметические • битовые (поразрядные) • операции отношений • логические операции • операция присваивания • условная операция 37
Операции Арифметические операции 38
Операции Битовые (поразрядные) операции ~ Поразрядное унарное отрицание & Поразрядное И | Поразрядное ИЛИ ^ Поразрядное исключающее ИЛИ >> Сдвиг вправо << Сдвиг влево >>> Сдвиг вправо с заполнением старшего бита нулем &= Присваивание с поразрядным И |= Присваивание с поразрядным ИЛИ ^= Присваивание с поразрядным исключающим ИЛИ >>= Присваивание со сдвигом вправо >>>= Присваивание со сдвигом вправо и заполнением старшего бита нулем <<= Присваивание со сдвигом влево 39
Операции Битовые (поразрядные) операции Беззнаковый сдвиг В С++: 1 0 int 0 1 0 >>2 1 0 1 unsigned int 1 1 1 0 0 1 (расширение знака) В Java: int >>2 int >>>2 1 1 1 0 0 1 (расширение знака) 40
Операции Битовые (поразрядные) операции Беззнаковый сдвиг byte b = (byte) 0 xf 1 (-15) 1 1 0 0 0 1 byte b 1 = (byte) (b>>>4) Ожидаем: b 1 = 15 Получаем: 1. Расширение до int 2. Беззнаковый сдвиг 3. Усечение b 1 = -1 41
Операции Логические операции & Логическое И | Логическое ИЛИ ^ Логическое исключающее ИЛИ || Укороченное ИЛИ && Укороченное И ! Логическое унарное отрицание &= Логическое И с присваиванием |= Логическое ИЛИ с присваиванием ^= Исключающее ИЛИ с присваиванием 42
Операции Логические операции Таблица истинности A B A&B A|B A^B !A false false true false true true false 43
Операции Операция присваивания var_name = <expression>; Условная операция <expression 1> ? <expression 2> : <expression 3> int value, abs; abs = value < 0 ? –value : value; 44
Операции Таблица приоритетов 1. ( ) [ ]. 8. & 2. ++ -- ~ ! 9. ^ 3. * / % 10. | 4. + - 11. && 5. >> >>> << 12. || 6. > >= < 13. ? : 7. == != <= 14. = += -= *= /= %= &= |= ^= >>>= <<= 45
Управляющие операторы Оператор if if (<condition>) <statement 1>; [else <statement 2>; ] int flag; if (!flag) //проверка на равенство нулю, допустимая в С/С++, но недопустимая в Java if (flag == 0) //так необходимо организовывать проверку на равенство нулю в Java Во всех операторах <condition> - выражение, возвращающее тип boolean 46
Управляющие операторы Оператор switch (<expression>) {case value 1: <последовательность операторов 1> break; … case value. N: <последовательность операторов. N> break; default: <последовательность операторов> } 47
Управляющие операторы Операторы циклов while (<condition>) {<последовательность операторов> } do {<последовательность операторов> } while (<condition>) for (<initialization>; <condition>; <iteration>) {<последовательность операторов> } 48
Управляющие операторы Оператор break {int i, j, x=3; int matrix[ ][ ] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; test_label: for (i=0; i<3; i++) {for (j=0; j<3; j++) {if (matrix[ i ][ j ]==x) break test_label; } } System. out. println ("String " + i + "column " + j); } 49
Java_Lecture1.ppt