
- •Методичні вказівки
- •1.2.1. Методичні вказівки до використання базових типів даних
- •Void ChangeX(int X)
- •1.2.2. Методичні вказівки до використання бібліотеки класів Java
- •1.2.3. Використання убудованих класів
- •1.2.4. Використання класів, що заміщають базові типи
- •1.2.5. Використання класу String
- •1.2.6. Використання інших убудовані класів
- •1.2.7.4. Використання бібліотеки класів java.Awt
- •1.2.7.5. Використання бібліотеки класів java.Awt.Image
- •1.2.7.6. Використання бібліотеки класів java.Awt.Peer
- •1.2.7.7. Використання бібліотеки класів java.Applet
- •1.2.8. Використання покажчиків, яких немає
- •Integer nSomeValue;
- •1.2.9. Використання масивів в Java
- •Int[] nAnotherNumbers;
- •1.2.10. Використання спеціального процесу зборки сміття
- •Volume is 3000
- •4.4 Контрольні запитання та завдання
- •5.2.1. Створення простого апплету.
- •Import java.Awt.*;
- •Import java.Applet.*;
- •Void drawString(String повідомлення, int X, int y)
- •Void repaint()
- •Void repaint(int ліво, int догори, int ширина, int висота)
- •Import java.Awt.*;
- •Import java.Applet.*;
- •6.4 Контрольні запитання і завдання
1.2.9. Використання масивів в Java
Для створення масиву ви можете користатися квадратними дужками, розташувавши їх праворуч від імені чи масиву від типу об'єктів, з яких складений масив, наприклад:
int nNumbers[];
int[] nAnotherNumbers;
Припустимо обидва варіанти, тому ви можете вибрати той, котрий вам більше подобається.
При визначенні масивів у мові Java не можна вказувати їхній розмір. Приведені вище два рядки не викликають резервування пам'яті для масиву. Тут просто створюються посилання на масиви, що без ініціалізації використовувати не можна.
Для того щоб замовити пам'ять для масиву, ви повинні створити відповідні об'єкти за допомогою ключового слова new, наприклад:
int[] nAnotherNumbers;
nAnotherNumbers = new int[15];
Як виконати ініціалізацію осередків таблиці?
Таку ініціалізацію можна виконати або статично, або динамічно. У першому випадку ви просто перелічуєте значення у фігурних дужках, як це показано нижче:
int[] nColorRed = {255, 255, 100, 0, 10};
Динамічна ініціалізація виконується з використанням індексу масиву, наприклад, у циклі:
int nInitialValue = 7;
int[] nAnotherNumbers;
nAnotherNumbers = new int[15];
for(int i = 0; i < 15; i++)
{
nAnotherNumbers[i] = nInitialValue;
}
Ви можете створювати масиви не тільки з змінних базових типів, але і з довільних об'єктів. Кожен елемент такого масиву повинний ініціалізуватися оператором new.
Помітимо, що під час виконання додатка віртуальна машина Java перевіряє вихід за границі масиву. Якщо додаток намагається вийти за границі масиву, відбувається виключення.
Масиви в мові Java є об'єктами деякого убудованого класу. Для цього класу існує можливість визначити розмір масиву, звернувшись до елемента даних класу з ім'ям length, наприклад:
Int[] nAnotherNumbers;
nAnotherNumbers = new int[15];
for(int i = 0; i < nAnotherNumbers.length; i++)
{
nAnotherNumbers[i] = nInitialValue;
}
1.2.10. Використання спеціального процесу зборки сміття
Одна з найцікавіших особливостей мови програмування Java і середовища виконання додатків Java полягає в наявності спеціального процесу зборки сміття, призначеного для видалення непотрібних об'єктів з пам'яті. Ця система рятує програміста від необхідності уважно стежити за використанням пам'яті, звільняючи непотрібні більш області явно.
Створюючи об'єкти в Java, ви можете керуватися принципом "створи і забудь", тому що система зборки сміття подбає про видалення ваших об'єктів. Об'єкт буде вилучений з пам'яті, як тільки на нього не залишиться жодного посилання з інших об'єктів.
Пріоритет процесу зборки сміття дуже низький, тому "збирання" середовища виконання додатків Java не віднімає ресурси в самих додатків.
1.2.11. Розробка класів і створення програм.
Класи в Java дуже схожі на класи в C++, але є декілька відмінностей. Нижче будуть розглянуті деякі аспекти класів у Java. Почнемо наш аналіз із розгляду спільного між класами C++ і класами Java. Класи Java можуть містити як змінні-члени, так і функції-члени (методи). Для даного об'єкта доступ до членів класу здійснюється за допомогою оператора “крапка”. Класи Java можуть містити конструктори. Конструктори можуть бути перевантаженими.
Як і в C++, клас являється шаблоном для об'єкта. Клас об'являється за допомогою ключового слова class. Стандартний вигляд визначення класу наступний:
class ім'я_класу {
тип змінна-член_1;
тип змінна-член_2;
//...
тип змінна-член_N;
тип ім'я_методу_1(список_параметрів} {
// ... тіло методу...
}
тип ім'я_методу_2(список_параметрів} {
// ... тіло методу...
}
/ ...
тип ім’я_методу_M(список-параметрів) {
// ... тіло методу...
}
}
Дані, визначені в класі, називаються змінними екземпляру. Код міститься в методах. Перед кожним методом може стояти необов'язковий специфікатор доступу для вказівки способу звертання до членів. Коли член класу об'являється зі специфікатором public, ті до даного члена можна звернутися з будь-якої ділянки програми. Коли член класу об'являється зі специфікатором private, ті до даного члена може звернутися тільки інший член класу. Саме тому метод main() повинний завжди об'являтися зі специфікатором public, оскільки він викликається кодом, що знаходиться поза програмою, тобто кодом системи години виконання. Коли не вказується специфікатор доступу, то по умовчанню передбачається, що член значний із будь-якого місця пакета, але недоступний з інших пакетів.
Специфікатор доступу ставитися перед типом члена. Т.п. специфікатор повинний починати оголошення члена. Наприклад:
public int i;
private double j ;
private int myMethod(int a, char b) { // ...
Існує три важливих відзнаки між класами в C++ і класами в Java:
1. У C++ можливо створити код, що не являється методом класу. У Java це неможливо.
2. У Java усі методи визначаються усередині класу. Неможливо оголосити метод поза класом.
3. Специфікатори доступу впливають тільки на те, перед чим смороду стояти. У C++ специфікатори доступу впливають на всю ділянку коду, перед яким смороду стоїшся і до наступного специфікатора.
Розглянемо приклад простого використання класу Java. Нижче наведень клас Box, що визначає три змінних-члена width, height і depth. На даному етапі Box не містить будь-яких методів.
class Box {
double width;
double height;
double depth;
}
Як згадувалося, клас визначає новий тип даних. У даному випадку новий тип даних називається Box. Дане ім'я можна використовувати для оголошення змінних типу Box. Важливо зрозуміти, що оголошення класу створює тільки шаблон, а не самий об'єкт. Таким чином, приведень код не приводити до створення яких-небудь об'єктів типу Box. Для створення об'єкта типу Box варто використовувати оператор, подібний наступному:
Box mybox = new Box(); // створення об'єкта типу Box з ім'ям mybox
Після виконання даного оператора mybox буде екземпляром Box. У такий спосіб клас здобуває фізичну реальність.
Нижче приведена повна програма, що використовує клас Box:
/* програма, що використовує клас Box;
даний файл варто назвати BoxDemo.java
*/
class Box {
double width;
double height;
double depth;
}
// даний клас створює об'єкт типу Box
class BoxDemo {
public static void main(String args[]) {
Box mybox = new Box();
double vol;
// присвоєння значень змінним-членам mybox
mybox.width = 10;
mybox.height = 20;
mybox.depth = 15;
// обчислення об'єму шухляди
vol = mybox.width * mybox.height * mybox.depth;
System.out.println("Volume is " + vol);
}
}
Файл, що містить дану програму, варто назвати BoxDemo. Java, оскільки метод main( знаходиться в класі BoxDemo, а не в класі Box. Після компіляції даної програми на диск” з'являться два нових файли з розширенням class, один - Box, а другий - BoxDemo. Компілятор Java автоматично поміщає кожний клас у власний файл із розширенням class. Зовсім hi обов'язково поміщати вихідний код класів Box і BoxDemo в один файл. Можна помістити їх у власні файли, назвавши відповідно Box.java і BoxDemo.java. Для запуску програми варто виконати BoxDemo.class, у результаті чого на екрані з'явиться: