Основи мови програмування Java. (Лекція 9)

Содержание

Слайд 2

Лекція 9. Основи мови програмування Java План лекції: 1. Виникнення мови

Лекція 9. Основи мови програмування Java

План лекції:
1. Виникнення мови Java
2.

Особливості мови Java
3. Змінні та типи даних
4. Основні оператори
5. Керуючі інструкції
6. Масиви
7. Класи та об’єкти
8. Конструктори
Слайд 3

Технології Java та література Література: 1. П. Ноутон, Г. Шилдт. Java

Технології Java та література

Література:
1. П. Ноутон, Г. Шилдт. Java 2.

Наиболее полное руководство
2. К.С. Хорстманн, Г. Корнелл.
Java 2 (том 1 и 2)
3. И. Хабибуллин.
Java. Самоучитель

Технології
та підтримка лекційного курсу:
1. Sun Microsystems
www.sun.com
www.oracle.com
www.java.com
- Java (jdk & jre)
- NetBeans

Слайд 4

Виникнення мови Java Люди та події: Ґенеза мов: B =► C

Виникнення мови Java

Люди та події:
Ґенеза мов:
B =► C =►

C++ =► Java
Мова Java створювалась з 1991 по 1995 роки, корпорація Sum Microsystems
Авторы мови Java (Oak):
Джеймс Гослінг, Патрік Ноутон, Кріс Варт, Ед Франк, Майк Шерідан

Ідеї:
Java: необхідність створення ефективних програм для Internet
Незалежність від конкретної комп’ютерної платформи та типу процесору
Компілятор Java видає не код виконання, а байт-код, який виконується не операційною системою, а віртуальною машиною Java (JVM)

Слайд 5

Відмінності між мовами С++ та Java На відміну від С++ В

Відмінності між мовами С++ та Java

На відміну від С++

В

мові Java немає:
Вказівників!!!
Структур і об’єднань
Перевантаження операторів!!!
Автоматичного приведення типів з втратою точності
Глобальних змінних і функцій
Значень аргументів за умовчанням!!!
Деструкторів!!!
Оператора goto
Передачі об’єктів за значенням (тільки за посиланням!)

В мові Java є:
Багатопотоковість
Пакети
Інтерфейси (аналог абстрактного класу в С++)
Вбудований рядковий тип String
Документаційний коментар
Всі масиви динамічні!

Відмінність властивостей:
В С++ true і false – можуть бути числами, в Java – тільки літерали!
В С++ специфікатор рівня доступу застосовується до груп полів, в Java – для кожного поля окремо

Слайд 6

Особливості мови Java Інкапсуляція Мова Java повністю об’єктно-орієнтована!!! Базові принципи ООП

Особливості мови Java

Інкапсуляція

Мова Java повністю об’єктно-орієнтована!!!

Базові принципи ООП

Поліморфізм

Наслідування

Програмний код

+ дані

Єдиний інтерфейс

Передача властивостей

Слайд 7

