DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Технологія програмування на мові Java

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Комп’ютерні науки
Кафедра:
Не вказано

Інформація про роботу

Рік:
2016
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Об’єктно-орієнтоване програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”  “Технологія програмування на мові Java” Методичні вказівки до лабораторної роботи №1 з курсу “Об’єктно-орієнтоване програмування” для студентів базового напрямку 6.0804 “Комп’ютерні науки” ЗАТВЕРДЖЕНО на засіданні кафедри “Системи автоматизованого проектування” Протокол № 1 від 30.08.2010 ЛЬВІВ 2010 “Технологія програмування на мові Java”. Методичні вказівки до виконання лабораторної роботи №1 з курсу: “Об’єктно-орієнтоване програмування” для студентів базового напрямку 6.0804 “Комп’ютерні науки”. Укладачі: Керницький А.Б., ст.викл., др.інж. Каркульовський В.І., доцент, к.т.н. Загарюк Р.В., асистент, к.т.н. Відповідальний за випуск: Рецензенти: 1. МЕТА РОБОТИ Ознайомитися з технологією програмування із використанням пакета SDK та ECLIPSE, примітивними типами даних, операціями над ними. 2.КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. СТРУКТУРА ПРОГРАМИ НА МОВІ JAVA Фірма SUN Microsystems – розробник технології Java - безкоштовно розповсюджує набір необхідних програмних інструментів для повного циклу роботи з цією мовою програмування: компіляції, інтерпретації, відлагодження, що включає і багату бібліотеку класів, під назвою JDK (Java Development Kit). Java програма існує у вигляді класу. Вона починається службовим словом class, за яким іде назва класу, а далі, у фігурних дужках, тіло класу – поля змінних і методи: Лістинг 2.1. Перша програма на мові Java class Zero{ public static void main(String[] args){ System.out.println("Hello, World!"); } } Програма може бути написана у будь-якому текстовому редакторі, наприклад Notepad. Потім її потрібно зберегти у файлі, назва якого співпадає з назвою класу і з розширенням .java, у даному випадку Zero.java. Потім програму необхідно скомпілювати, що у даному випадку означає перевести її у байт коди. На комп’ютерах версія JDK може відрізнятися від тієї, яка описана у методичних вказівках (вони оновлюються майже щорічно). Те ж саме стосується і її місця знаходження на диску. Тому при потребі потрібно внести корективи у нижче наведену адресу папки bin. Знаходимо в комп’ютері програму Командная строка (CMD) і відкриваємо її. Рис. 2.1. Програма Командная стрічка Потрібно повернутися до кореневої директорії С, де знаходиться JDK. Для цього потрібно набрати у командному рядку сd C:\ і натиснути Enter (cd – change directory). Тепер потрібно викликати компілятор javac, що знаходиться у папці bin і вказати йому файл для компіляції (після натискання Enter компілятор створить файл с байт-кодами, дасть йому назву Zero.class і запише у біжучий каталог. Якщо все пройшло як потрбіно, Командная строка повернеться до кореневої директорії С). Для запуску програми необхідно викликати інтерпретатор java (JVM), передавши йому в якості аргумента назву класа. Рис. 2.2. Перша Java програма На цьому прикладі можна зауважити низку суттєвих особливостей мови Java. Будь-яка програма є одним або декількома класами. У прикладі є лише один клас (class). Початок класу позначачється службовим словом class, за яким іде назва класу, що вибирається довільно. У даному випадку Zero. Все, що міститься у класі, записується у фігурних дужках і складає тіло класу (class body). Всі дії виконуються за допомогою методів обробки інформації (method). Цей термін вживається у мові Java замість назви "функція", що використовується в інших мовах. Методи розрізняються за іменами. Один із методів обов’язково повинен називатися main. З нього починається виконання програми. У прикладі лише один метод, тому його назва main. Метод завжди повертає (returns) лише одне значення, тип якого обов’язково вказується перед назвою метода. Метод може і не повертати жодного значення, виконуючи роль процедури, як у прикладі. Тоді замість типу значення записується слово void. Після назви метода у дужках через кому перераховуються аргументи (arguments) - або параметри метода. Для кожного аргумента вказується його тип і, через пробіл, назва. У прикладі лише один аргумент, його тип — масив, що складається з рядків символів. Рядок символів — це вбудований у Java API тип String, а квадратні дужки — ознака масива. Назва масива може бути довільною (у прикладі вибрана назва args). Перед типом значення, що повертається методом, можуть бути записані модифікатори (modifiers). У прикладі їх два: слово public означає, що цей метод доступний з будь-якого місцяпрограми; слово static забезпечує можливість виклику метода main () у самому початку виконання програми. Модифікатори необов’язкові, але для метода main () вони необхідні. У тексті після назви метода ставляться дужки, щоб підкреслити, що це є назва метода, а не простої змінної, а все, що містить метод, тіло метода (method body), записується у фігурних дужках. Єдина дія, яку виконує метод main () у прикладі, полягає у виклику іншого метода зі складеною назвою System.out.println() і передачі йому на опрацювання одного аргумента – текстової константи "Hello, World!". Текстові константи записуються у лапках, які є тільки обмежувачами і не входять у склад тексту. Складна назва System.out.println() означає, що у класі System, який входить у Java API, визначається змінна з назвою out, яка містить екземпляр одного із класів Java API - клас PrintStream. У ньому є метод println(). Дія метода println () полягає у виведенні свого аргумента у вихідний потік, який, як правило, пов’язаний з виведенням тексту на екран термінала. Після виведення курсор переходить на початок наступного рядка екрана, на що вказує закінчення ln, слово println – скорочення слів print line. У складі об’єкта out є метод print (), який залишає курсор у кінці виведеного рядка. Для ознайомлення з іншими вбудованими методами класу System необхідно відкрити однойменний файл папки Java2. Отже, всі Java-програми містять у собі чотирі основні елементи: класи (classes) – елементи програми, що містять у собі змінні та методи; інтерфейси (interfaces) – різновид класів, який викоритосвується у спеціальних випадках (реалізація множинного наслідування і протоколів); змінні (variables) – елементи програми, в яких зберігаються дані; методи (methods) – елементи програми, які виконують дії над даними (аналогічні функціям, процедурам і підпрограмам в інших мовах програмування); пакети (packages) – група зв’язаних за змістом класів та інтерфейсів. Для того, щоб використовувати класи та інтерфейси, які містяться у пакетах, необхідно зробити їх доступними у програмі. Для цього використовується оператор чи оператори import з назвою пакету та назвою класу пакету, який буде використовуватись, наприклад: import java.util.Date; виконує імпорт класу Date з пакету java.util. Якщо необхідно використовувати декілька класів чи інтерфейсів з пакету, звичайно замість назви класу чи інтерфейсу ставиться символ "*", що вказує на те, що у даній програмі доступні всі класи та інтерфейси даного пакету, наприклад: import java.awt.*; виконує імпорт всіх класів з пакету java.awt. Варто зауважити, що імпорт пакету java.lang задавати не потрібно, оскільки цей пакет імпортується у програми на мові Java по замовчуванню. Також неоюхідно зробити важливе зауваження. Мова Java розрізняє великі і малі літери, назви main, Main, MAIN є різними з "точки зору" компілятора Java. У прикладі важливо писати String, System з великої літери, a main з маленької. У середині текстової константи не має значення чи писати World чи world. Компілятор не "дивиться" на неї і різниця буде помітна лише на екрані. Свої назви можна записувати як завгодно, але між Java-програмістами заключено договір під назвою "Code Conventions for the Java Programming Language", з яким можна ознайомитися за адресою http://java.sun.com/docs/codeconv/index.html. Наведемо декілька пунктів з цього договору: назви класів починаються з великої літери; якщо назва містить декілька слів, то кожне слово починається з великої літери; назви методів і змінних починаються з малої літери; якщо назва містить декілька слів, то кожне наступне слово також починається з малої літери; назви констант записуються повністю великими літерами; якщо назва містить декілька слів, то між ними ставиться знак підкреслювання. Звичайно, ці правила є необов’язковими, але значно полегшують розуміння кода і надають програмі характерний для Java стиль. 2.2. ВСТАНОВЛЕННЯ SDK І СКЛАД SDK Встановлення здійснюється автоматично і єдині параметри, які необхідно вказати –це місце розміщення та назва пакету, а також компоненти, що будуть встановлюватись. При встановленні створюються наступні підкаталоги: bin – виконувані модулі та утиліти SDK; demo – демонстраційні приклади; include – файли заголовків C та C++, які використовуються для побудови середовища Java; lib – бібліотеки та архіви (в форматах .lib, .zip, та .jar), які використовуються SDK; src – вихідний код бібліотек Java (якщо цей компонент включений). Для того, щоб виконувані модулі та утиліти пакету SDK могли запускатися з будь-якого каталога без вказання шляху до них, необхідно додати в параметр команди PATH в autoexec.bat шлях до каталогу bin, наприклад: c:\jdk1.3\bin\ (або додати її вручну у змінні середовища); Крім того, Java використовує змінну середовища CLASSPATH для вказання шляху до класів Java. Якщо SDK встановлений у каталог за замовчуванням, тоді змінну СLASSPATH можно не встановлювати, інакше її необхідно встановити в autoexec.bat за допомогою команди SET CLASSPATH=назва-каталога 2.3. ТЕХНОЛОГІЯ ПРОГРАМУВАННЯ НА МОВІ JAVA З ВИКОРИСТАННЯМ SDK Текст програми на мові Java перетворюється у спеціальні команди (байт-коди) віртуальної машини Java, які не залежать від конкретної комп’ютерної платформи та операційної системи. У свою чергу, при виконанні програми, байт-коди перетворюються у команди процесора та одразу ж виконуються (режим інтерпретації).  Рис.2.3. Забезпечення багатоплатформенності мови Java Необхідно звернути увагу на те, що під час компіляції вказується повна назва файлу з текстом програми (з розширенням .java), а при запуску інтерпретатора – назва файлу, який містить байт-коди. Файли компілятора javac.exe та інтерпретатора java.exe знаходяться у підкаталозі bin каталогу, який містить SDK, і є програмами, які виконуються в режимі командного інтерпретатора (Windows NT/2000/XP/2003) чи MS DOS (Windows 95/98). Команда запуску програми javac має насутпний вигляд: javac [опції] [вихідні файли] [@файли] Вказані аргументи можуть йти у довільному порядку. Якщо виконується компіляція одного чи декількох вихідних файлів, їх можна задати в командній стрічці, відокремивши один від одного пробілами. Іншим рішенням є запис назв файлів, які будуть компілюватися, в окремому файлі і вказати назву цього файлу в параметрі @файли. Основні опції програми javac наведені нижче: classpath – встановлення шляху до каталогів, де розміщуються класи користувача; sourcepath – встановлення шляху до каталогів, де розміщуються вихідні файли користувача; d каталог – вказування каталогу, в якому будуть міститися відкомпільовані програми; g – виведення всієї відлагоджувальної інформації про файли, включаючи локальні змінні; verbose – виведення інформації про кожний завантажений клас та кожний відкомпільований вихідний файл. Команда запуску програми java має такий вигляд: java [опції] клас [параметри ...] java [опції] -jar назва-jar-файлу [параметри ...] Клас – це назва класу (без розширення .class), який має бути виконаний. Назва-jar-файлу – назва архіву, де знаходиться клас, який має бути виконаний (використовується тільки разом із опцією -jar). Параметри – параметри командної стрічки, які передаються у метод main (відділяються один від одного пробілами). Основні опції програми java наведені нижче: classpath або cp – встановлення шляху до каталогів, де розміщуються класи користувача; showversion – виведення повідомлення про версію та продовження роботи; verbose або (verboseclass) – виведення інформації про кожний завантажений клас. 2.4. КОМЕНТАРІ У ПРОГРАМІ У тексті програми можна вставляти коментарі, які компілятор не буде враховувати. У період налаштування можна виключати з програми один або декілька операторів, помітивши їх символами коментаря (“закоментувати). Коментарі вводяться наступним чином: за двома похилими рисками //, без пробілу між ними, починається коментар, що продовжується до кінця рядка; за похилою рискою і зірочкою /* починається коментар, котрий може займати декілька рядків, до зірочки і похилої риски */ (без пробілів між цими знаками). Коментарі дуже зручні для читання і розуміння коду, вони перетворюють програму в документ, що описує її дії. Програму з хорошими коментарями називають самодокументованою. Тому в Java введені коментарі третього типу, а в склад JDK — програму javadoc, яка поміщає ці коментарі в окремі файли формату HTML і створює гіперпосилання між ними: за похилою рискою і двома зірочками підряд, без пробілів, /** починається коментар, який може займати декілька рядків до зірочки з однією похилою рискою */ і опрацьовується програмою javadoc. У такий коментар можна вставити вказівки програмі javadoc, які починаються символом @. Таким чином створюється документація в JDK. Додамо коментарі до нашого прикладу (лістинг 2.2). Лістинг 2.2. Перша програма з коментарями class HelloWorld{ /** *Пояснення змісту і особливостей програми... * @author Ім’я Прізвище (автора) * @version 1.0 (версія програми) */ // HelloWorld — це лише назва // Наступний метод починає виконання програми public static void main(String[] args){ // args не використовується /* Наступний метод просто виводить свій аргумент на екран дисплея */ System.out.println("Hello, 21st Century World!"); // наступний виклик закоментований, метод не буде виконуватися // System.out.println("Farewell, 20th Century!"); } } Зірочки на початку стрічки не відіграють жодної ролі, вони лише допомагають слідкувати за коментарем. Приклад 2.2. звичайно перевантажений поясненнями (це поганий стиль), тут просто показані різні форми коментарів. 2.5. КОНСТАНТИ У мові Java можна записувати константи різних типів у різних виглядах. Перерахуємо їх. 2.5.1. ЦІЛІ КОНСТАНТИ Цілі константи можна записувати у трьох системах числення: у десятковій формі: +5, -7, 12345678; у вісімковій формі, починаючи з нуля: 027, -0326, 0777; в записі таких констант неприпустимими є цифри 8 і 9; у шістнадцятковій формі, починаючи з нуля і латинської літери х або X: 0xff0a, 0xFC2D, 0x45a8, 0X77FF; тут великі і малі літери не розрізняються. Цілі константи зберігаються у форматі типу int (див. нижче). У кінці цілої константи можна записати велику літеру L або малу l (рекомендують не використовувати, тому що її легко сплутати з одиницею), тоді константа буде зберігатися у довгому форматі типу long (див. нижче): +25L, -0371, 0xffL, 0xDFDF1. 2.5.2. Дійсні константи Дійсні константи записуються лише в десятковій системі числення в двох формах: з фіксованою крапкою: 37.25, -128.678967, +27.035; з плаваючою крапкою: 2.5е34, -0.345е-25, 37.2Е+4; можна писати велику або малу латинську літеру Е; пробіли і дужки неприпустимі. У кінці дійсної константи можна поставити літеру F або f, тоді константа буде зберігатися у форматі типу float (див. нижче): 3.5f, -45.67F, 4.7e-5f. Можна вказувати і літеру D (або d): 0.045D, -456.77889d, що означає тип double, але це зайве, оскільки дійсні константи і так зберігаються у форматі типу double. 2.5.3. Символьні константи Для запису одиничних символів використовуються наступні форми: Друковані символи можна записувати в апострофах: 'а', 'N', '?'. Чкщо замініть у програмі HelloWorld команду System.out.println("Hello, World!") на System.out.println('H'), тоді буде надрукована літера Н. Якщо ж написатиSystem.out.println('Hello, World!'), тоді компілятор відмовиться працювати з такою програмою. Керуючі символи записуються в апострофах з оберненою похилою рискою: '\n' — символ переведення рядка newline з кодом ASCII 10; '\r' — символ повернення каретки CR з кодом 13; '\f' — символ переведення сторінки FF з кодом 12; '\b' — символ повернення на крок BS з кодом 8; '\t' — символ горизонтальної табуляції НТ з кодом 9; '\\' — обернена похила риска; '\"' — лапка; '\'' — апостроф. Код будь-якого символу з десятковим кодуванням від 0 до 255 можна задати, записавши його не більше ніж трьома цифрами у вісімковій системі числення в апострофах після оберненої похилої риски: '\123' — буква S, '\346' — буква “ц”. Не рекомендується використовувати цю форму запису для друкованих і керуючих символів, перерахованих у попередньому пункті, оскільки компілятор переведе вісімковий запис у вказану вище форму. Найбільший код '\377' — десяткове число 255. Код будь-якого символу у кодуванні Unicode набирається в апострофах після оберненої похилої риски, латинської літери u і чотирма шістнадцятковими цифрами: '\u0053' — буква S, '\u0416' — знак питання ?. Спробуйте програму з командами System.out.println('\123'); System.out.println('\346'); System.out.println('\u0053'); System.out.println('\u0416'); Символи зберігаються у форматі типу char (див. нижче). Великі кириличні літери у кодуванні Unicode займають діапазон від '\u0410' — велика літера А, до '\u042F' — велика літера Я, малі літери '\u0430' — а, до '\044F' — я. У якій би формі не записувалися символи, компілятор переводить їх в Unicode, включаючи і вихідний текст програми, оскільки і компілятор, і виконуюча система Java працюють тільки з кодуванням Unicode. 2.5.4. Рядкові константи Рядки символів поміщаються у лапки. Керуючі символи і коди записуються в рядках точно так само, з оберненою похилою рискою, але без апострофів, і викликають ті самі дії. Рядки можуть розташовуватися лише в одному рядку вихідного кода. Заборонено відкриваючі лапки ставити в одному рядку, а закриваючі — у наступному. Приклади: "Цей рядок\nз переносом" "\"Карпати\" — Чемпіон!" Для рядкових констант визначена операція з’єднання і позначається плюсом. " Зєднання " + "рядків" дає в результаті рядок "Зєднання рядків". 2.6. ІМЕНА (НАЗВИ) Імена (names) змінних, класів, методів і інших об’єктів можуть бути простими (загальна назва — ідентифікатори (idenifiers)) і складними (qualified names). Ідентифікатори в Java складаються з так званих літер Java (Java letters) і цифр 0 - 9, причому першим символом ідентифікатора не може бути цифра. У число літер Java обов’язково входять великі і малі латинські літери, знак долара $ і знак підкреслювання _, а також символи національних алфавітів. Рекомендується не вживти в назвах знак долара. Компілятор Java використовує його для запису назв вкладених класів. Приклади правильних ідентифікаторів: a1 , my_var, var3_5, _var, veryLongVarName, aName, theName, a2Vh36kBnMt456dX У назвах краще не вживати малу літеру l, яку легко сплутати з одиницею, і літеру О, котру легко прийняти за нуль. У класі Character, що входить до складу Java API, є два методи, які перевіряють, чи придатний даний символ для використання в ідентифікаторі: isJavaIdentifierStart() перевіряє чи є символ літерою Java придатною для першої літери ідентифікатора та isJavaldentifierPart(), який виясняє, чи можна взагалі вживати цей символ в ідентифікаторі. Спробуйте наступні дві програми щоби побачити який із ASCII символів на що придатний. class Test { public static void main(String[] args) { for (int i = 0; i < 256; i++) { if (Character.isJavaIdentifierStart((char)i)) System.out.println(Integer.toString(i)+ " " + (char)i + " is Java Identifier Start Symbol" ); else System.out.println(Integer.toString(i)+ " " + (char)i + " isn't Java Identifier Start Symbol" ); } } } і class Test { public static void main(String[] args) { for (int i = 0; i < 256; i++) { if (Character.isJavaIdentifierPart((char)i)) System.out.println(Integer.toString(i)+ " " + (char)i + " is Java Identifier Part Symbol" ); else System.out.println(Integer.toString(i)+ " " + (char)i + " isn't Java Identifier Part Symbol" ); } } } Службові слова Java, такі як class, void, static, є зарезервованими, їх не можна використовувати в якості ідентифікаторів. Складна назва (qualified name) — це декілька ідентифікаторів, розділених крапками без пробілів, наприклад, System.out.println. 2.7. ПРИМІТИВНІ ТИПИ ДАНИХ І ОПЕРАЦІЇ 2.7.1. Загальна класифікація Всі типи вихідних даних, вбудованих у мову Java, діляться на дві групи: примітивні типи (primitive types) и ссилочні типи (reference types). Ссилочні типи діляться на масиви (arrays), класи (classes) та інтерфейси (interfaces). Примітивних типів є вісім. Їх можна розділити на логічний тип boolean і числові (numeric). До числових типів відносяться цілі (integеr) та дійсні (floating-point) типи. Цілих типів п’ять: byte, short, int, long, char. Символи можна використовувати всюди, де вживається тип int, тому JLS зараховує їх до цілих типів. Наприклад, їх можна використовувати в арифметичних обчисленнях, скажімо, можна написати 2 + 'b', до двійки буде доданий ASCII код 98 літери 'b' і в результаті додавання одержимо 100. У записі 2 + "b" плюс розуміється як з’єднання рядків, двійка буде перетворена у рядок, в результаті одержимо рядок "2b". Дійсних типів є два: float і double. Оскільки за назвою змінної неможливо визначити її тип, всі змінні обов’язково повинні бути описані перед їх використанням. Описання полягає у тому, що записується назва типу, потім, через пробіл, список назв змінних, розділених комою. Для всіх або деяких змінних можна вказати початкові значення після знака рівності, якими можуть бути будь-які константні вирази цього ж типу. Опис кожного типу закінчується крапкою з комою. У програмі може бути скільки завгодно описів кожного типу. Слід пам’ятати, що Java — мова зі строгою типізацією (strongly typed language). 2.7.2. Логічний тип Значення логічого типу boolean виникають у результаті різних порівнянь, наприклад, 2 > 3, і використовуються, головним чином, в умовних та циклічних операторах. Логічних значень є два: true (вірно) і false (невірно). Це службові слова Java. Описан змінних цього типу виглядає наступним чином: boolean b = true, bb = false, bool2; Над логічними даними можна виконувати операції присвоювання, наприклад, bool2 = true, у тому числі й сумісні з логічними операціями; порівняння на рівність b == bb і на нерівність b != bb, а також логічні операції. 2.7.3. Логічні операції Логічні операції: заперечення (NOT) ! (позначається знаком оклику); кон’юнкція (AND) & (амперсанд); диз’юнкція (OR) | (вертикальна риска); виключне АБО (XOR) ^ (каре). Ці операції виконуються над логічними даними, їх результатом буде також логічне значення true або false. Нагадаємо таблицю логічних операцій: Таблиця 2.1. Логічні операції b1 b2 !b1 b1&b2 b1|b2 b1^b2  true true false true true false  true false false false true true  false true true false true true  false false true false false false  Словами ці правила можна виразити так: заперечення змінює значення істинності; кон’юнкція вірна, тільки якщо обидва операнди вірні; диз’юнкція невірна, тільки якщо обидва операнди невірні; виключне АБО вірне, тільки якщо значення операндів є різними. Крім перерахованих чотирьох логічних операцій існує ще дві логічні операції скороченого обчислення: скорочена кон’юнкція (conditional-AND) &&; скорочена диз’юнкція (conditional-OR) ||. Здвоєні знаки амперсанда і вертикальної риски необхідн записувати без пробілів. Правий операнд скорочених операцій обчислюється тільки у тому випадку, якщо від нього залежить результат операції, тобто якщо лівий операнд кон’юнкції має значення true, або лівий операнд диз’юнкції має значення false. Це правило дуже зручне і часто використовується , наприклад, можна записувати вирази (n != 0) && (m/n > 0.001) або (n == 0) || (m/n > 0.001) не боячись ділення на нуль. 2.7.4. Цілі типи Специфікація мови Java, JLS, визначає розрядність (кількість байтів, що відводяться для зберігання значень типу в оперативній пам’яті) і діапазон значень кожного типу. Для цілих типів вони наведені у табл. 2.2. Таблиця 2.2. Цілі типи Тип Розрядність (байт) Діапазон  byte 1 від -128 до 127  short 2 від -32768 до 32767  int 4 від -2147483648 до 2147483647  long 8 від -9223372036854775808 до 9223372036854775807  char 2 від '\u0000' до '\uFFFF', у десятковій формі від 0 до 65535   Для Java розрядність не настільки важлива, оскільки на деяких комп’ютерах вона може відрізнятися від наведеної у таблиці, Проте діапазон значень повинен витримуватись беззастережно. Хоча тип char займає два байти, в арифметичних обчисленнях він працює як тип int, йому виділяється 4 байти, два старших байти заповнюються нулями. Приклади визначення змінних цілих типів: byte b1 = 50, b2 = -99, bЗ; short det = 0, ind = 1; int i = -100, j = 100, k = 9999; long big = 50, veryBig = 2147483648L; char c1 = 'A', c2 = '?', newLine = '\n'; Цілі типи зберігаються у двійковому вигляді з додатковим кодом. Останнє означає, що для від’ємних чисел зберігається не їх двійкове представлення, а доповняльний код цього двійкового представлення. Доповнюючий код отримують наступним: у двійковому представленні всі нулі замінюються на одиниці, а одиниці на нулі, після чого до результату додається одиниця. Наприклад, значення 50 змінної b1, визначеної вище, буде зберігатися в одному байті з вмістом 00110010, а значення -99 змінної b2 — у байті із вмістом, який обчислюється таким чином: число 99 переводиться у двійкову форму, одержується 01100011, одиниці міняються з нулями, одержується 10011100, і додається одиниця. Миодержали байт із вмістом 10011101. Над цілими типами можна виконувати велику кількість операцій. Їх набір визначився у мові С. Особливості застосування цих операцій у мові Java показані на прикладах. 2.7.5. Операції над цілими типами Всі операції, які виконуються над цілими числами, можна розділити на наступні групи. 2.7.5.1. Арифметичні операції До арифметичних операцій відносяться: додавання + (плюс); віднімання - (дефіс); множення * (зірочка); ділення / (похила риска — слеш); остача від ділення (ділення по модулю) % (процент); інкремент (збільшення на одиницю) ++; декремент (зменьшення на одиницю) - - Між спареним плюсами і мінусами не можна залишати пробіли. Додавання, віднімання і множення цілих значень виконується як звичайно, а от ділення цілих значень в результаті дає знову ціле (так зване "ціле ділення"), наприклад, 5/2 дасть у результаті 2, а не 2.5, а 5/(-3) дасть -1. Дробова частина відкидається. Операція ділення за модулем визначається наступним чином: а % b = а - (а / b) * b; наприклад, 5%2 дасть в результаті 1, а 5% (-3) дасть 2, тому що 5 = (-3) * (-1) + 2, але (-5)%3 дасть -2, оскільки -5 = 3 * (-1) - 2. Операції інкремент і декремент означають збільшення або зменшення значення змінної на одиницю і застосовуються тільки для змінних, а не для констант чи виразів, не можна написати 5++ або (а + b)++. Ці операції можна записати і перед змінною: ++i, - - j. При першій формі запису (постфіксній) у виразі приймає участь старе значення змінної і лише потім відбувається збільшення чи зменшення її значення. При другій формі запису (префіксній) спочатку зміниться змінна і її нове значення буде приймати участь у виразі. 2.7.5.2. Приведення типів Результат арифметичної операції має тип int, крім того випадку, коли один із операндів є типу long. У цьому випадку результат буде типу long. Перед виконанням арифметичної операції завжди відбувається підвищення (promotion) типів byte, short, char. Вони перетворюються у тип int, а може бути, і в тип long, якщо інший операнд має тип long. Операнд типу int підвищується до типу long, якщо інший операнд є типу long. Звичайно, числове значення операнда при цьому не змінюється. Це правило приводить інколи до неочікуваних результатів. Спроба скомпілювати програму, представлену у лістинзі 2.3, призведе до повідомлення компілятора про помилку: Лістинг 2.3. Невірне визначення змінної class InvalidDef{ public static void main (String [] args) { byte b1 = 50, b2 = -99; short k = b1 + b2; // Невірно! System.out.println("k=" + k); } } Це повідомлення означає, що у файлі InvalidDef.java, у рядку 4, виявлена можлива втрата точності (possible loss of precision). Потім приводиться виявлений (found) і потрібний (required) типи, виводиться рядок, в якому виявлена (а не зроблена) помилка, і відмічається символ, при аналізі якого знайдена помилка. У кінці вказано загальну кількість виявлених (а не зроблених) помилок (1 error). У таких випадках потрібно виконувати явне приведення типу. У даному випадку це буде звуження (narrowing) типу int до типу short. Воно здійснюється операцією явного приведення, яка записується перед потрібним значенням у вигляді імені типу в дужках. Визначення short k = (short)(b1 + b2); буде вірним. Звуження відбувається просто відкиданням старших бітів, що необхідно враховувати для великих значень. Наприклад, визначення byte b = (byte) 300; присвоїть змінній b значення 44. Дійсно, у двійковому представленні числа 300, рівному 100101100, відкидається старший біт і отримується 00101100. Таким чином можна привести і явне розширення (widening) типу, якщо в цьому є необхідність. Якщо результат цілої операції виходить за діапазон свого типу int або long, то автоматично відбувається приведення за модулем, який рівний довжині цього діапазона, і обчислення продовжуються, переповнення жодним чином не відбувається. 2.7.5.3. Операції порівняння У мові Java існує шість звичайних операцій порівняння цілих чисел за величиною: більше >; менше <; більше або дорівнює >=; менше або дорівнює <=; дорівнює ==; не дорівнює !=. Спарені символи записуються без пробілів, їх не можна переставляти місцями, запис => будет невірним. Результат порівняння — логічне значення: true, в результаті, наприклад, порівняння 3 != 5; або false, наприклад, в результаті порівняння 3 == 5. Для запису складних порівнянь необхідно застосовувати логічні операції. Наприклад, в обчисленнях часто приходиться здійснювати перевірку типу а < х < b. Подібний запис у мові Java призведе до повідомлення про помилку, оскільки перше порівняння, а < х, дасть true або false, a Java не знає, більше це, ніж b, чи менше. У даному випадку необхідно написати вираз (а < х)
Антиботан аватар за замовчуванням

25.05.2016 15:16

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!