Глухих Михаил Игоревич mailto:...

56
Глухих Михаил Игоревич mailto: [email protected]

Upload: others

Post on 26-Sep-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

Глухих Михаил Игоревичmailto: [email protected]

Page 2: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

Лекции, 2 часа в неделю◦ Отчётность – экзамен в конце семестра◦ Экзамен – собеседование по теории, с оценкой

Практика, 2 часа в неделю◦ Три задания, за каждое ставится оценка◦ Отчётность – курсовой проект с оценкой◦ Оценка за курсовой проект =

Сумма оценок за три задания / 3◦ «5» за курсовой проект до конца зачётной недели ➔ +1 балл к экзаменационной оценке

Самостоятельная работа студентов◦ Не менее 2-3 часов в неделю

2

Page 3: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

1. Проектирование класса (5 недель)◦ Язык = Java или Kotlin◦ Аттестация в первой половине марта

2. Консольное приложение (5 недель)◦ Язык = Java или Kotlin◦ Аттестация в середине апреля

3. GUI-приложение (6 недель)◦ Язык = Java или Kotlin◦ Курсовой проект◦ Защита в конце семестра (скорее всего в форме

беседы с преподавателем)◦ Отчёт по курсовому проекту

3

Page 4: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

JDK 1.8 или 1.9◦ Скачать с сайта Oracle и установить

Intellij IDEA Community Edition (бесплатна)◦ Скачать с сайта JetBrains и установить◦ Альтернативы: Eclipse, Netbeans

GitHub account◦ Рецензирование кода – исключительно там!◦ Оценивается, в том числе, аккуратность ведения

проекта на GitHub

JUnit (или другая библиотека тестирования)◦ Написание тестов обязательно!

4

Page 5: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

26

Структура лекций

Типы, операции, конструкции

Классы, интерфейсы, наследование

Коллекции и утилиты

GUI на Java: AWT, Swing, JavaFX

Многопоточные приложения на Java

Page 6: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

6

Литература

Ильдар Хабибуллин. Java 7. СПб.: БХВ-Петербург, 2012

Арнольд К., Гослинг Дж., Холмс Д. Язык программирования Java, 3-е издание. М.: Издательский дом «Вильямс», 2001.

James Gosling, Bill Joy, Guy Steele, Gilad Bracha. The Java Language Specification, Second Edition.

Joshua Bloch. Effective Java: Programming Language Guide, second edition. ISBN 978-0-321-35668-0, 2008.

Page 7: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

7

Полезные ссылки

Проект с примерами

https://github.com/Kotlin-Polytech/FromKotlinToJava

Страничка курса

http://kspt.icc.spbstu.ru/course/javaintro

Page 8: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

8

Java vs Kotlin

Kotlin

Уже частично изучен

Разработка идёт быстрее

Java

Лекции этого семестра про Java

Более востребован

Page 9: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

Версии Java SE

Java SE 1.10 – 2018 год, небольшие изменения в языке / библиотеке

Java SE 1.9 – 2017 год, аналогично

Java SE 1.8 – 2014 год, довольно существенные усовершенствования

Java SE 1.7 – 2011 год, ряд небольших изменений в языке

Java SE 1.6 – 2006 год

9

Page 10: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

10

Простейшая программа на Java (1, hello world)

// Hello.java

package test;

public class Hello {

public static void main(String[] args) {

System.out.println("Здравствуй, мир!");

}

}

Page 11: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

11

Простейшая программа на Java (2, square)

// Math.java

package test;

public class Math {

public static int sqr(int x) {

int y = x * x;

return y;

}

}

Page 12: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

12

Классы в Java

Класс – структурный элемент программы

По правилам Java, все прочие элементы программы должны находится внутри классов

ООП – класс описывает какой-либо объект / понятие и объединяет в себе данные и функции для работы с ними

Page 13: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

13

Классы в Java

Класс – структурный элемент программы

По правилам Java, все прочие элементы программы должны находится внутри классов

ООП – класс описывает какой-либо объект / понятие и объединяет в себе данные и функции для работы с ними

Java: класс = поля + методы

Kotlin: класс = свойства + функции

Page 14: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

14

Функции vs Методы

Приблизительно одно и то же

Методы ~ Функции класса

Так как в Java все функции принадлежат классам ➔ Методы

Page 15: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

15

Поля vs Свойства

РАЗНЫЕ вещи

