Основні апгоритмічні структури мови Java, страница 2

int myDataMember = 0;

public MyType() {

System.out.println("Object in process!");

} }

Конструктори можна використовувати також для ініціалізації (присвоєння початкових значень) членів-змінних даного  класу.  Ось  приклад  конструктора,  що  присвоює змінній myDataMember цілочисельне значення, передане цьому конструктору через аргумент. Приклад 2.4 Конструктор, який виконує ініціалізацію змінної, publicMyType(intval)    {

System.out.println("setting myDataMember=" + val);

myDataMember = val; }

Тепер представимо, що обидва приведених вище конструктора визначені в нашому класі myDataType. От ще один фрагмент програми, у якому використовуються обидва ці конструктора. Приклад 2.5 Клас з двома конструкторами, public class RunMe   {

public static void main(String argv[]) { MyType instancel = new MyType(); MyType instance2 = new MyType(100);

} }

Результат роботи цієї програми буде мати наступний вид: Object  in progress! I'm a member! myDataType=4 setting myDataType=100 I'm a member! myDataType=100

TunString

Дотепер ми говорили про примітивні типи і про типи, визначені користувачем. Тепер розглянемо один особливий тип, що являє собою гібрид цих двох типів, - тип String (тип рядкових змінних). В основі своїй тип String є типом, визначеним користувачем, тому що він визначається як однойменний клас String, що містить у собі методи і змінні. Але в той же час цей тип виявляє деякі властивості примітивного типу, що виражається, зокрема, у тім, як здійснюється присвоєння значень змінним цього типу. StringmyString  =   "Hello!";

Незважаючи на те, що такий спосіб оголошення й ініціалізації змінних типу String є не зовсім законним з погляду синтаксису типів, визначених користувачем, не можна не визнати, що для об'єкта, який так часто зустрічається в програмуванні, як рядок символів, цей спосіб є самим очевидним і зручним. Крім того, для конкатенації (додавання) двох рядків можна використовувати знак операції +. intmuint  =  4; StringanotherString  = myString  +   "myint  is   "   + myint;

Після виконання зазначених дій значення змінної anotherString буде "Hello! myint is 4". Однак оскільки anotherString є в той же самий час і об'єктом, ми можемо викликати методи - члени класу String. Так, щоб вирізати перші п'ять символів рядка anotherString, потрібно написати наступний

вираз:

String helloString=anotherString.substring(5);

Як бачите, реалізація змінних типу String не вимагає застосування оператора new. З погляду практики програмування це дуже зручно, оскільки рядкові змінні використовуються дуже часто. Однак, програмуючи мовою Java, ви завжди повинні пам'ятати про те, що тип String є особливим - це

З


Об'єктно-орієнтоване програмування                                                                                                                                                    Java2

єдиний визначений користувачем тип, змінні якого можуть з'являтися і використовуватися без застосування оператора new.

Типимасиву

Типи масиву використовуються для визначення масивів - упорядкованих наборів однотипних змінних. Ви можете визначити масив над будь-яким існуючим у мові типом, включаючи типи, визначені користувачем. Крім того, можна користатися масивами масивів чи багатовимірними масивами. Коротко говорячи, якщо ми можемо створити змінну деякого типу, виходить, ми можемо створити і масив змінних цього типу. Разом з тим створення масивів у мові Java може показатися вам незвичним, тому що воно вимагає застосування оператора new.

Приклад 2.6.  Виділення пам'яті для масивів

int mylntArray[]; mylntArray = new int[3]; MyType myObj ectArray[]; myObjectArray = new MyType[3];