0% нашли этот документ полезным (0 голосов)
3 просмотров65 страниц

Java

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

Загружено:

raghssgariet
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
3 просмотров65 страниц

Java

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

Загружено:

raghssgariet
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd

Платформа и язык программирования

[Link]
[Link] EPAM
EPAM Systems
Systems
• Объектная ориентированность - не ОО программа на Java
выглядит совсем не естественно, кроме того присутствует
богатая библиотека стандартных компонентов

• Переносимость - написанный байткод может


выполняться на любой платформе (Windows, Linux)

• Простота - основан на синтаксисе C++, но не использует


его сложности

• Безопасность - сборка мусора позволяет во многих


случаях избежать утечек памяти

• Многопоточность - поддержка «из коробки»

[Link] EPAM Systems


История
• Авторы: Джеймс Гослинг (James Gosling), Патрик Ноутон
(Patrick Naughton), Крис Варт (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 ?

[Link] EPAM Systems


3
Платформа Java

• Платформа Java отличается тем, что


выполняется поверх других платформ и не
зависит от конкретной операционной системы

• Платформа Java состоит из двух компонентов:


– Виртуальная Java Машина (JVM)
– Интерфейсы прикладного программирования Java
(Java API)

• JVM – это основа платформы Java


• Существуют версии JVM для различных
платформ

[Link] EPAM Systems


4
Платформа Java

Java
Java
Enterprise CDC
Standard CLDC
Edition
Edition
Java Micro Edition Java Card

Язык Java

Java Virtual Machine KVM Card VM

[Link] EPAM Systems


5
Платформа Java

[Link] EPAM Systems


6
Особенности платформы

Свойства Достоинства Недостатки


Виртуальная машина Кроссплатформенность Скорость
Отсутствие прямой работы Уменьшение количества Скорость
с памятью ошибок
Сборка мусора Уменьшение количества Скорость
ошибок
Байткод Простота отладки, Проблема защиты кода,
рефлексия потеря скорости
JIT-компилятор Увеличение скорости
Стандартная библиотека Ускорение разработки,
уменьшение количества
кода

[Link] EPAM Systems


7
Процесс разработки программного обеспечения

«Исходники» «Байт-код»
Компилятор
(Source) (Byte-code)
(Java Compiler)
[Link] [Link]

Среда исполнения
Java (Java Runtime
Environment)

Виртуальная
Операционная «Код ОС»
машина Java (JVM)
система (OS) (Native code)

Приложение (Application)

[Link] EPAM Systems


8
Основы языка Java

• Hello, world!
• Переменные
• Операции
• Выражения и блоки
• Операторы управления
• Метод main
• Комментарии

[Link] EPAM Systems


9
Hello, world!

/**
* This is our first Java class.
*/
public class HelloWorld {

public static void main(String[] args) {


// Just printing of text "Hello, world!"
[Link]("Hello, world!");
}
}

[Link] EPAM Systems


10
Терминология
• Алфавит - набор допустимых символов
– Практически все символы Unicode
– Реально используют только ANSI символы

• Лексема (token) - неделимый элемент языка


– Отделяются пробелами и знаками препинания

• Идентификатор - лексема, обозначающая некоторый


объект, имеющий смысл
• Аналог слова в естественном языке

• Ключевое слово - идентификатор,


зарезервированный языком программирования
– Имеет некоторый специальный смысл

[Link] EPAM Systems


11
Переменные

• Переменная – объект программы, имеющий


имя, занимающий некоторый участок
памяти и хранящий некоторые данные

• У переменной есть
– Имя
– Тип
– Область видимости

тип имя = инициализатор;

[Link] EPAM Systems


12
Типы данных

int count = 1;
int count;

• Тип данных переменной определяет:


– какие могут храниться значения
– какие можно выполнять операции

• Примитивные типы предопределены


в языке и обозначается ключевым словом

[Link] EPAM Systems


13
Примитивные типы данных
Тип Описание По умолчанию
byte 8-битное знаковое целое число. Значения от -128 до 0
127 (включительно).
short 16-битное знаковое целое число. Значения от -32768 0
до 32767 (включительно).
int 32-битное знаковое целое число. Значения от - 0
2147483648 до 2147483647 (включительно)
long 64-битное знаковое целое число. Значения от 0L
-9223372036854775808 до 9223372036854775807
(включительно)
float 32-битное число с плавающей точкой, 0.0f
соответствующее IEEE 754.
double 64-битное число с плавающей точкой двойной 0.0
точности, соответствующее IEEE 754.
boolean Логический тип данных с двумя возможными false
значениями: true и false
char 16-битный символ Unicode ‘\u0000’
[Link] EPAM Systems
14
Ссылочные типы данных
• Остальные типы являются ссылочными

• Значение ссылочной переменной


– может быть null
– может ссылаться на объект в куче

• Ссылка может быть на новый созданный объект (с


помощью оператора new):
Object object = new Object();

• Или на уже существующий объект:


Object reference = object;

[Link] EPAM Systems


15
Типы данных
Типы данных

Примитивные Ссылочные

boolean char byte float Массивы

short double Классы

int Интерфейсы

long Перечисления

[Link] EPAM Systems


16
Именование переменных
• Имя переменной – • count
последовательность из • gearRatio Допустимо

латинских букв и цифр, • currentValue


начинающаяся с буквы
– Могут также встречаться
подчеркивания, знак $, • gr
Допустимо,
буквы других алфавитов • ses но
непонятно
• c_r
• Чувствительно к
регистру
• 1a
• s*s Не
допустимо
• Не должно совпадать с
• dd
ключевыми словами
[Link] EPAM Systems
17
Литералы (неименованные константы)
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";
[Link] EPAM Systems
18
Final переменные

Значение переменной примитивного типа,


объявленной с модификатором final, нельзя
изменить.
final int myConst = 1;
myConst = 2; // ОШИБКА

Если переменная ссылочного типа объявлена


как final, то нельзя изменить значение ссылки,
но можно изменить состояние объекта, на
который ссылается переменная.
[Link] EPAM Systems
19
Преобразование типов

Автоматическое Явное
• Два типа совместимы Формат:
• (target-type) value

• Целевой тип шире


Пример:
исходного
• int a;
• byte b;
• Выполняется • b = (byte) a;
автоматически
Усечение:
• byte → short → int → long • int a;
→ float → double • double b;
• a = (int) d;

[Link] EPAM Systems


20
Повышающие преобразования

char

byte short int long

float double

[Link] EPAM Systems


21
Массивы
• Массив – это контейнерный объект, содержащий
фиксированное количество значений одного типа
– Длина массива устанавливается при его создании (во время
выполнения)
– После создания длину массива изменить нельзя
• Элемент массива – это одно из значений в массиве, к
которому можно обратиться, используя его позицию внутри
массива - индекс элемента
– Нумерация элементов начинается с 0

[Link] EPAM Systems


22
Массивы

• Неинициализированная ссылка на массив

int[] array;

• Создание массива

int[] array = new int[10];

• Доступ к элементам
array[0] = 100;
[Link]("1st element: " + array[0]);

[Link] EPAM Systems


23
Массивы

• Инициализация при создании

int[] array = {100, 200, 300, 400, 500, 600};

• Длина массива
int size = [Link];

for (int i = 0; i < [Link]; i++) {


[Link](array[i]);
}

[Link] EPAM Systems


24
Массивы
• Массивы могут быть многомерными
String[][] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"},
};

• Копирование массивов – это стандартная операция


public static void arraycopy(Object src,
int srcIndex,
Object dest,
int destIndex,
int length)

[Link] EPAM Systems


25
Перебор элементов массива

int[] array = {100, 200, 300, 400, 500, 600, 700};

for (int i = 0; i < [Link]; i++) {


[Link](array[i]);
}

for (int value : array) {


[Link](value);
}

[Link] EPAM Systems


26
Операции
Приоритет операций
постфиксные expr++ expr--
унарные ++expr --expr +expr -expr ~ !
мультипликативные * / %
аддитивные + -
сдвиговые << >> >>>
относительные < > <= >= instanceof
сравнения == !=
побитовое И (AND) &
побитовое исключающее ИЛИ (XOR) ^
побитовое включающее ИЛИ (OR) |
логическое И (AND) &&
логическое ИЛИ (OR) ||
тернарная ? :
присваивания = += -= *= /= %= &= ^= |=
<<= >>= >>>=

[Link] EPAM Systems


27
Операторы ветвления и цикла

Операторы, позволяющие изменять


последовательный порядок выполнения
программ (создавая циклы и организовывая
ветвления):
• операторы ветвления (if-then, if-then-else,
switch)
• операторы цикла (for, while, do-while)
• операторы перехода (break, continue, return)

[Link] EPAM Systems


28
Оператор if-then

if (условие) {
// операторы, выполняемые
// если условие истинно
}

if (isMoving) {
// Если велосипед движется
// уменьшить его скорость
currentSpeed--;
}

[Link] EPAM Systems


29
Оператор if-then-else
if (условие) {
// операторы, выполняемые
// если условие истинно
} else {
// операторы, выполняемые
// если условие ложно
}

