Введение в Java

Содержание

Слайд 2

Кафедра защищенных систем связи История Java BCPL B C Мартином Ричардсоном

Кафедра защищенных систем связи

История Java

BCPL

B

C

Мартином Ричардсоном был разработан

язык BCPL, основное предназначение которого заключалось в написании компиляторов.

1966 г.

Начало 70-х

BCPL повлиял на язык, получивший название B, который был изобретен Кеном Томпсоном и в начале 70-х гг. привел к появлению языка С.

1972 г.

Язык С изобретенный и впервые реализованным Деннисом Ритчи на компьютере DEC PDP-11, работающем под управлением операцион-ной системы UNIX.

Слайд 3

Кафедра защищенных систем связи История Java Мартин Ричардсон Кен Томпсон Деннис Ритчи

Кафедра защищенных систем связи

История Java

Мартин Ричардсон

Кен Томпсон

Деннис Ритчи

Слайд 4

Кафедра защищенных систем связи Отличия Java от С++

Кафедра защищенных систем связи

Отличия Java от С++

Слайд 5

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

Кафедра защищенных систем связи

Компиляция программ

Слайд 6

Кафедра защищенных систем связи Выполнение программ

Кафедра защищенных систем связи

Выполнение программ

Слайд 7

Кафедра защищенных систем связи Виртуальная машина Java Java Runtime Environment, сокращенно

Кафедра защищенных систем связи

Виртуальная машина Java

Java Runtime Environment, сокращенно JRE – это исполнительная среда Java в которой выполняются

программы.  JRE является частью JDK. Это минимальная реализация виртуальной машины, необходимая для исполнения Javaприложений, без компилятора и других средств разработки.

Java Virtual Machine, сокращенно JVM – это виртуальная машина Java — основная часть исполняющей среды JRE. Виртуальная машина Java интерпретирует и исполняет байт-код Java. Байт код получают посредством компиляции исходного кода программы с помощью компилятора Java. Библиотеки Java-классов входят в состав JRE.

Java Development Kit,  JDK – это комплект разработчика приложений на языке Java, включающий в себя компилятор Java, стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

Слайд 8

Кафедра защищенных систем связи Код виртуальной машины (bytecode) – это в

Кафедра защищенных систем связи

Код виртуальной машины (bytecode) – это в

высшей степени оптимизированный набор инструкций, предназначенных для исполнения системой времени выполнения Java, называемой виртуальной машиной Java.

Код виртуальной машины

Виртуальная машина Java

Трансляция программы Java в код виртуальной машины значительно упрощает ее выполнение в широком множестве сред, поскольку на каждой платформе необходимо реализовать только JVM.

Слайд 9

Кафедра защищенных систем связи Код Java и его Bytecode (мнемоническое представление)

Кафедра защищенных систем связи

Код Java и его Bytecode (мнемоническое представление)

Public class

Foo {
Private String bar;
Public String getBar(){
return bar;
}
Public void setBar(String bar){
this.bar=bar;
}
}

