W Javie tablica jest ważną liniową strukturą danych, która pozwala nam przechowywać wiele wartości tego samego typu.
- Tablice w Javie to obiekty, podobnie jak wszystkie inne obiekty w tablicach Javy, które w sposób dorozumiany dziedziczą z klasy java.lang.Object. Umożliwia to wywoływanie metod zdefiniowanych w obiekcie (takich jak toString() równa się() i hashCode()).
- Tablice mają wbudowaną właściwość długości, która określa liczbę elementów tablicy
public class Geeks { public static void main(String[] args) { // initializing array int[] arr = {40 55 63 17 22}; // size of array int n = arr.length; // traversing array for (int i = 0; i < n; i++) System.out.print(arr[i] + ' '); } }
Wyjście
40 55 63 17 22
Kluczowe cechy tablic
- Przechowuj prymitywy i obiekty: Tablice Java mogą przechowywać zarówno typy pierwotne (takie jak int char boolean itp.), jak i obiekty (takie jak String Integer itp.)
- Ciągła alokacja pamięci Kiedy używamy tablic typów pierwotnych, elementy są przechowywane w sąsiadujących lokalizacjach. W przypadku typów innych niż pierwotne odniesienia do elementów są przechowywane w sąsiadujących lokalizacjach.
- Indeksowanie od zera: Pierwszy element tablicy ma indeks 0.
- Stała długość: Po utworzeniu tablicy jej rozmiar jest stały; nie możemy tego zmienić.
Reprezentacja prymitywnej tablicy w Javie
Reprezentacja tablicy nieprymitywnej w JaviePodstawy operacji na tablicach w Javie
1. Deklarowanie tablicy
Ogólna forma deklaracji tablicy to
// Metoda 1:
int tablica [];// Metoda 2:
int[] tablica;
Typ elementu określa typ danych każdego elementu tworzącego tablicę. Podobnie jak tablica liczb całkowitych, możemy również utworzyć tablicę innych prymitywnych typów danych, takich jak char float double itp. lub typy danych zdefiniowane przez użytkownika (obiekty klasy).
Notatka: W ten sposób możemy utworzyć zmienną tablicową, która w rzeczywistości nie istnieje. Mówi jedynie kompilatorowi, że ta zmienna (int Array) będzie przechowywać tablicę typu całkowitego.
2. Inicjalizacja tablicy w Javie
Kiedy tablica jest deklarowana, tworzone jest tylko odwołanie do tablicy. Używamy new do alokacji tablicy o danym rozmiarze.
polecenie arp-a
int arr[] = nowy int[rozmiar];
- Deklaracja tablicy jest ogólnie statyczna, ale jeśli rozmiar nie jest zdefiniowany, tablica ma rozmiar dynamiczny.
- Pamięć dla tablic jest zawsze przydzielana dynamicznie (w segmencie sterty) w Javie. Różni się to od C/C++, gdzie pamięć może być przydzielana statycznie lub dynamicznie.
- Elementy tablicy przydzielone przez new zostaną automatycznie zainicjowane na zero (dla typów numerycznych), false (dla typów logicznych) lub null (dla typów referencyjnych).
Literal tablicowy w Javie
W sytuacji, gdy rozmiar tablicy i zmienne tablicy są już znane, można zastosować literały tablicowe.
// Deklarowanie literału tablicowego
int[] arr = nowy int[]{ 12345678910 };
- Długość tej tablicy określa długość utworzonej tablicy.
- W najnowszych wersjach Javy nie ma potrzeby pisania nowej części int[].
3. Zmień element tablicy
Aby zmienić element, przypisz nową wartość do określonego indeksu. Indeks zaczyna się od 0 i kończy na (całkowitym rozmiarze tablicy) -1.
metoda Java
// Zmiana pierwszego elementu na 90
tablica[0] = 90;
4. Długość tablicy
Długość tablicy możemy uzyskać za pomocą właściwości długości:
// Pobieranie długości tablicy
int n = długość tablicy;
5. Dostęp i aktualizacja wszystkich elementów tablicy
- Dostęp do wszystkich elementów tablicy można uzyskać za pomocą Java for Loop.
- Dostęp do każdego elementu tablicy można uzyskać poprzez jego indeks.
Dostęp i aktualizacja wszystkich elementów tablicyProgram w języku Java ilustrujący tworzenie tablicy liczb całkowitych umieszcza pewne wartości w tablicy i wypisuje każdą wartość na standardowe wyjście
Javaclass Geeks { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the elements of the array // first to last(fifth) element arr[0] = 2; arr[1] = 4; arr[2] = 8; arr[3] = 12; arr[4] = 16; // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at index ' + i + ' : ' + arr[i]); } }
Wyjście
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16
Tablice obiektów w Javie
Tablica obiektów jest tworzona podobnie jak tablica elementów danych typu pierwotnego
Przykład : Tutaj bierzemy klasę Studenta i tworzymy tablicę Student z pięcioma obiektami Studenta przechowywanymi w tablicy. Obiekty Student należy utworzyć przy użyciu konstruktora klasy Student, a ich referencje należy przypisać do elementów tablicy.
class Student { public int roll_no; public String name; Student(int roll_no String name){ this.roll_no = roll_no; this.name = name; } } public class Geeks { public static void main(String[] args){ // declares an Array of Student Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the elements of the array arr[0] = new Student(1 'aman'); arr[1] = new Student(2 'vaibhav'); arr[2] = new Student(3 'shikar'); arr[3] = new Student(4 'dharmesh'); arr[4] = new Student(5 'mohit'); // accessing the elements of the specified array for (int i = 0; i < arr.length; i++) System.out.println('Element at ' + i + ' : { ' + arr[i].roll_no + ' ' + arr[i].name+' }'); } }
Wyjście
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit } Co się stanie, jeśli spróbujemy uzyskać dostęp do elementów spoza rozmiaru tablicy?
JVM zgłasza wyjątek ArrayIndexOutOfBoundsException, aby wskazać, że dostęp do tablicy uzyskano z nielegalnym indeksem. Indeks jest albo ujemny, albo większy lub równy rozmiarowi tablicy.
Poniższy kod pokazuje, co się stanie, jeśli spróbujemy uzyskać dostęp do elementów spoza rozmiaru tablicy:
Javapublic class Geeks { public static void main(String[] args) { int[] arr = new int[4]; arr[0] = 10; arr[1] = 20; arr[2] = 30; arr[3] = 40; System.out.println( 'Trying to access element outside the size of array'); System.out.println(arr[5]); } }
Wyjście:
Dane wyjściowe elementów poza rozmiarem tablicyPrzekazywanie tablic do metod
Podobnie jak zmienne, możemy również przekazywać tablice do metod. Na przykład poniższy program przekazuje tablicę do metody sum w celu obliczenia sumy wartości tablicy.
zbiory Javy
Przykład:
Javapublic class Geeks { // Driver method public static void main(String args[]) { int arr[] = { 3 1 2 5 4 }; // passing array to method m1 sum(arr); } public static void sum(int[] arr) { // getting sum of array values int sum = 0; for (int i = 0; i < arr.length; i++) sum += arr[i]; System.out.println('sum of array values : ' + sum); } }
Wyjście
sum of array values : 15
Wyjaśnienie
- Ten program w języku Java demonstruje, jak przekazać tablicę do metody.
- W metodzie main deklarowana i inicjowana jest tablica liczb całkowitych arr.
- Metoda sum() jest wywoływana z argumentem arr.
- Wewnątrz metody sum() wszystkie elementy tablicy dodawane są za pomocą pętli for.
- Ostateczna suma jest następnie drukowana na konsoli.
Zwracanie tablic z metod
Jak zwykle metoda może również zwrócić tablicę. Przykładowo poniższy program zwraca tablicę z metody m1.
Przykład:
Javaclass Geeks { // Driver method public static void main(String args[]) { int arr[] = m1(); for (int i = 0; i < arr.length; i++) System.out.print(arr[i] + ' '); } public static int[] m1() { // returning array return new int[] { 1 2 3 }; } }
Wyjście
1 2 3
Zalety tablic Java
- Dostęp do elementu poprzez jego indeks jest szybki i ma stałą złożoność czasową O(1).
- Zarządzanie pamięcią: Tablice mają stały rozmiar, co sprawia, że zarządzanie pamięcią jest proste i przewidywalne.
- Organizacja danych: Tablice pomagają organizować dane w uporządkowany sposób, ułatwiając zarządzanie powiązanymi elementami.
Wady tablic Java
- Po utworzeniu tablicy nie można zmienić jej rozmiaru, co może prowadzić do marnowania pamięci w przypadku zawyżenia rozmiaru lub niewystarczającej ilości miejsca w przypadku niedoszacowania.
- Typ Jednorodność: Tablice mogą przechowywać tylko elementy tego samego typu danych, co może wymagać dodatkowej obsługi w przypadku mieszanych typów danych.
- Wstawianie i usuwanie: Wstawianie lub usuwanie elementów, zwłaszcza w środku tablicy, może być kosztowne, ponieważ może wymagać przesuwania elementów.
Powiązane posty
- Postrzępiona tablica w Javie
- Pętla for-each w Javie
- Klasa Arrays w Javie