Поле = Член-данное класса

Page 16: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

16

Поля vs Свойства

РАЗНЫЕ вещи

Поле = Член-данное класса

Свойство = что-то в классе, что можно читать (опционально также писать)

В том числе поле!

Page 17: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

17

Поля vs Свойства

РАЗНЫЕ вещи

Поле = Член-данное класса

Свойство = что-то в классе, что можно читать (опционально также писать)

В том числе поле!

Не факт, что значение свойства где-то хранится!

Page 18: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

18

Поля vs Свойства

Пример – Планета

Планета описывается массой и радиусом –это поля класса «Планета»

Page 19: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

19

Поля vs Свойства

Пример – Планета

Планета описывается массой и радиусом –это поля класса «Планета»

На их основе можно рассчитать ускорение свободного падения на поверхности – это свойство класса «Планета»

Page 20: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

20

Видимость в Java

public – класс (метод, поле) видят все

(no modifier) – класс (метод, поле) видят все в том же пакете (package private)

Page 21: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

21

Видимость в Java

public – класс (метод, поле) видят все

(no modifier) – класс (метод, поле) видят все в том же пакете (package private)

private –метод / поле видят все внутри класса

Page 22: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

22

Видимость в Kotlin

(no modifier) – видят все

private – видят все внутри класса

Page 23: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

23

Статические и обычные методы класса

Отличаются наличием (или отсутствием) модификатора static

Статические методы

~ замена глобальных

Вызов: Math.sqr, где Math – имя класса

Нестатические методы

Привязаны к конкретному объекту и вызываются через него

Вызов: list.size()

Page 24: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

24

Типы в Kotlin / Java

Kotlin

val (var) name: (Type) (= …) (;)

Java

Type name (= …);

JDK 10+:

var name = …;

Page 25: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

25

Типы в Java

Примитивные

Называются с маленькой буквы

byte, short, int, long, float, double, char, boolean

Page 26: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

26

Типы в Java

Примитивные

Называются с маленькой буквы

byte, short, int, long, float, double, char, boolean

Ссылочные

Все остальные, называются с большой буквы

Page 27: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

27

Типы в Java

Примитивные

Называются с маленькой буквы

byte, short, int, long, float, double, char, boolean

Ссылочные

Все остальные, называются с большой буквы

Kotlin

Все типы ссылочные или притворяются ими

Page 28: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

28

Типы-обёртки в Java

Ссылочные аналоги примитивных типов

Byte, Short, Integer, Long, Float, Double, Character, Boolean

Page 29: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

29

Примитивные типы

Целые

◼ byte (1 байт, -128...127)

◼ short (2 байта, -32768...32767)

◼ int (4 байта, -231...231-1)

◼ long (8 байт, -263...263-1)

Page 30: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

30

Примитивные типы

Целые

◼ byte (1 байт, -128...127)

◼ short (2 байта, -32768...32767)

◼ int (4 байта, -231...231-1)

◼ long (8 байт, -263...263-1)

Вещественные

◼ float (4 байта)

◼ double (8 байт)

Page 31: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

31

Примитивные типы

Целые

◼ byte (1 байт, -128...127)

◼ short (2 байта, -32768...32767)

◼ int (4 байта, -231...231-1)

◼ long (8 байт, -263...263-1)

Вещественные

◼ float (4 байта)

◼ double (8 байт)

Символьный

◼ char (2 байта, Unicode, 0...65535)

Page 32: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

32

Примитивные типы

Целые

◼ byte (1 байт, -128...127)

◼ short (2 байта, -32768...32767)

◼ int (4 байта, -231...231-1)

◼ long (8 байт, -263...263-1)

Вещественные

◼ float (4 байта)

◼ double (8 байт)

Символьный

◼ char (2 байта, Unicode, 0...65535)

Логический

◼ boolean (true или false)

Page 33: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

33

Константы

Целые

◼ 57, +323, -48 (десятичная форма, 4 байта)

◼ 024, -0634, 0777 (восьмеричная форма)

◼ 0xabcd, -0x19f (шестнадцатеричная форма)

◼ 0b010001001 (двоичная форма, только JDK 7+)

◼ 43_934 (форма с _, только в JDK 7+)

◼ 1234567890123L, 0xabcdef1234L (8-байтные)

Page 34: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

34

Константы

Целые

◼ 57, +323, -48 (десятичная форма, 4 байта)