public class Foo extends java.lang.Object{
public Foo();
Code:
0:aload_0
1:invokespeciel
4: return
public java.lang.String getbar();
Code: 0: aload_0
1:getfield
4: areturn
public void setBar(java.lang.String);
Code:
0: alomd_0
1: aload_l
2: putfield
5: return

Слайд 10

Кафедра защищенных систем связи Типы данных Примитивные типы Java не являются

Кафедра защищенных систем связи

Типы данных

Примитивные типы Java не являются объектами.

К ним относятся:
boolean - булев тип, может иметь значения true или false
byte - 8-разрядное целое число
short - 16-разрядное целое число
int - 32-разрядное целое число
long - 64-разрядное целое число
char - 16-разрядное беззнаковое целое, представляющее собой символ UTF-16 (буквы и цифры)
float - 32-разрядное число в формате IEEE 754 с плавающей точкой
double - 64-разрядное число в формате IEEE 754 с плавающей точкой
Слайд 11

Кафедра защищенных систем связи Типы данных

Кафедра защищенных систем связи

Типы данных

Слайд 12

Кафедра защищенных систем связи Массивы Массив – группа однотипных переменных, обращение

Кафедра защищенных систем связи

Массивы

Массив – группа однотипных переменных, обращение к которым

выполняется по общему имени. Доступ к элементу массива осуществляется по его индексу. Java допускает создание массивов любого типа. Массивы в Java могут иметь одно или более измерений. Массивы в Java являются объектным типом данных.
Объявление массива:
Тип имя_переменной[]; или тип[] имя_переменной;

a

a[0]

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

Размещение данных в массиве

Слайд 13

Кафедра защищенных систем связи Многомерные массивы public class Matrix { public

Кафедра защищенных систем связи

Многомерные массивы

public class Matrix {
public static void main

(String[] args) {
int[][] matrixB = {
{-9, 1, 0},
{4, 1, 1}.
{-2, 2, -1}
};
for (int і = 0; і < 3; I ++) {
for ( int j = 0; j < 3; j++) {
System.out.print(matrixB[i][j]);
}
System.out.println();
}
}
}
Слайд 14

Кафедра защищенных систем связи Многомерные несимметричные массивы int[][] a = new

Кафедра защищенных систем связи

Многомерные несимметричные массивы

int[][] a = new int[5][5];// двумерный

массив
int[][][] b = new int[3][4][5];// трехмерный массив
int[][][][] c = new int[2][4][5][5];// четырехмерный массив
int[][] a1 = new int[5][];// двумерный массив с 5 строками
a1[0] = new int [1];
a1[1] = new int [2];
a1[2] = new int [3];
a1[3] = new int [4];
a1[4] = new int [5];
for(int i = 0; i for(int j = 0; j System.out.print(a1[i][j] + " ");
}
System.out.println();
}
Слайд 15

Кафедра защищенных систем связи Приведение типов Когда мы производим какие-то действия

Кафедра защищенных систем связи

Приведение типов

Когда мы производим какие-то действия с переменными,

то нужно следить за типами. Нельзя умножать котов на футбольные мячи, это противоречит здравому смыслу. Также и с переменными. Если вы присваиваете переменной одного типа значение другого типа, то вспоминайте теорию. Например, вы без проблем можете присвоить значение типа int переменной типа long.

byte

short

int

long

double

float

char

Слайд 16

Кафедра защищенных систем связи Основные конструкции. Условный оператор if if (условие)

Кафедра защищенных систем связи

Основные конструкции. Условный оператор if

if (условие) оператор; //

если условие истинно, то выполняется оператор

int x = 18; if(x>18){  System.out.print("Да"); } if (true) x++; else x--; if(x==18)    x++;

Слайд 17

Кафедра защищенных систем связи Команду switch часто называют командой выбора. Выбор

Кафедра защищенных систем связи

Команду switch часто называют командой выбора. Выбор осуществляется в зависимости

от целочисленного выражения. Форма команды выглядит так:

switch(ВыражениеДляСравнения) {
case Совпадение1:
команда;
break;
case Совпадение2:
команда;
break;
default:
оператор;
break;
}

Основные конструкции. Оператор switch

Слайд 18

Кафедра защищенных систем связи Форма цикла while следующая: while(условие) { //

Кафедра защищенных систем связи

Форма цикла while следующая:
while(условие) {
// тело цикла
}

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

Оператор while и do-while

int counter = 10;
do {
textViewInfo.append("Осталось " + counter + " сек.\n");
counter--;
} while (counter > 0);

Слайд 19

Кафедра защищенных систем связи Основные конструкции. Цикл for for (int kitten

Кафедра защищенных систем связи

Основные конструкции. Цикл for

for (int kitten = 1;

kitten < 10; kitten++) {
infoTextView.append("\nСчитаем котят: " + kitten);
resultEditText.setText("Ура! Нас подсчитали");
}
for (int y=0; y<100; y++) {
System.out.println(“Вывод №:” + y);
}
Слайд 20

Кафедра защищенных систем связи Три принципа ООП: Инкапсуляция. Наследование Полиморфизм. Принципы ООП

Кафедра защищенных систем связи

Три принципа ООП:
Инкапсуляция.
Наследование
Полиморфизм.

Принципы ООП

Слайд 21

Кафедра защищенных систем связи В Java основной инкапсуляции является класс. Класс

Кафедра защищенных систем связи

В Java основной инкапсуляции является класс. Класс определяет

структуру и поведение, которые будут совместно использоваться набором объектов.

Инкапсуляция

Принципы ООП

Класс

Открытые переменные класса (не рекомендуется)

Открытые методы

Закрытые методы

Закрытые переменные экземпляра

Слайд 22

Кафедра защищенных систем связи При наследовании один объект получает свойства другого,

Кафедра защищенных систем связи

При наследовании один объект получает свойства другого,

добавляя их к своим.

Наследование

Принципы ООП

Слайд 23

Кафедра защищенных систем связи Полиморфизм, инструмент, позволяющий использовать один и тот

Кафедра защищенных систем связи

Полиморфизм, инструмент, позволяющий использовать один и тот же

интерфейс (шаблон, форму) для общего класса действию.

Наследование

Принципы ООП

Слайд 24

Кафедра защищенных систем связи Примеры принципов ООП. Инкапсуляция public class Robot

Кафедра защищенных систем связи

Примеры принципов ООП. Инкапсуляция

public class Robot
{
// Текущая

координата X
private double x = 0;
// Текущая координата Y
private double y = 0;
// Текущий курс (в градусах)
private double course = 0;
// Передвижение на дистанцию distance
public void forward(int distance) {
// Обращение к полю объекта X
x = x + distance * Math.cos(course / 180 * Math.PI);
// Обращение к полю объекта Y
y = y + distance * Math.sin(course / 180 * Math.PI);
}
// Печать координат робота
public void printCoordinates() {
System.out.println(x + "," + y); }
Слайд 25

Кафедра защищенных систем связи public double getX() { return x; }

Кафедра защищенных систем связи
public double getX() {
return x;
}

public double getY() {
return y;
}
public double getCourse() {
return course;
}
public void setCourse(double course) {
this.course = course;
}
}

Примеры принципов ООП. Инкапсуляция

Слайд 26

Кафедра защищенных систем связи Примеры принципов ООП. Наследование Class A{ int

Кафедра защищенных систем связи

Примеры принципов ООП. Наследование

Class A{
int i;}
//наследуемся от класса

A
Class B extends A{
int i; //имя переменной совпадает и скрывает переменную i в классе A
B(int a, int b){
Super.i=a; //обращаемся к переменной i из класса A
i=b; //обращаемся к переменной i из класса B}
Void show() {
System.out.println(“i из суперкласса: ” + super.i);
System.out.println(“i в подклассе: ” + i);}
}
Class MainActivity{
B subClass = new B(1,2);
subclass.show();
}
Слайд 27

Кафедра защищенных систем связи Примеры принципов ООП. Полиморфизм. class A {

Кафедра защищенных систем связи

Примеры принципов ООП. Полиморфизм.

class A {
void m1(A

a) {
System.out.print("A");
}
}
class B extends A {
void m1(B b) {
System.out.print("B");
}
}
class C extends B {
void m1(B c) {
System.out.print("C");
}}
class D {
public static void main(String[] args) {
А с1 = new C();
c1.m1(new B());
} }
Слайд 28

Кафедра защищенных систем связи Классы Классы могут наследовать свойства от других

Кафедра защищенных систем связи

Классы

Классы могут наследовать свойства от других классов. Родительский

класс называется суперклассом. Внутри классов могут быть объявлены поля и методы.

class ИмяКласса {
тип переменная_экземпляра1;
тип имяМетода (список параметров){
// тело метода
}
}

Слайд 29

Кафедра защищенных систем связи Новый объект (или экземпляр) создаётся из существующего

Кафедра защищенных систем связи

Новый объект (или экземпляр) создаётся из существующего класса

при помощи ключевого слова new:

Cat barsik = new Cat(); // создали кота из класса Cat

Классы. Объекты

class Box {
int width; // ширина коробки
int height; // высота коробки
int depth; // глубина коробки
}
Class Install{
Box setup = new Box();
setup.width = 250;
}

Слайд 30

Кафедра защищенных систем связи Box bigbox = new Box(); // большая

Кафедра защищенных систем связи

Box bigbox = new Box(); // большая коробка
Box

smallbox = new Box(); // маленькая коробка
int volume;
// присвоим значения переменным для большой коробки
bigbox.width = 400;
bigbox.height = 200;
bigbox.depth = 250;
// присвоим значения переменным для маленькой коробки smallbox.width = 200;
smallbox.height = 100;
smallbox.depth = 150;
// вычисляем объём первой коробки
volume = bigbox.width * bigbox.height * bigbox.depth;
tvInfo.setText("Объём большой коробки: " + volume + "\n");
// вычисляем объём маленькой коробки
volume = smallbox.width * smallbox.height * smallbox.depth;
tvInfo.append("Объём маленькой коробки: " + volume);

Пример

Слайд 31

Кафедра защищенных систем связи Метод может не иметь параметров, в этом

Кафедра защищенных систем связи

Метод может не иметь параметров, в этом случае

используются пустые скобки.
Методы могут вызывать другие методы.
Каждый метод начинается со строки объявления, которую называют сигнатурой метода:

Классы. Методы

class Box {
int width; // ширина коробки
int height; // высота коробки
int depth; // глубина коробки
// вычисляем объём коробки
String getVolume() {
return "Объём коробки: " + (width * height * depth);
}
}

Слайд 32

Кафедра защищенных систем связи Классы. Перегрузка методов Синтаксис Java позволяет создавать

Кафедра защищенных систем связи

Классы. Перегрузка методов

Синтаксис Java позволяет создавать в одном

классе методы с одинаковыми именами, различающиеся только принимаемыми аргументами.
Пример:
public class Rectangle {
private double width, height;
public void setSize(int a) {
width = a;
height = a;
}
public void setSize(double a) {
width = a;
height = a;
}
public void setSize(double w, double h) {
width = w;
height = h;
}
}
Слайд 33

Кафедра защищенных систем связи Классы. Наследование У любого класса в Java

Кафедра защищенных систем связи

Классы. Наследование

У любого класса в Java может быть

только один класс-прародитель. Он указывается с помощью зарезервированного слова extends после имени класса. Если класс-прародитель не указан, прародителем считается класс Object.
Пример:
class Point {
// Тело класса
}
class Circle extends Point {
// Тело класса
}
class Rectangle extends Point {
// Тело класса
}
Слайд 34

Кафедра защищенных систем связи Классы. Переопределение методов class Point { public

Кафедра защищенных систем связи

Классы. Переопределение методов

class Point {
public double x,

y;
public double getSquare() {
return 0;
}
}
class Circle extends Point {
public double r;
public double getSquare() {
return Math.PI * r * r;
}
}
class Rectangle extends Point {
public double width, height;
public double getSquare() {
return width * height;
}
}
Слайд 35

Кафедра защищенных систем связи Классы. Зарезервированное слово super class Point {

Кафедра защищенных систем связи

Классы. Зарезервированное слово super

class Point {
public double

x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}
class Circle extends Point {
public double r;
public Circle(double x, double y, double r) {
super(x, y);
this.r = r;
}
public boolean inCircle(double x, double y) {
return ( (super.x – x)*(super.x – x) +
(super.y – y)*(super.y – y) < r*r);
}
Слайд 36

Кафедра защищенных систем связи Интерфейсы Интерфейсы в Java предназначены для поддержки

Кафедра защищенных систем связи

Интерфейсы

Интерфейсы в Java предназначены для поддержки возможности множественного

наследования.
Объявление интерфейса:
спецификатор_доступа interface Имя_интерфейса extends Базовые_интерфейсы {
спецификатор_доступа тип константа1 = значение1;
спецификатор_доступа тип константа2 = значение2;
/…
спецификатор_доступа возвращаемый_тип заголовок_метода1(аргументы);
спецификатор_доступа возвращаемый_тип заголовок_метода2(аргументы);
/…
}
Слайд 37

Кафедра защищенных систем связи Исключения. Конструкция try-catch В Java предусмотрен механизм

Кафедра защищенных систем связи

Исключения. Конструкция try-catch

В Java предусмотрен механизм обработки исключений.

Исключением называется ошибка времени выполнения программы. Исключения в Java реализованы в виде объектов, описывающих исключительную ситуацию. В случае возникновения ошибки времени выполнения, создаются объект-исключение и управление передаётся соответствующему этому объекту обработчику исключений.

try {
// здесь возможно возникновение исключения
} catch(тип_исключения1 переменная1) {
// обработчик исключения типа тип_исключения1
} catch(тип_исключения2 переменная2) {
// обработчик исключения типа тип_исключения2
}
finally {
// код, который выполняется в любом случае после выполнения блока try или завершения обработки исключения в блоке catch
}

Слайд 38

Кафедра защищенных систем связи Наглядное представление конструкции try-catch

Кафедра защищенных систем связи

Наглядное представление конструкции try-catch

Слайд 39

Кафедра защищенных систем связи Приоритет обработчиков исключений

Кафедра защищенных систем связи

Приоритет обработчиков исключений

Слайд 40

Кафедра защищенных систем связи try { int a = 4 /

Кафедра защищенных систем связи

try {
int a = 4 / 0;

// деление на 0
} catch(Exception e) {
System.out.println(“Исключение: “ + e);
} catch(ArithmeticException e) {
// этот блок не выполнится, потому что класс ArithmeticException является подклассом класса Exception
System.out.println(“Исключение: “ + e);
} finally {
System.out.println(“Этот блок выполнится в любом случае после завершения блока try или обработки исключения”);
}

Приоритет обработчиков исключений

Слайд 41

Кафедра защищенных систем связи Организация ввода-вывода Ввод-вывод в Java организован при

Кафедра защищенных систем связи

Организация ввода-вывода

Ввод-вывод в Java организован при помощи потоков.

Потоки реализуются как классы, являющиеся абстракцией устройства ввода-вывода. Классы, отвечающие за стандартный ввод-вывод в Java, находятся в пакете java.io. Чтобы использовать эти классы, необходимо импортировать пакет java.io:
import java.io.*;
или только необходимый класс, например для импорта класса InputStream:
import java.io.InputStream;
Слайд 42

Кафедра защищенных систем связи Базовые классы ввода-вывода

Кафедра защищенных систем связи

Базовые классы ввода-вывода

Слайд 43

Кафедра защищенных систем связи Байтовый ввод-вывод. Класс InputStream

Кафедра защищенных систем связи

Байтовый ввод-вывод. Класс InputStream

Слайд 44

Кафедра защищенных систем связи Бинарные данные. Класс OutputStream

Кафедра защищенных систем связи

Бинарные данные. Класс OutputStream

Слайд 45

Кафедра защищенных систем связи Символьный ввод-вывод

Кафедра защищенных систем связи

Символьный ввод-вывод

Слайд 46

Кафедра защищенных систем связи Пример. Запись файлов. Класс FileWriter. import java.io.*;

Кафедра защищенных систем связи

Пример. Запись файлов. Класс FileWriter.

import java.io.*;
public class FilesApp

{
public static void main(String[] args) {
try(FileWriter writer = new Filewriter("C:\SomeDir\notes3.txt“);
{
//запись всей строки
String text = "Мама мыла раму, раму мыла мама";
writer. write(text);
//запись по символам
writer. append('\n');
writer. append('E');
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
Слайд 47

Кафедра защищенных систем связи Потоки Объектно-ориентированное программирование Поток - это абстрактное

Кафедра защищенных систем связи

Потоки

Объектно-ориентированное программирование

Поток - это абстрактное значение источника или

приёмника данных, которые способны обрабатывать информацию. Вы в реальности не видите, как действительно идёт обработка данных в устройствах ввода/вывода, так как это сложно и вам это не нужно. Это как с телевизором - вы не знаете, как сигнал из кабеля превращается в картинку на экране, но вполне можете переключаться между каналами через пульт.
Есть два типа потоков: байтовые и символьные. В некоторых ситуациях символьные потоки более эффективны, чем байтовые.
За ввод и вывод отвечают разные классы Java. Классы, производные от базовых классов InputStream или Reader, имеют методы с именами read() для чтения отдельных байтов или массива байтов (отвечают за ввод данных). Классы, производные от классовOutputStream или Write, имеют методы с именами write() для записи одиночных байтов или массива байтов (отвечают за вывод данных).
Слайд 48

Кафедра защищенных систем связи Потоки. Класс InputStream Объектно-ориентированное программирование Базовый класс

Кафедра защищенных систем связи

Потоки. Класс InputStream

Объектно-ориентированное программирование

Базовый класс InputStream представляет классы, которые получают

данные из различных источников:
массив байтов
строка (String)
файл
канал (pipe): данные помещаются с одного конца и извлекаются с другого
последовательность различных потоков, которые можно объединить в одном потоке
другие источники (например, подключение к интернету)
Слайд 49

Кафедра защищенных систем связи Потоки. Класс InputStream. Методы класса Объектно-ориентированное программирование

Кафедра защищенных систем связи

Потоки. Класс InputStream. Методы класса

Объектно-ориентированное программирование

int available() -

возвращает количество байтов ввода, доступные в данный момент для чтения
close() - закрывает источник ввода. Следующие попытки чтения передадут исключение IOException
void mark(int readlimit) - помещает метку в текущую точку входного потока, которая остаётся корректной до тех пор, пока не будет прочитано readlimint байт
boolean markSupported() - возвращает true, если методы mark() и reset() поддерживаются потоком
int read() - возвращает целочисленное представление следующего доступного байта в потоке. При достижении конца файла возвращается значение -1
Слайд 50

Кафедра защищенных систем связи Потоки. Класс .BufferedInputStream Объектно-ориентированное программирование Буферизация ввода-вывода

Кафедра защищенных систем связи

Потоки. Класс .BufferedInputStream

Объектно-ориентированное программирование

Буферизация ввода-вывода является удобным способом

оптимизации производительности, позволяя заключить в оболочку любой поток класса InputStream.
У класса есть конструктор, где размер буфера устанавливается по умолчанию. Также можно использовать конструктор, где размер буфера устанавливается вручную. Рекомендуется использовать размеры буфера, кратные размеру страницы памяти, дисковому блоку и т.п. и может зависеть от принимающей операционной системы, объёма доступной памяти и конфигурации машины.
Слайд 51

Кафедра защищенных систем связи Пример Объектно-ориентированное программирование Чтение стандартного ввода: import

Кафедра защищенных систем связи

Пример

Объектно-ориентированное программирование

Чтение стандартного ввода:
import java.io.BufferedReader;
import java.io.IOException;
import

java.io.InputStreamReader;
public class filelist {
public static void main(String[] args) {
// 1b. Чтение стандартного ввода:
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a line:");
try {           
System.out.println(stdin.readLine());
} catch (IOException ex) {            
System.out.println("Reading error");        
}
} }
Слайд 52

Кафедра защищенных систем связи Пример Чтение файла по строкам: import java.io.BufferedReader;

Кафедра защищенных систем связи

Пример

Чтение файла по строкам:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;


import java.io.IOException;
public class filelist {
public static void main(String[] args) {        
BufferedReader in;
String s;
StringBuffer s2;
try {
in = new BufferedReader(new FileReader("G:\\programs\\java\\testGUI\\src\\testgui\\filelist.java"));
}
}
}
Слайд 53

Кафедра защищенных систем связи Пример Продолжение: s2 = new StringBuffer(); while

Кафедра защищенных систем связи

Пример

    Продолжение:
s2 = new StringBuffer();
while ((s = in.readLine())

!= null) {        
s2.append(s + "\n") ;         
}
System.out.println(s2);
in.close();
} catch(FileNotFoundException ex) {            
System.out.println(ex);
} catch (IOException ex){    
System.out.println(ex);
}
}
}
Слайд 54

Кафедра защищенных систем связи Консольный ввод-вывод. Пример кода в IDE NetBeans Ввод-вывод в Java

Кафедра защищенных систем связи

Консольный ввод-вывод. Пример кода в IDE NetBeans

Ввод-вывод

в Java