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];
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.