if (isMoving) {
currentSpeed--;
} else {
[Link]("The bicycle "
+ "has already stopped!");
}
[Link] EPAM Systems
30
Оператор if-then-else

if (testscore >= 90) {


grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else if (testscore >= 50) {
grade = 'E';
} else {
grade = 'F';
}
[Link] EPAM Systems
31
Оператор switch

switch (place) {
case 1:
medal = "Gold";
break;
case 2:
medal = "Silver";
break;
case 3:
medal = "Bronze";
break;
default:
medal = "No medal";
break;
}

[Link] EPAM Systems


32
Оператор ? : (Тернарная операция)
условие
? значение_если_истина
: значение_если_ложь
int max = x > y ? x : y;

if (x > y) {
max = x;
} else {
max = y;
}

int a = x > ((y != 0) ? y : 1)


? (y - 2 > 0) ? y - 2 : - (y - 2) : 0;

[Link] EPAM Systems


33
Цикл while

while (условие) {
// операторы тела цикла
}

int count = 0;
while (count < 10) {
[Link]("Count is: "
+ count);
count++;
}

[Link] EPAM Systems


34
Цикл do-while

do {
// операторы тела цикла
} while (условие);

int count = 0;
do {
[Link]("Count is: "
+ count);
count++;
} while (count <= 10);

[Link] EPAM Systems


35
Цикл for

for (инициализация;
условие;
изменение) {
// операторы тела цикла
}

for (int i = 0; i < 10; i++) {


[Link]("Count is: " + i);
}

[Link] EPAM Systems


36
Цикл for each

int[] numbers = {1, 2, 3, 4, 5,


6, 7, 8, 9, 10};

for (int item : numbers) {


[Link]("Count is: "
+ item);
}

[Link] EPAM Systems


37
Оператор break

int searchfor = 12;


int index = -1;

for (int i = 0; i < [Link]; i++) {


if (numbers[i] == searchfor) {
index = i;
break;
}
}

[Link] EPAM Systems


38
Оператор continue

int numPs = 0;
for (int i = 0; i < max; i++) {
// Игнорируем все не p
if ([Link](i) != 'p') {
continue;
}
// Выполняем обработку p
numPs++;
}

[Link] EPAM Systems


39
Метод main

• В Java выполнение приложений начинается с


метода main
public static void main(String[] args)

• В приложении может быть несколько


методов main (по одному на класс)
• Аргументы командной строки, указанные
при запуске приложения доступны через
переменную args.

[Link] EPAM Systems


40
Параметры командной строки

public static final void main(String[] args) {


for (String arg : args) {
[Link](arg);
}
}

[Link] EPAM Systems


41
Простой консольный ввод-вывод

public static final void main(String[] args) {


Scanner scanner = new Scanner([Link]);

int i = [Link]();
String text = [Link]();

[Link]("Integer: " + i);


[Link]("String: " + text);

[Link]("This is error stream");

[Link]();
}

[Link] EPAM Systems


42
Комментарии

/* text */

/** documentation */

// text

[Link] EPAM Systems


43
Классы и объекты
• Класс – описание нового ссылочного типа
– Содержит описание полей и методов

• Классы позволяют организовать приложение


как набор взаимодействующих объектов

• Объект (экземпляр) – переменная нового


ссылочного типа (класса)
– Поля характеризуют состояние объекта
– Методы обеспечивают поведение объекта
– Каждый объект уникален

[Link] EPAM Systems


44
Пример класса
Модификаторы Имя класса

public class Point {


private double x;
private double y; Поля

public double getX() {


return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() { Методы
return y;
}
public void setY(double y) {
this.y = y;
}
}

[Link] EPAM Systems


45
Пример использования класса
Point point = new Point();

[Link](0.0);
Ошибка!
[Link](1.0);

point.x = 1.0; // Ошибка

[Link]("(" + [Link]() + ", "


+ [Link]() + ")");

[Link] EPAM Systems


46
Методы

Тип
Модификатор Список
возвращаемого Название
доступа параметров
значения

public double calculateAnswer(double wingSpan,


int numberOfEngines, double length,
double grossTons) throws SomeException {
// вычисления
}
Список
Тело метода исключений

[Link] EPAM Systems


47
Методы

• Название и список параметров составляют


сигнатуру метода

• Примеры названий
– run
– runFast
– getBackground
– getFinalData
– compareTo
– isEmpty
[Link] EPAM Systems
48
Перегрузка (Overloading) методов
• Могут существовать методы с одинаковым названием,
но разной сигнатурой
public static void print() {
[Link]("");
}

public static void print(int i) {


[Link](i);
}

public static void print(String text) {


[Link](text);
}

public static final void main(String[] args) {


print();
print(1);
print("Hello");
}
[Link] EPAM Systems
49
Конструкторы
• Конструктор по умолчанию
public Point() {
x = 0;
y = 0;
}

• Конструктор с параметрами
public Point(double x, double y) {
this.x = x;
this.y = y;
}
[Link] EPAM Systems
50
Передача параметров в методы
• Параметры в методы всегда передаются
по значению
– Изменения в методе примитивных параметров
не влияют на вызывающий код

– Изменения объекта, ссылка на который


передается в метод, будут доступны в
вызывающем коде

– Если изменить ссылочный параметр (настроить


ссылку на другой объект) , то это не скажется на
вызывающем коде

[Link] EPAM Systems


51
Методы с переменным числом параметров
• Определение метода
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);

[Link] EPAM Systems


52
Оператор return

• В каждом методе, возвращающем


некоторое значение, должен быть хотя бы
один оператор возврата:
return выражение;

• Если типом возвращаемого значения


является void, то может присутствовать
такой оператор возврата:
return;

[Link] EPAM Systems


53
Завершение работы метода

• Метод возвращает управление в код,


которые его вызвал, если

– выполнены все операторы метода

– достигнут оператор return

– брошено исключение

[Link] EPAM Systems


54
Создание объектов

• Объявление переменной
• Инстанцирование (создание объекта)
• Инициализация

Point originOne = new Point(23, 94);

Rectangle rectOne = new Rectangle(originOne,


100, 200);

Rectangle rectTwo = new Rectangle(50, 100);

[Link] EPAM Systems


55
Использование объектов

• Обращение к полям и методам


– [Link]
– [Link](arguments);
– [Link]();

• Когда объект становится не нужным (на него


нет больше ссылок) он может быть собран
сборщиком мусора (garbage collector)

[Link] EPAM Systems


56
Сборщик мусора
• Не нужно явно удалять объекты

• Память, занятая неиспользуемыми объектами,


освобождается сборщиком мусора (garbage
collector)

• Сбор мусора происходит в фоновом режиме


– Нельзя точно сказать, когда именно будет
выполняться сборка
– Можно лишь рекомендовать запустить сборку
мусора ([Link]() или [Link]().gc())
[Link] EPAM Systems
57
Ключевое слово this
• this – это ссылка на объект, для которого вызывается
метод
• this определен только для нестатических методов
public Rectangle(int width, int height) {
this(0, 0, width, height);
}

public Rectangle(int x, int y,


int width, int height) {
this.x = x;
this.y = y;
[Link] = width;
[Link] = height;
}
[Link] EPAM Systems
58
Спецификатор static
• Статические поля
static int x;
MyClass.x = 5;

• Статические методы
static int method() { ... }
[Link]();

• Константы
static final int WIDTH = 800;
[Link]([Link]);

• Статический блок инициализации


static {
// операторы инициализации
}

[Link] EPAM Systems


59
Спецификаторы

abstract static final


Класс Нельзя Только у вложенных У класса не может
инстанцировать классов иметь наследников
Можно
наследоваться
Метод Не имеет тела Общий для всех Нельзя
Реализуется экземпляров класса переопределять
в наследниках (override)
в наследниках
Поле Не применим Общее для всех Константа
экземпляров класса В случае ссылок
можно изменять
объект, на который
она ссылается

[Link] EPAM Systems


60
Пакеты
• Пакет – это группа связанных типов с защитой
доступа и управлением пространством имен

• Основные задачи:
– Логическая структура проекта
– Избежание конфликтов имен

• Правило:
– название пакета совпадает с названием папки
– структуры папок и пакетов совпадают

[Link] EPAM Systems


61
Пакеты
• Объявление пакета
package [Link];
• Импорт пакета
import [Link];
import [Link];
import [Link];
import [Link];

• Правило для имен: доменное имя наоборот


– URL: [Link]
– Пакет: [Link]

[Link] EPAM Systems


62
Пакеты

Пакеты

Классы
в пакете

[Link] EPAM Systems


63
Пример класса
Пакет
package [Link];
Импорт классов
import [Link]; зависимостей

public class Person { Имя класса


private final String name;
private final Date birthDate;
Поля
public Person(String name, Date birthDate) {
[Link] = name;
[Link] = birthDate;
}
Конструктор(ы)
public String getName() {
return name;
}

public Date getBirthDate() {


return birthDate; Методы
}
}

[Link] EPAM Systems


64
СПАСИБО ЗА ВНИМАНИЕ!

ВОПРОСЫ?
Платформа и язык программирования

Author: Alexander Lotsmanov


E-mail: Alexander_Lotsmanov@[Link]

[Link] EPAM Systems


65

Вам также может понравиться