Кафедра ОСУ, АВТФ1 Введение в Java Java является объектно- ориентированным языком программирования, разработанным фирмой Sun Microsystems ( Sun ). Язык Java потребовался для качественного скачка в создании интерактивных продуктов для сети Internet. Разработал к.т.н. Фофанов О.Б.
Кафедра ОСУ, АВТФ2 Введение в Java Основные достоинства языка –Наибольшая среди всех языков программирования степень переносимости программ. –Мощные стандартные библиотеки. –Встроенная поддержка работы в сетях (как локальных, так и Internet/Intranet).
Кафедра ОСУ, АВТФ3 Введение в Java Основные недостатки Низкое, в сравнении с другими языками, быстродействие, повышенные требования к объему оперативной памяти. Большой объем стандартных библиотек и технологий создает сложности в изучении языка. Постоянное развитие языка вызывает наличие как устаревших, так и новых средств, имеющих одно и то же функциональное назначение.
Кафедра ОСУ, АВТФ4 Введение в Java Основные особенности Java является полностью объектно-ориентированным языком. Реализован с использованием интерпретации Р-кода (байт-кода). Т.е. программа сначала транслируется в машинонезависимый Р-код, а потом интерпретируется некоторой программой- интерпретатором (виртуальная Java-машина, JVM).
Кафедра ОСУ, АВТФ5 Версии Java Последняя версия языка Java 2.0 Версии стандартных средств разработки Java-программ от Sun Ранее-JDK (Java Development Kit) Сейчас-SDK (Software Development Kit) Текущая версия Java SE 6 Standart Edition (
Кафедра ОСУ, АВТФ6 Версии Java SDK это базовая среда разработки программ на Java. Она является невизуальной и имеет бесплатную лицензию на использование. Визуальные среды разработки ( JBuilder, Symantec Cafe, NetBeans IDE 6.0, Java Studio Creator, Java Studio Enterprise.VisualJ,, Eclipse 3.2. и др.).Визуальные среды разработки
Кафедра ОСУ, АВТФ7 Стандартный жизненный цикл программы
Кафедра ОСУ, АВТФ8 Жизненный цикл программы на Java Write once, run anywhere
Кафедра ОСУ, АВТФ9 Жизненный цикл программы на Java
Кафедра ОСУ, АВТФ10 Первая программа
Кафедра ОСУ, АВТФ11 Первая программа public class Hello { public static void main(String[ ] args) { System.out.println("Hello"); } } Сохраним ее в файле Hello.java Компиляция javac.exe Hello.java
Кафедра ОСУ, АВТФ12 Первая программа Транслятор создаст файл Hello.class с независимым от процессора байт-кодом Выполнение java.exe Hello
Кафедра ОСУ, АВТФ13 Первая программа
Кафедра ОСУ, АВТФ14 Лексические основы
Кафедра ОСУ, АВТФ15 Лексические основы
Кафедра ОСУ, АВТФ16 Лексические основы
Кафедра ОСУ, АВТФ17 Лексические основы
Кафедра ОСУ, АВТФ18 Лексические основы Программы на Java - это набор пробелов, комментариев, ключевых слов, идентификаторов, литеральных констант, операторов и разделителей. Комментарии : а = 42; // 42 – возраст клиента /* * возраст * клиента */
Кафедра ОСУ, АВТФ19 Лексические основы лексемы в Java: идентификаторы (identifiers); ключевые слова (key words); литералы (literals); разделители (separators); операторы (operators).
Кафедра ОСУ, АВТФ20 Лексические основы Идентификаторы Идентификаторы используются для именования классов, методов и переменных. В качестве идентификатора может использоваться любая последовательность строчных и прописных букв, цифр и символов _ и $ последовательность строчных и прописных букв, цифр и символов _ и $
Кафедра ОСУ, АВТФ21 Лексические основы Идентификаторы kitty maиka, кошка,.,.
Кафедра ОСУ, АВТФ22 Лексические основы Идентификаторы не должны начинаться с цифры, чтобы транслятор не перепутал их с числовыми литеральными константами (2count, not/ok) Java - язык, чувствительный к регистру букв (Value, VALUE)
Кафедра ОСУ, АВТФ23 Лексические основы Ключевые слова - это специальные идентификаторы, которые в языке Java используются для того, чтобы идентифицировать встроенные типы, модификаторы и средства управления выполнением программыКлючевые слова
Кафедра ОСУ, АВТФ24 Лексические основы Операции (operators) в языке Java Присваивания x = a + b; a = b = 1; Операции сравнения >, =,
Кафедра ОСУ, АВТФ25 Лексические основы существуют в двух формах префиксной (++y) постфиксной (y++) a = 5; x = a++; // x = 5 y = ++a; // y = 7 В префиксной форме операнд изменяется прежде чем значение используется в выражении. В постфиксной форме предыдущее значение сначала используется в выражении и только потом операнд изменяется.
Кафедра ОСУ, АВТФ26 Операции В Java имеется 44 встроенных операции. Их можно разбить на 4 класса – арифметические, битовые, операции сравнения логические
Кафедра ОСУ, АВТФ27 Операции Остаток от деления (значение по модулю) % Расширенные операции присваивания +=, -=, *=, /= и др a += b a = a + b
Кафедра ОСУ, АВТФ28 Лексические основы int a = 1; int b = 2; int с = 3; a += 5; b *= 4; c += a * b; с %= 6;
Кафедра ОСУ, АВТФ29 Лексические основы а = 6 b = 8 с = 3
Кафедра ОСУ, АВТФ30 Операции Логические операции ! отрицание && логическое 'и' || логическое 'или' Операнды этих операций должны быть типа boolean, результат boolean. Операции && и || имеют одну особенность их правый операнд может и не вычислиться, если результат уже известен по левому операнду
Кафедра ОСУ, АВТФ31 Операции Побитовые логические операции & побитовое 'и' | побитовое 'или' ^ побитовое 'исключающее или' ~ побитовое отрицание
Кафедра ОСУ, АВТФ32 Операции Операции сдвига > сдвиг вправо >>> беззнаковый сдвиг вправо Эти операции сдвигают значение своего левого операнда на число бит, заданное правым операндом.
Кафедра ОСУ, АВТФ33 Операции Операторы сдвига могут применяться лишь к целым числам, то есть к типам int или long.Операторы сдвига int a =35; a = a>>2; /* (35) (8) */
Кафедра ОСУ, АВТФ34 Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Кафедра ОСУ, АВТФ35 Операции старшинство операцийстаршинство int i=3; int var=i+++i; // ok or !ok ? //7 // What is the value of var? int x=5; int y=x+++--x; System.out.println ("y="+y); // 10
Кафедра ОСУ, АВТФ36 Операции Операция приведения типов
Кафедра ОСУ, АВТФ37 Операции int p=2; int q=3; int quotient=p/q; int reminder=p%q; // modulo double div=p/q; double realdiv=(double)p/(double)q; // quotient=0 //reminder=2 // div=0.0 // realdiv=
Кафедра ОСУ, АВТФ38 Операции double x=2; // implicit casting double x=(double)2;// explicit double x=2.0; // same type casting явное или неявное преобразование типа
Кафедра ОСУ, АВТФ39 Операции Implicit casting
Кафедра ОСУ, АВТФ40 Литералы Литерал в программировании - адресная, числовая или символьная константа, непосредственно включаемая в операторы или команды программы (в отличие от данных, обращение к которым производится посредством их идентификаторов)
Кафедра ОСУ, АВТФ41 Литералы Литералы позволяют задать в программе значения для числовых символьных строковых выражений null-литералов.
Кафедра ОСУ, АВТФ42 Литералы в Java определены следующие виды литералов: целочисленный (integer); дробный (floating-point); булевский (boolean); символьный (character); строковый (string); null-литерал (null-literal).
Кафедра ОСУ, АВТФ43 Литералы Целочисленные литералы позволяют задавать целочисленные значения в десятеричном, восьмеричном и шестнадцатеричном виде. 0, 00, 0x0 0xaBcDeF, 0xCafe, 0xDEC
Кафедра ОСУ, АВТФ44 Литералы Дробные литералы e10 3.1E-20 Логические литералы true и false.
Кафедра ОСУ, АВТФ45 Литералы Символьные литералы описывают один символ из набора Unicode 'a' // латинская буква а ' ' // пробел '\u0041' // латинская буква A '\u0410' // русская буква А '\u0391' // греческая буква A
Кафедра ОСУ, АВТФ46 Литералы Символьный литерал может содержать последовательность, начинающуюся с \ \b backspace BS – забой \t horizontal tab HT – табуляция \n linefeed LF – конец строки \f form feed FF – конец страницы \r carriage return CR – возврат каретки \" double quote " – двойная кавычка \' single quote ' – одинарная кавычка \\ backslash \ – обратная косая черта
Кафедра ОСУ, АВТФ47 Литералы Строковые литералы состоят из набора символов и записываются в двойных кавычках. Длина может быть нулевой или сколь угодно большой. Любой символ может быть представлен специальной последовательностью, начинающейся с \ "Hello, world!\r\nHello!"
Кафедра ОСУ, АВТФ48 Управляющие символы при выводе System.out.print(''\n'') System.out.println(''''); System.out.print(''Hello !! \n'') System.out.println(''Hello !! ''); В методе print() и println() используется оператор String concatenations « + ».
Кафедра ОСУ, АВТФ49 Управляющие символы при выводе int a=1, b=-2; System.out.print("a="); System.out.print(a); System.out.print(" b="); System.out.println(b); System.out.println("a="+a+" b="+b); String s1="Lecture in", s2=" Java"; String s=s1+s2;// string concatenation System.out.println(s);
Кафедра ОСУ, АВТФ50 Литералы Null-литерал может принимать всего одно значение: null Это литерал ссылочного типа, причем эта ссылка никуда не ссылается, объект отсутствует Разделители ( ) [ ] { } ;.,
Кафедра ОСУ, АВТФ51 Типы данных В Java-программе переменные должны быть описаны до их использования Синтаксис:, …;Тип int style, number; char answer; //2 байта double amount, inter = ;// 4 байта boolean b1=false; // 1байт final double pi=3.1415; // 8 байтов
Кафедра ОСУ, АВТФ52 Типы данных Кроме базовых типов данных широко используются соответствующие классы (wrapper – classes): Boolean, Character, Integer, Byte, Short, Long, Float, Double. Объекты этих классов могут хранить те же значения, что и соответствующие им базовые типы
Кафедра ОСУ, АВТФ53 Типы данных
Кафедра ОСУ, АВТФ54 Типы данных
Кафедра ОСУ, АВТФ55 Типы данных if (value >= Float.MIN_VALUE && value
Кафедра ОСУ, АВТФ56 Операторы присваивания class BasicMath {BasicMath public static void main(String args[]) { int a = 1 + 1; int b = a * 3; int c = b / 4; int d = b – а * Math.sqrt(4.0); int e = -d; …
Кафедра ОСУ, АВТФ57 Операторы присваивания } } //a = 2 b = 6 c = 1 d = 8 e = -4 В арифметических выражениях автоматически выполняются расширяющие преобразования типа byte short int long float double Для сужающих преобразований необходимо производить явное преобразование вида (тип) значение. Например:byte b=(byte)35;
Кафедра ОСУ, АВТФ58 Операторы присваивания class IncDec { public static void main(String args[]) { int a = 1; int b = 2; int c = ++b;
Кафедра ОСУ, АВТФ59 Операторы присваивания int d = a++; c++; … } //a = 2 b = 3 c = 4 d = 1 }
Кафедра ОСУ, АВТФ60 Examples class InvalidDef{ public static void main (String [] args) { int b1 = 50, b2 = -99; short k = b1 + b2; // Неверно! System.out.println("k=" + k); } } // short k = (short)(b1 + b2) ;
Кафедра ОСУ, АВТФ61 Условные операторы if (логическое выражение) оператор1; [ else оператор2;] Раздел else необязателен. На месте любого из операторов может стоять составной оператор(несколько операторов, заключенных в фигурные скобки). Логическое выражение это любое выражение, возвращающее значение типа boolean
Кафедра ОСУ, АВТФ62 Условный оператор 1. ; If ; else ; ;
Кафедра ОСУ, АВТФ63 Условный оператор TrueFalse
Кафедра ОСУ, АВТФ64 Условный оператор 1. ; If ;
Кафедра ОСУ, АВТФ65 Условный оператор TrueFalse
Кафедра ОСУ, АВТФ66 Условные операторы 1. if (a>b) y = a; else y = b; 2. int x = 5; if( x < 4) { System.out.println("Меньше 4"); } else if (x > 4) { System.out.println("Больше 4"); } else if (x == 4) { System.out.println("Равно 4"); } else{ System.out.println("Другое значение"); }
Кафедра ОСУ, АВТФ67 Условные операторы public class IfElseDemo { public static void main(String[] args) { int testscore = 76; char grade; if (testscore >= 90) { grade = 'A'; } else if (testscore >= 80) {grade = 'B'; } else if (testscore >= 70) { grade = 'C'; } else if (testscore >= 60) { grade = 'D'; } else { grade = 'F'; } System.out.println("Grade = " + grade); } }
Кафедра ОСУ, АВТФ68 Условные операторы ВычислитьВычислить корни квадратного уравнения ах 2 + bх + с = 0 для любых коэффициентов, в том числе и нулевых.
Кафедра ОСУ, АВТФ69 БулеваБулева алгебраалгебра … boolean a = true; boolean b = false; boolean с = a | b; boolean d = a & b; boolean e = a ^ b; boolean f = (!a & b) | (a & !b); double x1=Math.PI; double x2=Math.E;
Кафедра ОСУ, АВТФ70 БулеваБулева алгебраалгебра boolean b1 = (6-2) == 4; boolean b2 = 22/7 == 3+1/7.0 ; boolean b3 = 22/7 == 3+ 1/7; //1 true //2 false //3 true if b1&b2|!b3&(a==b) ….
Кафедра ОСУ, АВТФ71 Оператор Break В языке Java отсутствует оператор goto. Для того, чтобы в некоторых случаях заменять goto, в Java предусмотрен оператор break. Этот оператор сообщает исполняющей среде, что следует прекратить выполнение именованного блока и передать управление оператору, следующему за данным блоком. Т.е. выход из любого блока
Кафедра ОСУ, АВТФ72 Оператор Break Для именования блоков в языке Java используются метки. Оператор break при работе с циклами и в операторах switch может использоваться без метки. В таком случае подразумевается выход из текущего блока.
Кафедра ОСУ, АВТФ73 Метки Любой оператор, или блок, может иметь метку : | ; Метку можно указывать в качестве параметра для операторов break и continue. Область видимости метки ограничивается оператором, или блоком, к которому она относится.
Кафедра ОСУ, АВТФ74 Оператор Break
Кафедра ОСУ, АВТФ75 Оператор Break Например, в следующей программе имеется три вложенных блока, и у каждого своя уникальная метка. Оператор break, стоящий во внутреннем блоке, вызывает переход на оператор, следующий за блоком b.
Кафедра ОСУ, АВТФ76 Оператор Break public class Break { public static void main(String args[]) { boolean t = true; a: { // блок а b:{ //блок b c:{ //блок c System.out.println("Before the break"); if (t) break b; System.out.println("This won't execute"); // He будет выполнено } // end of c
Кафедра ОСУ, АВТФ77 Оператор Break System.out.println("This won't execute"); // He будет выполнено } //end of b System.out.println("This is after b"); } //end of a } } Вывод на экран: Before the break This is after b
Кафедра ОСУ, АВТФ78 Switch Оператор switch обеспечивает ясный способ переключения между различными частями программного кода в зависимости от значения одной переменной или выражения.
Кафедра ОСУ, АВТФ79 Switch switch(int value | выражение) { case const1: выражение или блок case const2: выражение или блок …. case constn: выражение или блок default: выражение или блок } В качестве параметра switch может использоваться переменная типа byte, short, int, char или выражение дающие эти типы
Кафедра ОСУ, АВТФ80 Switch int x = 2; switch(x) { case 1: case 2: System.out.println("Равно 1 или 2"); break;
Кафедра ОСУ, АВТФ81 Switch case 3: case 4: System.out.println("Равно 3 или 4"); break; default: System.out.println( "Значение не определено"); }
Кафедра ОСУ, АВТФ82 Switch public class SwitchDemo2 { public static void main(String[] args) { int month = 2; int year = 2016; int numDays = 0;
Кафедра ОСУ, АВТФ83 Switch switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: { numDays = 31; break;}
Кафедра ОСУ, АВТФ84 Switch case 4: case 6: case 9: case 11: {numDays = 30; break;}
Кафедра ОСУ, АВТФ85 Switch case 2: if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0) ) numDays = 29; else {numDays = 28; break; } } System.out.println("Number of Days = " + numDays); } }