Приклад програми на Java class Intro{ public static void main(String[] args)

Приклад програми на Java

class Intro{
public static void main(String[] args) {
System.out.println("Ми

програмуємо на Java!");
}
}

Ми програмуємо на Java!

ЗАПУСТИТИ

Слайд 8

Типи даних Java Цілі числа byte 8 біт short 16 біт

Типи даних Java

Цілі числа
byte 8 біт
short 16 біт
int 32 біт
long

64 біт

Числа з плаваючою точкою
float 32 біт
double 64 біт

Символи
char 16 біт

Логічний тип
boolean true або false

Система Unicode – повний набір символів

Літерали
1, 2, 3, … int
125L long
012 8-ричне
0x12 16-ричне
2.0 double
2.0F float
‘\xxx’ 8-ричний символ Unicode
‘\uxxx’ 16-ричний символ Unicode

Слайд 9

Змінні Оголошення int a,b,c; int d=3,f,k=5; char x=‘x’; Динамічна ініціалізація double

Змінні

Оголошення
int a,b,c;
int d=3,f,k=5;
char x=‘x’;

Динамічна ініціалізація
double a=3.0,b=4.0;
double c=a*a+b*b;

Автоматичне приведення типів
1. Два типи

мають бути сумісними
2. Цільовий тип має бути “більшим” за
вихідний

Правила розширення типів
byte і short =► int
Якщо у виразі є long =► long
Якщо у виразі є float =► float
Якщо у виразі є double =► double
Область доступності змінних визначається межами блока (пара дужок { та }), де вони визначені. Коли запускається новий блок, створюється відповідна область доступності

Приклади:

int a;
byte b;
b=(byte)a;

byte a=40,;b=50,c=100;
byte b;
int d=a*b/c;

byte b=50;
b=b*2;

byte b=50;
b=(byte)(b*2);

Явне приведення типу

Вихід за межі діапазону: виконується перетворення до типу int

ПРАВИЛЬНО!!!

ПОМИЛКА:
літерал 2 має тип int

Слайд 10

Основні оператори Java Групи операторів ● Арифметичні ● Логічні ● Побітові

Основні оператори Java

Групи операторів
● Арифметичні
● Логічні
● Побітові (порозрядні)
● Оператори

порівняння

Арифметичні
+, -, *, /, %, ++, --, +=, -=, *=, /=, %=, --

Логічні
& (скорочена форма &&), | (скорочена форма ||), ^, !

Операція присвоєння
змінна=вираз;

Пріоритет операторів
1. ( ) [ ] .
2. ++ - - ~ !
3. * / %
4. + -
5. >> << >>>
6. > >= <= <
7. == !=

Порозрядні оператори
~, &, |, ^, >>, <<, >>>, &=, |=, ^=, >>=, <<=, >>>=

Оператори відношення
==, !=, >, <, >=, <=

Умовна тернарна операція
умова?вираз1:вираз2;

8. &
9. ^
10. |
11. &&
12. ||
13. ?:
14. = op=

Слайд 11

Керуючі інструкції Java Оператор if() if(умова) оператор1; else оператор2; Оператор switch()

Керуючі інструкції Java

Оператор if()
if(умова) оператор1;
else оператор2;

Оператор switch()
switch(вираз){
case значення1:
//...
break;
case значення2:
//...
break;
...............
default:
//...
}

Оператор while()
while(умова){
//...
}

Оператор

for()
for(ініціалізація;умова;ітерації ){
//...
}

Оператор do-while()
do{
//...
} while(умова);

Аналогічно
до відповідних операторів мови С++

Слайд 12

Масиви в Java Оголошення масиву тип ім’я[ ]; Виділення пам’яті ім’я=new

Масиви в Java

Оголошення масиву
тип ім’я[ ];

Виділення пам’яті
ім’я=new тип[розмір];

Багатомірні масиви
int data1[

][ ]=new int[4][5];
int data2[ ][ ]=new int[3][ ];
data2[0]=new int[5];
data2[1]=new int[3];
data2[2]=new int[1];

Індексація масиву починається з нуля!

В Java всі масиви ДИНАМІЧНІ!!!

Приклад 1
int data[ ];
data=new int[12];

Приклад 2
int data[ ]=new int[12];
byte[ ] a=new byte[100];

Приклад 3
int data[ ]={1,2,3,...};

В Java ВИКОНУЄТЬСЯ перевірка на предмет виходу за межі масива!!!

Ініціалізація
int m[ ][ ]={
{1,2,3},
{4,5,6}
};

!

Слайд 13

Класи та об’єкти Оголошення класу class ім’я_класу{ тип змінна; ............ тип

Класи та об’єкти

Оголошення класу
class ім’я_класу{
тип змінна;
............
тип метод(){
//тіло методу}
............
}

Приклад оголошення класу
class

MyClass{
double x;
int m;
void set(double z, int n){
x=z;
m=n;}
}

● Любий java-клас має бути повністю визначений в одному файлі
● Оголошення і реалізація методів розміщені разом
● Метод main() визначається в класі, якщо він є стартовою точкою програми

Приклад створення об’єкту
MyClass obj;
obj=new MyClass();
або те саме:
MyClass obj=new MyClass();

Створення об’єкту
клас об’єкт;
об’єкт=new клас();
або
клас об’єкт=new клас();

Слайд 14

Класи та об’єкти – приклади 1 class Box{ double width; double

Класи та об’єкти – приклади 1

class Box{
double width;
double height;
double depth;
}
class

BoxDemo{
public static void main(String[] args){
Box mybox=new Box();
double vol;
mybox.width=10;
mybox.height=20;
mybox.depth=15;
vol=mybox.width*mybox.height*mybox.depth;
System.out.println(“Об’єм дорівнює ”+vol);}
}
● Любий java-клас має бути повністю визначений в одному файлі
● Оголошення і реалізація методів розміщені разом
● Метод main() визначається в класі, якщо він є стартовою точкою програми

Після компіляції буде створено 2 файли (з розширенням class): Box.class та BoxDemo.class (кожен клас компілюється в окремий файл). Виконувати треба файл BoxDemo.class

ЗАПУСТИТИ

Слайд 15

Класи та об’єкти – приклади 2 class Box{ double width; double

Класи та об’єкти – приклади 2

class Box{
double width;
double height;
double depth;
void

volume(){
System.out.print(“Об’єм дорівнює ”);
System.out.println(width*height*depth);
}
}
class BoxDemo2{
public static void main(String[] args){
Box mybox=new Box();
mybox.width=5;
mybox.height=16;
mybox.depth=25;
mybox.volume();
}
}

ЗАПУСТИТИ

Слайд 16

Конструктори в Java class Box{ double width, height, depth; double volume(){

Конструктори в Java

class Box{
double width, height, depth;
double volume(){
return width*height*depth;}
Box(){
System.out.println(“Створення об’єкту!”);
width=10;
height=20;
depth=30;}}
class BoxDemo3{
public

static void main(String[] args){
Box mybox=new Box();
System.out.println(“Об’єм дорівнює ”+mybox.volume());}
}

ЗАПУСТИТИ

● Конструктором виконується ініціалізація об’єктів після створення
● Конструктори не мають специфікатора типу
● Ім’я конструктора співпадає з іменем класу