◼ 024, -0634, 0777 (восьмеричная форма)

◼ 0xabcd, -0x19f (шестнадцатеричная форма)

◼ 0b010001001 (двоичная форма, только JDK 7+)

◼ 43_934 (форма с _, только в JDK 7+)

◼ 1234567890123L, 0xabcdef1234L (8-байтные)

Вещественные

◼ 37.29, -19.41 (обычная форма, 8 байт)

◼ 3e+12, -1.1e-7 (экспоненциальная форма)

◼ 3.6F, -1.0e-1F (4-байтные)

Page 35: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

35

Константы

Символьные

◼ 'a', '?', ' ', '\n', '\t', '\\' (обычный вариант)

◼ '\40', '\62' – восьмеричный код

◼ '\u0053' – юникод

Page 36: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

36

Константы

Символьные

◼ 'a', '?', ' ', '\n', '\t', '\\' (обычный вариант)

◼ '\40', '\62' – восьмеричный код

◼ '\u0053' – юникод

Строковые

◼ "Hello, world\n"

◼ "Сложение " + "строк"

◼ Нет строковых шаблонов: "Hello $name"

Page 37: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

37

Операции

Арифметические: + - * / % ++ --

Page 38: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

38

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Page 39: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

39

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Page 40: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

40

Операции сравнения: Java vs Kotlin

Kotlin

a == b сравнение значений

a === b сравнение ссылок

Java

a.equals(b) сравнение значений

a == b сравнение ссылок

Page 41: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

41

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Побитовые: ~ & | ^

Page 42: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

42

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Побитовые: ~ & | ^

Сдвиговые: << >> >>>

Page 43: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

43

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Побитовые: ~ & | ^

Сдвиговые: << >> >>>

Присваивания: = += -= *= /= %= &= |= ^= <<= >>= >>>=

Page 44: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

44

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Побитовые: ~ & | ^

Сдвиговые: << >> >>>

Присваивания: = += -= *= /= %= &= |= ^= <<= >>= >>>=

Условная: a > b ? a : b

Page 45: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

45

Операции

Арифметические: + - * / % ++ --

Логические: & && | || ^ !

Сравнения: > < >= <= == !=

Побитовые: ~ & | ^

Сдвиговые: << >> >>>

Присваивания: = += -= *= /= %= &= |= ^= <<= >>= >>>=

Условная: a > b ? a : b

Приведения типа: int a = (int)2.5

Page 46: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

46

Ветвления

if … else … -- как в Котлин

НО! Нельзя использовать как выражение

вместо этого есть a ? b : c

Page 47: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

47

Ветвления

switch … case …

Как when в Kotlin, но меньше возможностейswitch (someInt) {

case 1:...break;

default:...break;

}

Page 48: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

48

Ключи в switch

Только

Целые числа

Символы

Элементы перечисления (enum)

Строки (только в JDK 7+)

Page 49: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

49

Циклы

while (…) { … }

как в Котлине

Page 50: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

50

Циклы

while (…) { … }

как в Котлине

do { … } while (…)

~ как в Котлине

Page 51: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

51

Циклы

while (…) { … }

как в Котлине

do { … } while (…)

~ как в Котлине

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

Page 52: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

52

Циклы

while (…) { … }

как в Котлине

do { … } while (…)

~ как в Котлине

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

for (String element: listOfStrings) { … }

Page 53: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

53

Циклы

while (…) { … }

как в Котлине

do { … } while (…)

~ как в Котлине

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

for (String element: listOfStrings) { … }

break, continue

Page 54: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

54

Строки

Тип String

В основном как в Котлине

Сложение +

Сравнение equals (!)

Page 55: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

55

Массивы

Тип массива в Java обозначается как T[], где T – базовый тип

например, int[], float[], double[], String[]

Создается массив следующим образом:

int[] arr = new int[10]; // с нулями

int[] arr = null; // нулевая ссылка

// начальные значения заданы

int[] arr2 = new int[] { 2, 3, 4 };

Page 56: Глухих Михаил Игоревич mailto: glukhikh@mailkspt.icc.spbstu.ru/media/files/2019/java/Java01.pdfJDK 1.8 или 1.9 Скачать с сайта Oracle и установить

56

Итоги

Рассмотрена

простейшая программа

примитивные типы

константы и операции

основные конструкции

Далее

проектирование классов