МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Контрольна робота №1
з курсу “Об’єктно-орієнтоване програмування”
на тему : “Особливості використання операцій
та операторів мова Java”
Особливості використання операцій
та
операторів мови Java.
Java (вимовляється Джава; інколи — Ява) — об'єктно-орієнтована мова програмування, випущена компанією Sun Microsystems у 1995 році, як основний компонент платформи Java. У створенні мови програмування Java було чотири початкові цілі:
- Синтаксис мови повинен бути «простим, об'єктно-орієнтовним та звичним».
- Реалізація має бути «безвідмовною та безпечною», а також «високопродуктивною».
- Повинна зберегтися «незалежність від архітектури та портативність».
- Мова має бути «динамічною, інтерпретованою та підтримувати мультиопрацьовування».
Оператори в мові Java - це спеціальні символи, що повідомляють транслятору про те, що ви хочете виконати операцію з деякими операндами. Деякі оператори вимагають одного операнда, їх називають унарними. Одні оператори ставляться перед операндами і називаються префиксними, інші - після, їх називають постфіксними операторами. Більшість же операторів ставлять між двома операндами, такі оператори називаються інфіксними бінарними операторами. Існує тернарний оператор, що працює з трьома операндами.
У Java має 44 убудованих операторів. Їх можна розбити на 4 класи - арифметичні, бітові, оператори порівняння і логічні.
Арифметичні оператори
" + а);
" + b);
" + c);
" + d);
" + e);
Арифметичні оператори використовуються для обчислень так само як в алгебрі. Припустимі операнди повинні мати числові типи. Наприклад, використовувати ці оператори для роботи з логічними типами не можна, а для роботи з типом char можна, оскільки в Java тип char -це підмножина типу int.
Оператор
Результат
Оператор
Результат
+
Додавання
+ =
Додавання з присвоюванням
-
Вирахування (також унарный мінус)
- =
Вирахування з присвоюванням
*
Множення
* =
Множення з присвоюванням
/
Розподіл
/=
Розподіл із присвоюванням
%
Розподіл по модулі
% =
Розподіл по модулі з присвоюванням
++
Инкремент
--
Декремент
Чотири арифметичних дії
Нижче, як приклад, приведена проста програма, що демонструє використання операторів.
Звернемо увагу на те, що оператори працюють як з цілими літералами, так і з перемінними.
Class basicmath {
Public static void int a = 1 + 1; int b = a * 3; main(String args[]) { int c = b / 4; int d = b - а; int e = -d;
System.out.println("a = System.out.println("b = System.out.println("c = System.out.println("d =
System.out.println("e = }
}
Виконавши цю програму, ви повинні одержати приведении нижче результат:
C: \> java basicmath a = 2 b = 6 c = 1 d = 4 e = -4
- Оператор розподілу по модулі
Оператор розподілу по модулі, чи оператор mod, позначається символом %. Цей оператор повертає залишок від розподілу першого операнда на другий. На відміну від C + + , функція mod у Java працює не тільки з цілими, але і з речовинними типами. Приведена нижче програма ілюструє роботу цього оператора.
Class Modulus {
Public static void main (String args []) { int x = 42; double у = 42.3;
System. Out.println("x mod 10 = " + x % 10);
System.out.println("y mod 10 = " + у % 10); }
}
Виконавши цю програму, ви одержите наступний результат:
С:\> Modulus x mod 10 = 2 y mod 10 = 2.3
- Арифметичні оператори присвоювання
Для кожного з арифметичних операторів є форма, у якій одночасно з заданою операцією виконується присвоювання. Нижче приведений приклад, що ілюструє використання подібного різновиду операторів.
Class opequals {
Public static void main(String args[]) { int a = 1; int b = 2; int с = 3; a += 5; b *= 4; c += a * b; с %= 6;
System.out.println("a System.out.println("b
System.out.println("c }
}
= " + a); = " + b); = " + c);
А от і результат, отриманий при запуску цієї програми:
С:> Java opequals а = 6 b = 8 з = 3
Инкремент і декремент
Існує 2 оператори, називаних операторами інкремента і декремента (++ і --) і являющихся скороченим варіантом запису для чи додавання вирахування з операнда одиниці. Ці оператори унікальні в тім плані, что можуть використовуватися як у префіксній, так і в постфиксной формі.
Целочисельні бітові оператори
Для цілих числових типів даних - long, int, short, char і byte, визначений додатковий набір операторів, за допомогою яких можна перевіряти і модифікувати стан окремих бітів відповідних значень. У таблиці приведене зведення таких операторів. Оператори бітової арифметики працюють з кожним бітому як із самостійною величиною.
Оператор
Результат
Оператор
Результат
Побітове унарное заперечення (NOT)
&
Побітове И (AND)
&=
Побітове И (AND) із присвоюванням
І
Побітове ЧИ (OR)
І =
Побітове ЧИ (OR) із присвоюванням
Л
Побітове що виключає ЧИ (XOR)
Л =
Побітове що виключає ЧИ (XOR) із присвоюванням
>>
Зрушення вправо
>> =
Зрушення вправо з присвоюванням
>>>
Зрушення вправо з заповненням нулями
>>> =
Зрушення вправо з заповненням нулями з присвоюванням
<<
Зрушення вліво
<< =
Зрушення вліво з присвоюванням
- Зрушення вліво і вправо
Оператор << виконує зрушення уліво всіх битов свого лівого операнда на число позицій, задане правим операндом. При цьому частина битов у лівих розрядах виходить за границі і губиться, а відповідні праві позиції заповнюються нулями. У попередній главі вже говорилося про автоматичне підвищення типу усього вираження до int у цьому випадку якщо у вираженні присутні операнди типу int чи цілих типів меншого розміру. Якщо ж хоча б один з операндов у вираженні має тип long, то і тип усього вираження підвищується до long.
Оператор >> означає в мові Java зрушення вправо. Він переміщає всі біти свого лівого операнда вправо на число позицій, задане правим операндом. Коли біти лівого операнда висуваються за саму праву позицію слова, вони губляться. При зрушенні вправо вивільнювані старші (ліві) розряди сдви-гаемого числа заповнюються попереднім умістом знакового розряду. Таке поводження називають розширенням знакового розряду
- Оператори відношення
Для того, щоб можна було порівнювати два значення, у Java мається набір операторів, що описують відношення і рівність. Список таких операторів приведений у таблиці.
Оператор
Результат
= =
Рівно
! =
Не рівно
>
Більше
<
Менше
> =
більше рівно
< =
менше рівно
Булеві логічні оператори
Булеві логічні оператори, оперують тільки з операндами типу boolean. Усі бінарні логічні оператори сприймають у якості операндів два значення типу boolean і повертають результат того ж типу.
- Тернарний оператор if-then-use
У якості першого операнда - < 1 > - може бути використане будь-яке вираження, результатом якого є значення типу boolean. Якщо результат дорівнює true, то виконується оператор, заданий другим операндом < 2 >. Якщо ж перший операнд дорівнює false, то виконується третій операнд - < 3 >. Другий і третій операнді, тобто < 2 > і < 3 >, повинні обертати значення одного типу і не повинні мати тип void.
У приведеній нижче програмі цей оператор використовується для провірки дільника перед виконанням операції розподілу. У випадку нульового дільника повертається значення 0.
- Умовні оператори
If-else.В узагальненій формі цей оператор записується в такий спосіб:
If (логічне вираження) операторі; [ else оператор2;]
- Break
У мові Java відсутній оператор go to. Для того, щоб у деяких випадках заміняти go to, у Java передбачений оператор break. Цей оператор повідомляє виконуючому середовищу, що варто припинити виконання іменованого блоку і передати керування оператору, що випливає за даним блоком. Для іменування блоків у мові Java використовуються мітки. Оператор break при роботі з циклами й в операторах switch може використовуватися без мітки. У такому випадку мається на увазі вихід з поточного блоку.
Оператор break використовується тільки для переходу за один з поточних вкладених блоків. Це відрізняє break від оператора go to .
- Switch .Оператор switch забезпечує ясний спосіб переключення між різними частинами програмного коду в залежності від значення одного перемінної чи вираження
Результатом обчислення вираження може бути значення будь-якого простого типу, при цьому кожне зі значень, зазначених в операторах case, повинне бути сумісне по типі з вираженням в операторі switch. Усі ці значення повинні бути унікальними литералами. Якщо ж ви вкажете в двох операторах case однакові значення, транслятор видасть повідомлення про помилку.Якщо ж значенню вираження не відповідає жоден з операторів case, керування передається коду, розташованому після ключового слова default. Відзначимо, що оператор default необов'язковий. У випадку, коли жоден з операторів case не відповідає значенню вираження й у switch відсутній оператор default виконання програми продовжується з оператора, що випливає за оператором switch.
- Return. Підпрограма main, що ми використовували дотепер - це статичний метод відповідного класу-приклада. У будь-якому місці програмного коду методу можна поставити оператор return, що приведе до негайного завершення роботи і передачі керування коду, що викликав цей метод.
- For. У цьому операторі передбачені місця для всіх чотирьох частин циклу. Нижче приведена загальна форма оператора запису for.
For ( ініціалізація; завершення; ітерація ) тіло;
Будь-який цикл, записаний за допомогою оператора for, можна записати у виді циклу while, і навпаки. Якщо початкові умови такі, що при вході в цикл умова завершення не виконана, то оператори тіла й ітерації не виконуються ні разу.
- Оператор кома .Іноді виникають ситуації, коли розділи чи ініціалізації ітерації циклу for вимагають декількох операторів. Оскільки складений оператор у фігурних дужках у заголовок циклу for уставляти неможна, Java надає альтернативний шлях. Застосування коми (,) для поділу декількох операторів допускається тільки усередині круглих дужок оператора for.
- Continue.У деяких ситуаціях виникає потреба достроково перейти до виконання наступної ітерації, проігнорувавши частину операторів тіла циклу, ще не виконаних у поточній ітерації. Для цієї мети в Java передбачений оператор continue.
Як і у випадку оператора break, в операторі continue можна задавати мітку що вказує, у якому з вкладених циклів ви хочете достроково припинити виконання поточної ітерації.
Операції бувають : арифметичні , операції порівняння, логічні , побітові
До арефметичних операцій належать звичайні операції із числами , які ми знаємо : +,-,*,/ , а також % (остача від ділення) . Ці операції можна комбінувати з операцією присвоєння , наприкла +=.
До операції порівняння належать : операції порівняння « < / > » - менше / більше , « <= / >= » - менше рівне і більше рівне .
Усі логічні операції повертаються в значення true і false. Логічні && ll ! . && (і)- якщо два вирази істинні то результат буде істинним.
Побітові операції роблять дії над бітами числа.
Динамічне визначення типів
в мові Java.
Java – об’єктивно – орієнтовна мова програмування, розроблена компанією Sun Microsystem. Програми Java зазвичай компілюються в спеціальний байт – код, тому вони можуть працювати на будь –якій віртуальній Java- машині незалежно від її архітектурної будови. Динамічне визначення типів - це механізм ( який використовується деякими мовами пронграмування) , який дозволяє визначити тип даних змінної або об’єкта , під час виконання програми.
Існує багато видів реалізації даного механізму визначення , а саме :
таблиця показників на об’єкти ;
збереження інформації про об’єкт в пам’яті разом із ним.
В такому випадку , операція визначення типу, зводиться до пошуку в таблиці , або перегляду декілька байт до адресу , на якому вказує вказівник на об’єкт.
В Java тип об’єкту можна визначити за допомогою getClass, обявленого в класі java.lang.object. Для перевірки приналежності об’єкта до якогось типу використовується оператор instanceof.
Java – це динамічна мова. Кожний клас Java може бути завантажений працюючим інтерпретатором Java в будь-який момент часу. Внутрішні бібліотеки теж завантажуються динамічно. Це означає, що він забезпечує широку підтримку роботи в мережі на високому рівні. Наприклад, клас URL разом з відповідними класами пакету java.net дозволяє читати інформацію з віддаленого файлу також легко, як з локального.
Розподілена природа Java виявляється особливо яскраво в поєднанні з можливостями динамічного завантаження класів. Саме сполучення цих двох властивостей дозволяють інтепретатору Java завантажувати і запускати на виконання програми з Internet. Такий приклад має місце при завантаженні і запуску на виконання так званого апплета Java Web-броузером. Однак можна реализовувти і більш складні сценарії. Уявимо собі мультимедійний текстовий процесор, написаний на Java. В випадку, коли даній програмі необхідно вивести на екран інформацію певного вигляду, з якої їй раніше не приходилося працювати, вона може виробити команду динамічного завантаження деякого класу з Internet для синтаксичного розбору отриманої інформації, а після цього динамічні завантажити інший клас, здатний вивести цю частину інформації на екран. Подібна програма використає розподілені у мережі ресурси для того, щоб динамічно нарощувати свої можливості у відповідності з вимогами користувача.
Java строго типізована мова, що допускає достатньо простору перевірку можливої невідповідності типів на етапі компіляції. Java вимагає явного оголошення засобів. Ці точні вимоги гарантують, що компілятор буде помічати помилки при викликові методів класів, в результаті чого підвищиться надійність програм.
Однім з чинників, що забезпечують простоту Java, є відсутність покажчиків і арифметичних операцій над ними. Ця особливість також підвищує стійкість программ на Java, оскільки усуває цілий клас помилок, пов'язаний з невірним використанням покажчиків. В процесі виконання програми також контролюється перевизначення типів об'єктів і таким чином забезпечується їхня правильність. І, нарешті, особливо важливо, що автоматичний “збір сміття” в Java відвертає втрати блоків в пам'яті і інші фатальні помилки, пов'язані з її виділенням і вивільненням.
Обробка винятків є іншою особливістю Java, що сприяє підвищенню стійкості програм. Виняток (exception) – це сигнал про те, що відбулася деяка виняткова ситуація, наприклад виникла помилка із-за неможливості виявити потрібний файл (File not found).