types classes java
У цьому підручнику будуть розглянуті різні типи занять на Java, такі як Абстрактний, Конкретний, Фінальний, Внутрішній, POJO, Статичний та інші спеціальні класи з прикладами:
У нашому попередньому підручнику ми обговорювали класи та об'єкти на Java. Клас на Java - це шаблон або проект. Його також можна визначити як сукупність подібних об'єктів. Ми визначаємо об'єкти класу типу, а потім здійснюємо зв'язок через ці об'єкти.
Кожен об'єкт є екземпляром класу, який має стан і поведінку.
=> Завітайте сюди, щоб ознайомитись із ексклюзивними навчальними посібниками з Java.
Що ви дізнаєтесь:
Типи класів на Java - Вступ
Ми всі знаємо, що клас має такі компоненти:
- Модифікатори: Вкажіть доступ для класу.
- ClassName: Назва класу.
- Ключові слова: Ключові слова, які пропонують, якщо клас розширює або реалізує клас або інтерфейс.
- Клас Body, укладений у фігурні дужки {}
Залежно від різних використовуваних модифікаторів, зазначеного тіла класу та ключових слів, у нас є різні типи класів на Java.
що таке альфа-тестування при тестуванні програмного забезпечення
- Клас бетону: Звичайний клас, який має конкретну реалізацію методів.
- Клас POJO: Це “Звичайний старий об’єкт Java”, що містить лише приватні змінні-члени та методи отримання доступу до цих змінних.
- Абстрактний клас: Цей клас має один або кілька абстрактних методів.
- Підсумковий клас: Кінцевий клас не можна успадкувати.
- Статичний клас: Клас, що містить лише статичні члени.
- Внутрішній клас: Внутрішній клас - це клас, який є членом іншого класу.
У цьому посібнику ми обговоримо кожен із цих типів класів на прикладах.
Ми також обговоримо деякі інші типи класів, які на Java розглядаються як спеціальні класи.
- Анонімний клас: Клас без жодної назви.
- Незмінний клас: Клас, об’єкт якого не можна змінити.
- Клас синглтон: Клас, одиночний екземпляр якого можна створити.
- Клас об'єкта: Базовий клас усіх функцій Java.
- Клас обгортки: Кожен примітивний тип даних у Java має клас обгортки.
Але спочатку давайте коротко обговоримо, як імпортувати клас на Java разом із класом Main на Java, який містить основний метод або початкову точку на Java.
Імпортувати в Java
У Java, якщо ми хочемо включити будь-яку функцію чи функціонал у нашу програму, тоді ми можемо використати оператор “import”. За допомогою оператора import ми можемо імпортувати весь пакет і використовувати його функціональні можливості в нашій програмі, а також можемо включити один клас.
Нижче наведено синтаксис оператора імпорту.
import packageName/classname;
Якщо ми хочемо імпортувати пакет java.lang та всі його класи, тоді ми можемо написати наступне твердження:
import java.lang.*;
Припустимо, ми хочемо включити функціональність класу Arrays у нашу програму, тоді ми можемо написати наступне твердження:
import java.util.Arrays;
Оператор імпорту еквівалентний оператору включення C / C ++. Оператор імпорту розміщується на початку програми Java як перший оператор. У програмі Java ми можемо мати більше одного твердження.
Основний клас на Java
Ми вже знаємо, що в Java метод main () є початковою точкою виконання будь-якої програми, і його можна помістити в будь-який клас конкретної програми. Однак, якщо ми маємо складну програму із занадто великою кількістю файлів та класів, то доцільно мати клас Main та розмістити метод main () у цьому класі Main.
class Main{ public static void main(String() args){ System.out.println(“Hello, World!”); } }
Зверніть увагу, що JVM не створює об'єкт класу Main. Логіка цього полягає в тому, що оскільки main () є статичним методом, його можна викликати без будь-якого об'єкта класу.
Типи занять на Java
Тепер перейдемо до типів класів на Java. Ми пояснимо кожен із цих класів по черзі, а потім приклади програмування.
# 1) Бетонний клас
Конкретний клас - це будь-який звичайний клас у програмі Java. Цей клас не матиме абстрактних методів. Всі методи в конкретному класі повністю реалізовані.
Конкретний клас може успадкувати від іншого класу, навіть абстрактного класу, або реалізувати інтерфейс. Ми можемо створити екземпляр конкретного класу та створити його об’єкти.
Простий приклад класу бетону наведено нижче.
public class Main { // Concrete Class example static int total(int val1, int val2) { return val1 + val2; } public static void main(String args()) { int sum = total(100, 108); System.out.println('Total of two integers: ' + sum); } }
Вихідні дані
Наведена програма показує конкретний клас. Ми бачимо, що цей клас має повну реалізацію. Нічого не залишилось неповним чи нездійсненим.
# 2) Клас POJO
POJO (Plain Old Java Object) - це клас, що містить лише приватні змінні члени. Окрім приватних змінних-членів, він містить лише методи отримання та встановлення, що використовуються цими змінними-членами.
Клас POJO не має своєї поведінки. Однак це може замінити деякі методи, такі як рівні або інтерфейси.
Властивості класу POJO:
- Клас POJO повинен мати загальнодоступний метод отримання та встановлення.
- Усі члени або змінні екземпляра повинні бути приватними.
- Клас POJO не розширює та не реалізує попередньо задані класи чи інтерфейси.
- Вони не містять попередньо зазначених анотацій.
- Не має конструктора без будь-яких аргументів (конструктор без аргументів).
Нижче наведено програму Java, яка демонструє клас POJO.
//declare a POJO class class POJO_Class { private int daysOfWeek=7; //private variable public int getdaysOfWeek() { //getter return daysOfWeek; } public void setdaysOfWeek(int dow) { //setter this.daysOfWeek = dow; } } public class Main { public static void main(String args()){ POJO_Class pojoDemo = new POJO_Class(); //instance of POJO class System.out.println('Days of the week:' + pojoDemo.getdaysOfWeek()); } }
Вихідні дані
Наведена вище демонстрація класу POJO показує, що він має приватну змінну та методи встановлення методу отримання даних для цієї змінної. Для доступу до цієї змінної-члена ми використовуємо метод getter. Метод встановлення використовується для оновлення значення.
# 3) Абстрактний клас
Абстрактний клас - це клас, який є неповним або реалізація якого не завершена. Неможливо створити екземпляр абстрактного класу. Його потрібно розширити іншими класами та застосувати його методи для формування конкретного класу.
Абстрактний клас оголошується за допомогою ключового слова ‘abstract’. Абстрактний клас може мати статичні та кінцеві методи, а також конструктори.
Давайте продемонструємо абстрактний клас на Java.
interface multiply //interface multiply { int product(int num1, int num2); } // abstract class abstract class Product implements multiply { // this is an abstract method to calculate product of two numbers public abstract int product(int num1, int num2); } // Concrete class :this will implement the abstract method above class Main extends Product { public int product(int num1, int num2) { return num1*num2; } // main method public static void main(String args()) { Main obj = new Main(); int prod = obj.product(100, 20); // print product System.out.println('Product of two numbers: ' + prod); } }
Вихідні дані
У наведеній вище програмі ми маємо інтерфейс множення. Ми створюємо абстрактний клас Product, який реалізує інтерфейс множення. Усередині Продукту ми маємо метод-продукт, який не реалізований. Тоді ми маємо клас Main, який успадковує клас Product і реалізує метод product. Пізніше ми викликаємо цей метод на об'єкті класу Main.
# 4) Статичний клас
Статика в Java загалом означає об'єкт, який належить до класу, а не до окремих екземплярів. Отже, статичний член або метод у Java не повинен отримувати доступ до об’єкта, а безпосередньо за допомогою імені класу.
Статичний клас у Java може містити лише статичні члени. Крім того, ми не можемо створити екземпляр статичного класу.
Наступна програма Java демонструє статичний клас.
class Static_Class { static int total; // static variable static void sum(int val1, int val2) { // static method System.out.print('Static method to calculate sum:' + ' '); total = val1 + val2; System.out.println(val1 + '+' + val2); // print the numbers } static class Nested_Class { // static class static { // static block System.out.println('static block inside a static nested class'); } public void displaySum() { sum(25, 75); // call static method // print the value in static variable total, it holds the sum of two numbers System.out.println('Sum of two numbers:' + total); } } } public class Main { public static void main(String args()) { // declare static class object Static_Class.Nested_Class object = new Static_Class.Nested_Class(); object.displaySum(); // call displaySum method inside a static class } }
Вихідні дані
Вищезазначений клас демонструє статичний клас. Тут ми маємо статичний клас, який є членом іншого конкретного класу. Усередині статичного класу ми обчислюємо суму двох чисел і зберігаємо результат у статичній змінній, яка є членом зовнішнього класу.
No5) Підсумковий клас
Кінцевий клас - це клас, який неможливо успадкувати або підкласифікувати. Після того, як клас оголошено остаточним в Java, це свого роду константа і він стає незмінним.
Отже, щоб зробити клас незмінним, ми повинні оголосити його остаточним.
//final class final class Base_Class { void Display() { System.out.println('Base_Class::Display()'); } } //class Derived_Class extends Base_Class { //Compile-time error - can't inherit final class class Derived_Class{ void Display() { System.out.println('Derived_Class::Display()'); } } public class Main { public static void main(String() arg) { Base_Class base_obj = new Base_Class(); //create a final class object base_obj.Display(); Derived_Class deri_obj = new Derived_Class(); deri_obj.Display(); } }
Вихідні дані
Вищевказана програма спочатку оголошує Base_Class, який позначається як 'остаточний'. Отже, коли ми намагаємося розширити його в Derived_Class, ми отримуємо помилку компілятора. (Рядок, що коментується). Але ми можемо створити його об'єкт і викликати метод Display.
# 6) Вкладений клас / внутрішній клас
Вкладений клас, також відомий як Внутрішній клас у Java, використовується для посилення інкапсуляції. Вкладений клас / Внутрішній клас - це клас, укладений всередині іншого класу.
Подібно до того, як клас має змінні та методи як своїх членів, він також може мати внутрішній клас як свого члена.
Вкладений клас має таку структуру:
class OuterClass{ class NestedClass{ //nested class code… } //outerclass code… }
Внутрішні класи мають такі підтипи:
- Вкладений внутрішній клас
- Метод Місцевий внутрішній клас
- Анонімний внутрішній клас
- Статичний вкладений клас
# 1) Вкладений внутрішній клас
Вкладений внутрішній клас має доступ до змінних приватного члена зовнішнього класу. Ми також можемо застосувати модифікатори доступу до вкладеного внутрішнього класу.
# 2) Метод Місцевий внутрішній клас
Це внутрішній клас, який оголошений всередині методу зовнішнього класу.
# 3) Анонімний внутрішній клас
Анонімний внутрішній клас - це внутрішній клас, оголошений всередині зовнішнього класу, який не має жодного імені.
# 4) Статичний вкладений клас
Те, як клас має статичну змінну-член, він також може мати статичний клас як свого члена.
Приклад класу Вкладений / Внутрішній наведено нижче:
public class Main { //nested/inner class enclosed inside Main class. class InnerClass { public void inner_print() { System.out.println('Inner class'); } } public static void main(String() args) { System.out.println('Main in Outer class'); } }
Вихідні дані
чого не може знайти статичний аналіз
Інші спеціальні класи Java
Незмінний клас на Java
Незмінний клас генерує незмінні об'єкти. Незмінний об'єкт - це об'єкт, вміст якого неможливо змінити після створення об'єкта. Отже, незмінним класом є той, об’єкт якого неможливо змінити після створення.
Усі класи обгортки в Java для примітивних типів (Integer, Boolean, Byte тощо) є незмінними. Клас String також незмінний.
Ми також можемо мати визначені користувачем незмінні класи в Java.
Щоб клас був незмінним, його потрібно оголосити остаточним разом із усіма його членами даних. Крім того, клас повинен мати параметризований конструктор. Усі змінні-члени повинні мати метод getter, але не метод setter.
Усі вищезазначені вимоги повинні бути виконані, щоб клас був незмінним.
Давайте реалізуємо програму Java для демонстрації незмінного класу.
final class City { final String city_name; final int cityId; //parameterised constructor public City(String name, int id) { this.city_name = name; this.cityId = id; } //getters for member variables public String getcityName() { return city_name; } public int getcityId() { return cityId; } } // Driver class class Main { public static void main(String args()) { City city = new City('New York', 1001); System.out.print('City Id:' + city.getcityId() + ' '); System.out.println('City Name:' + city.getcityName()); //city.cityId = 1002; //cannot assign a value to final variable regNo } }
Вихідні дані
У наведеній вище програмі ми оголосили клас City. Це остаточний клас, і в цьому класі ми оголосили дві змінні-члени та параметризований конструктор. Ми також оголосили методи отримання для цих двох змінних-членів. Отже клас City відповідає всім вимогам незмінного класу.
Зверніть увагу на коментований рядок коду в основному методі. Якщо ми прокоментуємо цей рядок, то ми отримаємо помилку компілятора (надану в коментарі тут), оскільки ми намагаємося встановити значення для змінної-члена.
Клас синглтона в Java
Клас-одиночка дозволяє одночасно робити по одному екземпляру. На Java синглтон є шаблоном дизайну. Цей шаблон дизайну гарантує, що в будь-який момент часу існує лише один екземпляр класу. Отже, будь-який клас, визначений як синглтон, має єдину точку доступу, і він є глобальним.
Зверніть увагу, що припинення життєвого циклу програми не руйнує однотонний клас, як звичайні класи. Коли клас оголошено одиночним, ми не створюємо новий екземпляр кожного разу, коли робиться новий запит на об'єкт.
Той самий екземпляр використовується знову і знову. Таким чином, ми можемо заощадити простір пам’яті переважно у випадку багатопотокових додатків та додатків баз даних.
Ми можемо використовувати синглтон-клас для таких заходів, як кешування, реєстрація тощо.
Наступна програма демонструє клас Singleton.
class Singleton { // static variable of type Singleton private static Singleton single_instance = null; // String variable public String str; // private constructor : restricted to this class private Singleton() { str = 'Singleton class::private constructor'; } // create instance of Singleton class using getInstance static method public static Singleton getInstance() { if (single_instance == null) single_instance = new Singleton(); return single_instance; } } class Main { public static void main(String args()) { // instantiate Singleton class with obj1 Singleton obj1 = Singleton.getInstance(); // instantiate Singleton class with obj2 Singleton obj2 = Singleton.getInstance(); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); // change variable of instance obj1 obj1.str = (obj1.str).toUpperCase(); System.out.println('
After changing obj1(str):'); System.out.println('obj1(str):' + obj1.str); System.out.println('obj2(str):' + obj2.str); } }
Вихідні дані
У наведеній вище програмі ми визначили клас singleton із приватним конструктором. Ми визначили змінну-член типу String. У основному методі ми оголошуємо два екземпляри класу singleton. Потім ми змінюємо змінну String, використовуючи один із примірників.
Коли ми друкуємо значення String для обох примірників, ми помічаємо, що значення змінної String змінилося для обох примірників. Отже, хоча ми змінили значення лише для одного екземпляра, через клас singleton зміни відображаються у всіх екземплярах.
Ми завжди повертаємо один і той самий екземпляр, хоча ми створюємо різні екземпляри.
Клас об'єкта в Java
Клас Object - це батьківський клас або перший клас на Java. Він знаходиться на найвищому рівні ієрархії Java.
Оскільки всі класи мають клас Object як суперклас, усі об'єкти Java, включаючи масиви, реалізують методи класу Object. Клас об’єкта присутній у пакунку “java.lang”.
Декларація для java.lang.Object:
об'єкт публічного класу
У наступній таблиці описані конструктори та методи класу Object.
Конструктор / Метод | Опис |
---|---|
Клас getClass () | Повертає клас середовища виконання об'єкта. |
Конструктор класу об’єктів | |
Об'єкт () | Конструктор класу об’єктів |
Методи класу об’єктів | |
клон захищеного об'єкта () | Повертає клон або копію об'єкта. |
boolean дорівнює (Object obj) | Перевіряє, чи заданий об’єкт obj дорівнює цьому об’єкту. |
захищена порожнеча finalize () | Викликається збирачем сміття, коли всі посилання на об’єкт знищуються. |
int hashCode () | Повертає хеш-код для об'єкта. |
повідомити про недійсність () | Використовуйте для пробудження однієї нитки очікування. |
void notifyAll () | Прокидається всі нитки, що очікують. |
Рядок toString () | Повертає рядок, еквівалентний об'єкту. |
порожнечекання () | Змушує потік чекати, поки він не прокинеться методом notify іншим потоком. |
порожнє очікування (довгий тайм-аут) | Змушує потік чекати, поки не закінчиться час, заданий „тайм-аутом”, або не прокинеться методами notify або notifyAll. |
порожнє очікування (довгий тайм-аут, int nanos) | Змушує потік чекати, поки не закінчиться вказаний час, або поки інший потік не викликає notify () або notifyAll (). |
Давайте реалізуємо приклад програми Java, яка продемонструє деякі методи класу Object.
public class Main { public static void main(String() args) { Main t = new Main(); System.out.println('Main class Object HashCode:' + t.hashCode()); t = null; // call garbage collector System.gc(); System.out.println('Main class:End'); } @Override protected void finalize() { System.out.println('Main Class::finalize method called.'); } }
Вихідні дані
Тут ми маємо головний клас. У методі main () ми створюємо об'єкт класу Main. Цей об'єкт є нащадком класу Object і підтримує всі методи класу Object. Таким чином, ми використовуємо цей об’єкт і викликаємо кілька методів класу об’єктів, такі як hashCode (), System.GC (), finalize () тощо.
Клас обгортки на Java
Java надає функцію, яка називається класом обгортки, яка має механізм, який перетворює примітивний тип даних в об'єкт і навпаки. Класи обгортки - це класи, які представляють примітивні типи, такі як int, char тощо, як об'єкти.
Таким чином, кожен примітивний тип даних у Java має відповідний клас обгортки.
Наступна таблиця показує примітивні типи даних та їх еквівалентний клас обгортки.
Первісний тип | Тип обгортки |
---|---|
плавати | Поплавок |
логічний | Логічна |
char | Характер |
байт | Байт |
короткий | Короткий |
інт | Ціле число |
довгота | Довгота |
подвійний | Подвійний |
Для перетворення примітивів на об'єкти та об'єктів на примітиви ми маємо техніки, які називаються 'автобокс' та 'бокс' відповідно. Ase Java - це об'єктно-орієнтована мова програмування, ми завжди маємо справу з об'єктами, і у нас також є багато функцій, таких як Колекції, Серіалізація тощо, які також потребують об’єктів та примітивних типів.
Тому дуже важливо, щоб нам завжди потрібні об’єкти та примітивні типи в Java, а отже, нам потрібні ці прийоми автобоксингу та розпаковування.
Автобокс
Автобокс - це техніка автоматичного перетворення примітивного типу даних в об'єкт відповідного класу обгортки. Наприклад , перетворення int у клас Integer, char у клас Character тощо є екземплярами автобоксингу.
Примітка: Класи обгортки використовують метод valueOf () для перетворення примітиву в об'єкти, які амортизуються після Java 5.
Розпакування
Зворотне перетворення об’єктів класу обгортки у відповідні примітивні типи даних називається “розпаковуванням”.
Примітка: Починаючи з Java 5, метод intValue (), який перетворює об'єкт-обгортку в примітивний тип, амортизується.
Нижче наведено приклад боксу / розпакування.
public class Main { public static void main(String args()){ //Convert int to Integer : boxing int num=20; Integer int_class= Integer.valueOf(num);//explicit conversion from int to Integer Integer inum=num;//autoboxing System.out.println('int => Integer: ' + num+' => '+inum); //Convert Integer to int: unboxing Integer val=new Integer (3); int ival=val.intValue();//explicit conversion from Integer to int int jval=val;//unboxing System.out.println('Integer => int:' + val+' => '+jval); } }
Вихідні дані
Вищевказана програма показує автопакування та розпаковування значення int. Спочатку ми перетворюємо int на цілий об'єкт, а потім цілий об'єкт перетворюється на тип даних int.
Давайте реалізуємо програму, яка демонструє класи обгортки, присутні в Java.
як зробити фальшиву електронну адресу
public class Main { public static void main(String args()) { byte bbyte=10; short sshort=20; int iint=300; long llong=400; float ffloat=3.14F; double ddouble=77.2D; char cchar='A'; boolean bboolean=true; //Convert primitives into objects => Autoboxing Byte byteobj=bbyte; Short shortobj=sshort; Integer intobj=iint; Long longobj=llong; Float floatobj=ffloat; Double doubleobj=ddouble; Character charobj=cchar; Boolean boolobj=bboolean; //Print converted objects System.out.println('Primitives converted to Objects:'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Convert Objects to Primitives => Unboxing byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Print primitives System.out.println('Converting Objects to Primitives'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); } }
Вихідні дані
Наведений вище висновок програми показує перетворення з примітивних типів на обгорткові об'єкти (автобокс) і зворотне перетворення з обгорткових об'єктів на примітивні типи (розпакування).
Часті запитання
Q # 1) Що таке тип даних класу в Java?
Відповідь: Java пропонує клас із назвою “Клас”, який містить інформацію про всі класи, об’єкти та інтерфейси запущеної програми. Клас Class також представляє примітивні типи даних і тип void.
Клас Class є частиною пакету java.lang.
Q # 2) Що таке нормальний клас у Java?
Відповідь: Звичайний клас у Java - це нестатичний клас. Ми можемо створити об’єкти нормального класу, використовуючи нове ключове слово. Крім того, будь-який звичайний клас може мати інший клас як свого члена. У цьому випадку клас-член називається вкладеним або внутрішнім класом, а захисний клас - зовнішнім.
Q # 3) Чи є String обгортковим класом у Java?
Відповідь: Ні, String не є класом обгортки в Java. Щоб клас був обгортковим класом, нам потрібен відповідний примітивний тип. Наприклад, для класу обгортки Integer ми маємо примітивний тип int. Для класу String ми не маємо відповідного примітивного типу даних.
Q # 4) У чому перевага класу Wrapper?
Відповідь: Класи обгортки використовуються для перетворення примітивних типів даних в об'єкти. Іншими словами, класи-обгортки обертають примітивні типи в об'єкти. Класи обгортки використовуються, коли певні функції Java, такі як Колекції, очікують лише об'єктів, а не примітивних типів даних.
Q # 5) Чому в Java використовується клас Singleton?
Відповідь: Кожного разу, коли ми хочемо отримати глобальну точку доступу для певного об’єкта, ми вибираємо односторонній шаблон, який дозволяє нам розробити єдиний клас, в якому буде лише один екземпляр. Класи Singleton використовуються в кешах, об'єднанні потоків, програмах баз даних, реєстрації тощо.
Висновок
У цьому посібнику ми розглянули різні типи класів, що використовуються в Java. Ми бачили конкретний, абстрактний, кінцевий, статичний, вкладений, POJO тощо. Окрім цього, ми також обговорили класи Singleton, незмінні класи, а також обговорили приклади їх реалізації.
Ми також розглянули класи обгортки та класи об’єктів на Java. Класи обгортки - це класи, які обертають примітивні типи даних Java у об'єкти. Клас об'єктів на Java є суперкласом всіх інших класів. Це найвищий клас в ієрархії Java.
Тепер, коли ми обговорили класи та об'єкти в Java та типи класів, у наступному підручнику ми перейдемо до детального обговорення конструкторів на Java.
=> Ознайомтесь з Ідеальним посібником з навчання Java тут.
Рекомендована література
- Інтерфейс Java та підручник з абстрактних класів із прикладами
- Основи Java: Синтаксис Java, клас Java та основні концепції Java
- Що таке статичне ключове слово в Java?
- Java Integer та клас Java BigInteger з прикладами
- Підручник з класу сканера Java із прикладами
- Java Class Vs Object - Як використовувати клас і об'єкт в Java
- Підручник з класу масивів Java - java.util.Arrays Class with Examples
- Що таке Java Java | Підручник з Java-класу з прикладами