Похожие презентации:
Платформа и язык программирования Java
1. Платформа и язык программирования
Java for autotesterswww.epam.com
www.epam.com
EPAM
EPAM Systems
Systems
2. Что такое Java?
• Java - это платформа и языкпрограммирования
• Основные особенности:
– Объектная ориентированность
– Переносимость
– Простота
– Безопасность
– Поддержка многопоточности
www.epam.com
EPAM Systems
2
3. История
• Авторы: Джеймс Гослинг (James Gosling), Патрик Ноутон (PatrickNaughton), Крис Варт (Chris Warth), Эд Франк (Ed Frank), Майк
Шеридан (Mike Sheridan), etc.
1991 – начало работы, первая версия – Oak
1995 – официальный релиз Java 1.0
1997 – Java 1.1
1999 – Java 1.2 (Java2)
2000 – Java2 1.3
2001 – Java2 1.4
2004 – Java 5.0
2006 – Java 6
2011 – Java 7
2014 – Java 8 ?
www.epam.com
EPAM Systems
3
4. Платформа Java
• Платформа Java отличается тем, что выполняетсяповерх других платформ и не зависит от
конкретной операционной системы
• Платформа Java состоит из двух компонентов:
– Виртуальная Java Машина (JVM)
– Интерфейсы прикладного программирования Java
(Java API)
• JVM – это основа платформы Java
• Существуют версии JVM для различных платформ
www.epam.com
EPAM Systems
4
5. Платформа Java
JavaEnterprise
Edition
Java
Standard
Edition
CDC
CLDC
Java Micro Edition
Java Card
Язык Java
Java Virtual Machine
www.epam.com
KVM
Card VM
EPAM Systems
5
6. Платформа Java
www.epam.comEPAM Systems
6
7. Особенности платформы
СвойстваДостоинства
Недостатки
Виртуальная машина
Кроссплатформенность
Скорость
Отсутствие прямой работы
с памятью
Уменьшение количества
ошибок
Скорость
Сборка мусора
Уменьшение количества
ошибок
Скорость
Байткод
Простота отладки,
рефлексия
Проблема защиты кода,
потеря скорости
JIT-компилятор
Увеличение скорости
Стандартная библиотека
Ускорение разработки,
уменьшение количества
кода
www.epam.com
EPAM Systems
7
8. Процесс разработки программного обеспечения
«Исходники»(Source)
App.java
Компилятор
(Java Compiler)
«Байт-код»
(Byte-code)
App.class
Среда исполнения
Java (Java Runtime
Environment)
Операционная
система (OS)
«Код ОС»
(Native code)
Виртуальная
машина Java (JVM)
Приложение (Application)
www.epam.com
EPAM Systems
8
9. Основы языка Java
Hello, world!
Переменные
Операции
Выражения и блоки
Операторы управления
Метод main
Комментарии
www.epam.com
EPAM Systems
9
10. Hello, world!
/*** This is our first Java class.
*/
public class HelloWorld {
public static void main(String[] args) {
// Just printing of text "Hello, world!"
System.out.println("Hello, world!");
}
}
www.epam.com
EPAM Systems
10
11. Терминология
• Алфавит - набор допустимых символов– Практически все символы Unicode
– Реально используют только ANSI символы
• Лексема (token) - неделимый элемент языка
– Отделяются пробелами и знаками препинания
• Идентификатор - лексема, обозначающая некоторый объект,
имеющий смысл
• Аналог слова в естественном языке
• Ключевое слово - идентификатор, зарезервированный языком
программирования
– Имеет некоторый специальный смысл
www.epam.com
EPAM Systems
11
12. Переменные
• Переменная – объект программы, имеющийимя, занимающий некоторый участок
памяти и хранящий некоторые данные
• У переменной есть
– Имя
– Тип
– Область видимости
тип имя = инициализатор;
www.epam.com
EPAM Systems
12
13. Типы данных
intint
int
int
count
count = 1;
count;
count;
• Тип данных переменной определяет:
– какие могут храниться значения
– какие можно выполнять операции
• Примитивные типы предопределены
в языке и обозначается ключевым словом
www.epam.com
EPAM Systems
13
14. Примитивные типы данных
ТипОписание
По умолчанию
byte
8-битное знаковое целое число. Значения от -128 до
127 (включительно).
0
short
16-битное знаковое целое число. Значения от -32768
до 32767 (включительно).
0
int
32-битное знаковое целое число. Значения от
-2147483648 до 2147483647 (включительно)
0
long
64-битное знаковое целое число. Значения от
-9223372036854775808 до 9223372036854775807
(включительно)
0L
float
32-битное число с плавающей точкой, соответствующее 0.0f
IEEE 754.
double
64-битное число с плавающей точкой двойной
точности, соответствующее IEEE 754.
0.0
boolean
Логический тип данных с двумя возможными
значениями: true и false
false
char
16-битный символ Unicode
‘\u0000’
www.epam.com
EPAM Systems
14
15. Ссылочные типы данных
• Остальные типы являются ссылочными• Значение ссылочной переменной
– может быть null
– может ссылаться на объект в куче
• Ссылка может быть на новый созданный объект (с
помощью оператора new):
Object
Object object
object == new
new Object();
Object();
• Или на уже существующий объект:
Object
Object reference
reference == object;
object;
www.epam.com
EPAM Systems
15
16. Типы данных
Типы данныхПримитивные
boolean
www.epam.com
char
Ссылочные
byte
float
Массивы
short
double
Классы
int
Интерфейсы
long
Перечисления
EPAM Systems
16
17. Именование переменных
• Имя переменной –последовательность из
латинских букв и цифр,
начинающаяся с буквы
– Могут также встречаться
подчеркивания, знак $,
буквы других алфавитов
• Чувствительно к
регистру
• Не должно совпадать с
ключевыми словами
www.epam.com
• count
• gearRatio
• currentValue
• gr
• ses
• c_r
• 1a
• s*s
• dd
Допустимо
Допустимо,
но
непонятно
Не
допустимо
EPAM Systems
17
18. Литералы (неименованные константы)
boolean result = true;char capitalC = 'C';
int i = 100000;
long l = 1L;
int decVal = 26;
int octVal = 032;
int hexVal = 0x1a;
int binVal = 0b1010;
double d1 = 123.4;
double d2 = 1.234e2;
float f1 = 123.4f;
String s1 = "Hello, World!";
String s2 = "S\u00ED se\u00F1or";
www.epam.com
EPAM Systems
18
19. Final переменные
Значение переменной примитивного типа,объявленной с модификатором final, нельзя
изменить.
final int myConst = 1;
myConst = 2; // ОШИБКА
Если переменная ссылочного типа объявлена
как final, то нельзя изменить значение ссылки,
но можно изменить состояние объекта, на
который ссылается переменная.
www.epam.com
EPAM Systems
19
20. Преобразование типов
АвтоматическоеЯвное
• Два типа совместимы
Формат:
• (target-type) value
• Целевой тип шире
исходного
• Выполняется
автоматически
• byte short int long float
double
www.epam.com
Пример:
• int a;
• byte b;
• b = (byte) a;
Усечение:
• int a;
• double b;
• a = (int) d;
EPAM Systems
20
21. Повышающие преобразования
charbyte
www.epam.com
short
int
long
float
double
EPAM Systems
21
22. Массивы
• Массив – это контейнерный объект, содержащийфиксированное количество значений одного типа
– Длина массива устанавливается при его создании (во время
выполнения)
– После создания длину массива изменить нельзя
• Элемент массива – это одно из значений в массиве, к
которому можно обратиться, используя его позицию внутри
массива - индекс элемента
– Нумерация элементов начинается с 0
www.epam.com
EPAM Systems
22
23. Массивы
• Неинициализированная ссылка на массивint[] array;
array;
• Создание массива
int[] array = new int[10];
• Доступ к элементам
array[0]
array[0] == 100;
100;
System.out.println("1st
System.out.println("1st element:
element: "" ++ array[0]);
array[0]);
www.epam.com
EPAM Systems
23
24. Массивы
• Инициализация при созданииint[]
int[] array
array == {100,
{100, 200,
200, 300,
300, 400,
400, 500,
500, 600};
600};
• Длина массива
int
int size
size == array.length;
array.length;
for
for (int
(int ii == 0;
0; ii << array.length;
array.length; i++)
i++) {{
System.out.println(array[i]);
System.out.println(array[i]);
}}
www.epam.com
EPAM Systems
24
25. Массивы
• Массивы могут быть многомернымиString[][] names
names == {{
{"Mr. ",
", "Mrs.
"Mrs. ",
", "Ms.
"Ms. "},
"},
{"Smith",
{"Smith", "Jones"},
"Jones"},
};
• Копирование массивов – это стандартная операция
public static void arraycopy(Object src,
int srcIndex,
Object dest,
int destIndex,
int length)
www.epam.com
EPAM Systems
25
26. Перебор элементов массива
int[]int[] array
array == {100,
{100, 200,
200, 300,
300, 400,
400, 500,
500, 600,
600, 700};
700};
for
for (int
(int ii == 0;
0; ii << array.length;
array.length; i++)
i++) {{
System.out.println(array[i]);
System.out.println(array[i]);
}}
for
for (int
(int value
value :: array)
array) {{
System.out.println(value);
System.out.println(value);
}}
www.epam.com
EPAM Systems
26
27. Операции
Приоритет операцийexpr++ expr-постфиксные
++expr --expr +expr -expr
унарные
* / %
мультипликативные
+ аддитивные
<< >> >>>
сдвиговые
< > <= >= instanceof
относительные
== !=
сравнения
&
побитовое И (AND)
побитовое исключающее ИЛИ (XOR) ^
побитовое включающее ИЛИ (OR)
логическое И (AND)
логическое ИЛИ (OR)
тернарная
присваивания
www.epam.com
|
&&
||
? :
= += -= *= /=
<<= >>= >>>=
%=
&=
~
^=
!
|=
EPAM Systems
27
28. Операторы ветвления и цикла
Операторы, позволяющие изменятьпоследовательный порядок выполнения
программ (создавая циклы и организовывая
ветвления):
• операторы ветвления (if-then, if-then-else,
switch)
• операторы цикла (for, while, do-while)
• операторы перехода (break, continue, return)
www.epam.com
EPAM Systems
28
29. Оператор if-then
if (условие)(условие) {
//
// операторы,
операторы, выполняемые
выполняемые
//
// если
если условие
условие истинно
истинно
}
if (isMoving)
(isMoving) {
//
// Если
Если велосипед
велосипед движется
движется
//
// уменьшить
уменьшить его
его скорость
скорость
currentSpeed--;
currentSpeed--;
}
www.epam.com
EPAM Systems
29
30. Оператор if-then-else
ifif (условие)
(условие) {{
//
// операторы,
операторы, выполняемые
выполняемые
//
// если
если условие
условие истинно
истинно
}} else
else {{
//
// операторы,
операторы, выполняемые
выполняемые
//
// если
если условие
условие ложно
ложно
}}
if
if (isMoving)
(isMoving) {{
currentSpeed--;
currentSpeed--;
}} else
else {{
System.err.println("The
System.err.println("The bicycle
bicycle ""
++ "has
"has already
already stopped!");
stopped!");
}}
www.epam.com
EPAM Systems
30
31. Оператор if-then-else
if (testscore >= 90)grade = 'A';
} else if (testscore
grade = 'B';
} else if (testscore
grade = 'C';
} else if (testscore
grade = 'D';
} else if (testscore
grade = 'E';
} else {
grade = 'F';
}
www.epam.com
{
>= 80) {
>= 70) {
>= 60) {
>= 50) {
EPAM Systems
31
32. Оператор switch
switchswitch (place)
(place) {{
case
case 1:
1:
medal
medal == "Gold";
"Gold";
break;
break;
case
case 2:
2:
medal
medal == "Silver";
"Silver";
break;
break;
case
case 3:
3:
medal
medal == "Bronze";
"Bronze";
break;
break;
default:
default:
medal
medal == "No
"No medal";
medal";
break;
break;
}}
www.epam.com
EPAM Systems
32
33. Оператор ? : (Тернарная операция)
условие? значение_если_истина
значение_если_истина
: значение_если_ложь
значение_если_ложь
int
int max
max == xx >> yy ?? xx :: y;
y;
if
if (x
(x >> y)
y) {{
max
max == x;
x;
}} else
else {{
max
max == y;
y;
}}
int
int aa == xx >> ((y
((y !=
!= 0)
0) ?? yy :: 1)
1)
?? (y
(y -- 22 >> 0)
0) ?? yy -- 22 :: -- (y
(y -- 2)
2) :: 0;
0;
www.epam.com
EPAM Systems
33
34. Цикл while
while (условие)(условие) {{
//
// операторы
операторы тела
тела цикла
цикла
}
int count
count == 0;
0;
while (count
(count << 10)
10) {{
System.out.println("Count
System.out.println("Count is:
is: ""
+ count);
count);
count++;
count++;
}
www.epam.com
EPAM Systems
34
35. Цикл do-while
do {{//
// операторы
операторы тела
тела цикла
цикла
} while (условие);
(условие);
int count
count == 0;
0;
do {{
System.out.println("Count
System.out.println("Count is:
is: ""
+ count);
count);
count++;
count++;
} while (count
(count <=
<= 10);
10);
www.epam.com
EPAM Systems
35
36. Цикл for
for (инициализация;(инициализация;
условие;
условие;
изменение)
изменение) {{
//
// операторы
операторы тела
тела цикла
цикла
}
for
for (int
(int ii == 0;
0; ii << 10;
10; i++)
i++) {{
System.out.println("Count
System.out.println("Count is:
is: "" ++ i);
i);
}}
www.epam.com
EPAM Systems
36
37. Цикл for each
int[] numbers = {1, 2,6, 7,
3,
8,
4,
9,
5,
10};
for (int item : numbers) {
System.out.println("Count is: "
+ item);
}
www.epam.com
EPAM Systems
37
38. Оператор break
intint
searchfor = 12;
index = -1;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == searchfor) {
index = i;
break;
}
}
www.epam.com
EPAM Systems
38
39. Оператор continue
intfor
numPs = 0;
(int i = 0; i < max; i++) {
// Игнорируем все не p
if (searchMe.charAt(i) != 'p') {
continue;
}
// Выполняем обработку p
numPs++;
}
www.epam.com
EPAM Systems
39
40. Метод main
• В Java выполнение приложений начинается сметода main
public
public static
static void main(String[]
main(String[] args)
args)
• В приложении может быть несколько
методов main (по одному на класс)
• Аргументы командной строки, указанные
при запуске приложения доступны через
переменную args.
www.epam.com
EPAM Systems
40
41. Параметры командной строки
public static final void main(String[] args) {for (String arg : args) {
System.out.println(arg);
}
}
www.epam.com
EPAM Systems
41
42. Простой консольный ввод-вывод
publicpublic static
static final
final
Scanner
Scanner scanner
scanner
void
void main(String[]
main(String[] args)
args) {{
== new
new Scanner(System.in);
Scanner(System.in);
int
int ii == scanner.nextInt();
scanner.nextInt();
String
String text
text == scanner.next();
scanner.next();
System.out.println("Integer:
System.out.println("Integer: "" ++ i);
i);
System.out.println("String:
System.out.println("String: "" ++ text);
text);
System.err.println("This
System.err.println("This is
is error
error stream");
stream");
scanner.close();
scanner.close();
}}
www.epam.com
EPAM Systems
42
43. Комментарии
/* text *//** documentation */
// text
www.epam.com
EPAM Systems
43
44. Классы и объекты
• Класс – описание нового ссылочного типа– Содержит описание полей и методов
• Классы позволяют организовать приложение как
набор взаимодействующих объектов
• Объект (экземпляр) – переменная нового
ссылочного типа (класса)
– Поля характеризуют состояние объекта
– Методы обеспечивают поведение объекта
– Каждый объект уникален
www.epam.com
EPAM Systems
44
45. Пример класса
Модификаторыpublic
public class
class Point
Point
private
private double
double
private
private double
double
{{
x;
x;
y;
y;
public
public double
double getX()
getX() {{
return
return x;
x;
}}
public
public void
void setX(double
setX(double x)
x) {{
this.x
this.x == x;
x;
}}
public
public double
double getY()
getY() {{
return
return y;
y;
}}
public
public void
void setY(double
setY(double y)
y) {{
this.y
this.y == y;
y;
}}
Имя класса
Поля
Методы
}}
www.epam.com
EPAM Systems
45
46. Пример использования класса
Point point = new Point();point.setX(0.0);
Ошибка!
point.setY(1.0);
point.x = 1.0; // Ошибка
System.out.println("(" + point.getX() + ", "
+ point.getY() + ")");
www.epam.com
EPAM Systems
46
47. Методы
Модификатордоступа
Тип
возвращаемого
значения
Название
Список
параметров
public double calculateAnswer(double wingSpan,
int numberOfEngines, double length,
double grossTons) throws SomeException {
// вычисления
}
Тело метода
www.epam.com
Список
исключений
EPAM Systems
47
48. Методы
• Название и список параметров составляютсигнатуру метода
• Примеры названий
– run
– runFast
– getBackground
– getFinalData
– compareTo
– isEmpty
www.epam.com
EPAM Systems
48
49. Перегрузка (Overloading) методов
• Могут существовать методы с одинаковым названием,но разной сигнатурой
public
public static
static void
void print()
print() {{
System.out.println("");
System.out.println("");
}}
public
public static
static void
void print(int
print(int i)
i) {{
System.out.println(i);
System.out.println(i);
}}
public
public static
static void
void print(String
print(String text)
text) {{
System.out.println(text);
System.out.println(text);
}}
public
public static
static final
final void
void main(String[]
main(String[] args)
args) {{
print();
print();
print(1);
print(1);
print("Hello");
print("Hello");
}}
www.epam.com
EPAM Systems
49
50. Конструкторы
• Конструктор по умолчаниюpublic Point() {
x = 0;
y = 0;
}
• Конструктор с параметрами
public Point(double x, double y) {
this.x = x;
this.y = y;
}
www.epam.com
EPAM Systems
50
51. Передача параметров в методы
• Параметры в методы всегда передаютсяпо значению
– Изменения в методе примитивных параметров не
влияют на вызывающий код
– Изменения объекта, ссылка на который передается
в метод, будут доступны в вызывающем коде
– Если изменить ссылочный параметр (настроить
ссылку на другой объект) , то это не скажется на
вызывающем коде
www.epam.com
EPAM Systems
51
52. Методы с переменным числом параметров
• Определение методаpublic double sum(double... values) {
double sum = 0.0;
for (double v : values) {
sum += v;
}
return sum;
}
• Вызов метода
sum();
sum(1.0);
sum(1.0, 2.0);
sum(1.0, 2.0, 3.0);
www.epam.com
EPAM Systems
52
53. Оператор return
• В каждом методе, возвращающемнекоторое значение, должен быть хотя бы
один оператор возврата:
return выражение;
• Если типом возвращаемого значения
является void, то может присутствовать
такой оператор возврата:
return;
www.epam.com
EPAM Systems
53
54. Завершение работы метода
• Метод возвращает управление в код,которые его вызвал, если
– выполнены все операторы метода
– достигнут оператор return
– брошено исключение
www.epam.com
EPAM Systems
54
55. Создание объектов
• Объявление переменной• Инстанцирование (создание объекта)
• Инициализация
Point originOne = new Point(23, 94);
Rectangle rectOne = new Rectangle(originOne,
100, 200);
Rectangle rectTwo = new Rectangle(50, 100);
www.epam.com
EPAM Systems
55
56. Использование объектов
• Обращение к полям и методам– objectReference.fieldName
– objectReference.methodName(arguments);
– objectReference.methodName();
• Когда объект становится не нужным (на него
нет больше ссылок) он может быть собран
сборщиком мусора (garbage collector)
www.epam.com
EPAM Systems
56
57. Сборщик мусора
• Не нужно явно удалять объекты• Память, занятая неиспользуемыми объектами,
освобождается сборщиком мусора (garbage
collector)
• Сбор мусора происходит в фоновом режиме
– Нельзя точно сказать, когда именно будет
выполняться сборка
– Можно лишь рекомендовать запустить сборку
мусора (System.gc() или Runtime.getRuntime().gc())
www.epam.com
EPAM Systems
57
58. Ключевое слово this
• this – это ссылка на объект, для которого вызываетсяметод
• this определен только для нестатических методов
public Rectangle(int width, int height) {
this(0, 0, width, height);
}
public Rectangle(int x, int
int width,
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
www.epam.com
y,
int height) {
EPAM Systems
58
59. Спецификатор static
• Статические поляstatic int x;
MyClass.x = 5;
• Статические методы
static int method() { ... }
MyClass.method();
• Константы
static final int WIDTH = 800;
System.out.println(MyClass.WIDTH);
• Статический блок инициализации
static {
// операторы инициализации
}
www.epam.com
EPAM Systems
59
60. Спецификаторы
abstractКласс
Нельзя
инстанцировать
Можно
наследоваться
static
final
Только у вложенных
классов
У класса не может
иметь наследников
Метод Не имеет тела
Реализуется
в наследниках
Общий для всех
экземпляров класса
Нельзя
переопределять
(override)
в наследниках
Поле
Общее для всех
экземпляров класса
Константа
В случае ссылок
можно изменять
объект, на который
она ссылается
Не применим
www.epam.com
EPAM Systems
60
61. Пакеты
• Пакет – это группа связанных типов с защитойдоступа и управлением пространством имен
• Основные задачи:
– Логическая структура проекта
– Избежание конфликтов имен
• Правило:
– название пакета совпадает с названием папки
– структуры папок и пакетов совпадают
www.epam.com
EPAM Systems
61
62. Пакеты
• Объявление пакетаpackage com.epam.weather;
• Импорт пакета
import
import
import
import
java.io.IOException;
java.io.InputStreamReader;
java.io.Reader;
java.io.StringWriter;
• Правило для имен: доменное имя наоборот
– URL: www.epam.com
– Пакет: com.epam
www.epam.com
EPAM Systems
62
63. Пакеты
ПакетыКлассы
в пакете
www.epam.com
EPAM Systems
63
64. Пример класса
packagepackage com.epam.samples;
com.epam.samples;
import
import java.util.Date;
java.util.Date;
Пакет
Импорт классов
зависимостей
public
public class
class Person
Person {{
private
private final
final String
String name;
name;
private
private final
final Date
Date birthDate;
birthDate;
public
public Person(String
Person(String name,
name, Date
Date birthDate)
birthDate) {{
this.name
this.name == name;
name;
this.birthDate
this.birthDate == birthDate;
birthDate;
}}
Имя класса
Поля
Конструктор(ы)
public
public String
String getName()
getName() {{
return
return name;
name;
}}
public
public Date
Date getBirthDate()
getBirthDate() {{
return
return birthDate;
birthDate;
}}
Методы
}}
www.epam.com
EPAM Systems
64
65.
СПАСИБО ЗА ВНИМАНИЕ!ВОПРОСЫ?
Платформа и язык программирования
Author: Alexander Lotsmanov
E-mail: [email protected]
www.epam.com
EPAM Systems
65