W Javie tablica to grupa zmiennych o podobnym typie, określanych wspólną nazwą. Tablice w Javie działają inaczej niż w C/C++. Poniżej znajduje się kilka ważnych punktów dotyczących tablic Java.
Tablice w Javie
- W Javie wszystkie tablice są przydzielane dynamicznie. (omówione poniżej)
- Tablice mogą być przechowywane w pamięci ciągłej [kolejnych lokalizacjach pamięci].
- Ponieważ tablice są obiektami w Javie, możemy znaleźć ich długość za pomocą właściwości object długość . Różni się to od C/C++, gdzie długość znajdujemy za pomocą sizeof.
- Zmienną tablicową Java można również zadeklarować, podobnie jak inne zmienne, za pomocą [] po typie danych.
- Zmienne w tablicy są uporządkowane i każda ma indeks rozpoczynający się od 0.
- Tablicy Java można również używać jako pola statycznego, zmiennej lokalnej lub parametru metody.
Tablica może zawierać elementy pierwotne (int, char itp.) i odniesienia do obiektów (lub innych niż pierwotne) klasy, w zależności od definicji tablicy. W przypadku prymitywnych typów danych rzeczywiste wartości mogą być przechowywane w sąsiadujących lokalizacjach pamięci (JVM nie gwarantuje takiego zachowania). W przypadku obiektów klasowych rzeczywiste obiekty są przechowywane w segmencie sterty .
1 z 1000,00

Notatka: To przechowywanie tablic pomaga nam w losowym dostępie do elementów tablicy [Obsługa dostępu losowego].
Tworzenie, inicjowanie i uzyskiwanie dostępu do tablic
Tablice jednowymiarowe
Ogólna postać deklaracji tablicy jednowymiarowej to
-- type var-name[]; -- type[] var-name;>
Deklaracja tablicy składa się z dwóch komponentów: typu i nazwy. typ deklaruje typ elementu tablicy. Typ elementu określa typ danych każdego elementu tworzącego tablicę. Podobnie jak tablicę liczb całkowitych, możemy również utworzyć tablicę innych prymitywnych typów danych, takich jak char, float, double itp., lub typów danych zdefiniowanych przez użytkownika (obiekty klasy). Zatem typ elementu tablicy określa, jaki typ danych będzie przechowywana w tablicy.
Przykład:
// both are valid declarations int intArray[]; int[] intArray; // similar to int we can declare // byte , short, boolean, long, float // double, char // an array of references to objects of // the class MyClass (a class created by user) MyClass myClassArray[]; // array of Object Object[] ao, // array of Collection // of unknown type Collection[] ca;>
Chociaż pierwsza deklaracja stwierdza, że int Array jest zmienną tablicową, żadna rzeczywista tablica nie istnieje . Mówi jedynie kompilatorowi, że ta zmienna (int Array) będzie przechowywać tablicę typu całkowitego. Aby połączyć int Array z rzeczywistą, fizyczną tablicą liczb całkowitych, musisz przydzielić jedną za pomocą nowy i przypisz go do int Array.
Tworzenie instancji tablicy w Javie
Kiedy zadeklarowana jest tablica, tworzone jest tylko odwołanie do tablicy. Aby utworzyć tablicę lub przydzielić jej pamięć, utwórz tablicę w następujący sposób: Ogólna forma nowy w odniesieniu do tablic jednowymiarowych wygląda następująco:
var-name = new type [size];>
Tutaj, typ określa rodzaj alokowanych danych, rozmiar określa liczbę elementów w tablicy oraz nazwa-var to nazwa zmiennej tablicowej, która jest połączona z tablicą. Używać nowy przydzielić tablicę, należy określić typ i liczbę elementów do przydzielenia.
Przykład:
//declaring array int intArray[]; // allocating memory to array intArray = new int[20]; // combining both statements in one int[] intArray = new int[20];>
Notatka: Elementy w tablicy przydzielone przez nowy zostanie automatycznie zainicjowany zero (dla typów numerycznych), FAŁSZ (dla wartości logicznej) lub zero (dla typów referencyjnych). Odwołaj się domyślne wartości tablicowe w Javie .
Uzyskanie tablicy jest procesem dwuetapowym. Najpierw musisz zadeklarować zmienną żądanego typu tablicy. Po drugie, musisz przydzielić pamięć do przechowywania tablicy, używając new i przypisać ją do zmiennej tablicowej. Zatem, w Jawie , wszystkie tablice są przydzielane dynamicznie.
Literal tablicowy w Javie
W sytuacji, gdy znany jest już rozmiar tablicy i zmienne tablicy, można zastosować literały tablicowe.
// Declaring array literal int[] intArray = new int[]{ 1,2,3,4,5,6,7,8,9,10 };>- Długość tej tablicy określa długość utworzonej tablicy.
- W najnowszych wersjach Javy nie ma potrzeby pisania nowej części int[].
Dostęp do elementów tablicy Java przy użyciu pętli for
Dostęp do każdego elementu tablicy można uzyskać poprzez jego indeks. Indeks zaczyna się od 0 i kończy na (całkowitym rozmiarze tablicy) -1. Dostęp do wszystkich elementów tablicy można uzyskać za pomocą Java for Loop.
// accessing the elements of the specified array for (int i = 0; i>
Realizacja:
Jawa // Java program to illustrate creating an array // of integers, puts some values in the array, // and prints each value to standard output. class GFG { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the first elements of the array arr[0] = 10; // initialize the second elements of the array arr[1] = 20; // so on... arr[2] = 30; arr[3] = 40; arr[4] = 50; // 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 : 10 Element at index 1 : 20 Element at index 2 : 30 Element at index 3 : 40 Element at index 4 : 50>
Złożoność powyższej metody:
Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(1)
Dostęp do tablic Java można także uzyskać za pomocą dla każdej pętli .
jak zmienić nazwę katalogu w systemie Linux

Tablice obiektów w Javie
Tablicę obiektów tworzy się podobnie jak tablicę elementów danych typu pierwotnego, w następujący sposób.
Student[] arr = new Student[5]; //student is a user-defined class>
Składnia:
-- data type[] arrName; -- datatype arrName[]; -- datatype [] arrName;>
Przykład tablic obiektów
Przykład 1:
Poniżej realizacja powyższego tematu:
Jawa import java.io.*; class GFG { public static void main (String[] args) { int [] arr=new int [4]; // 4 is the size of arr System.out.println('Array Size:'+arr.length); } }> Wyjście
Array Size:4>
Student Array zawiera pięć obszarów pamięci, każdy o rozmiarze klasy studenta, w których można przechowywać adresy pięciu obiektów Studenta. Obiekty Student należy utworzyć za pomocą konstruktora klasy Student, a ich referencje należy przypisać do elementów tablicy w następujący sposób.
Przykład 2:
Poniżej realizacja powyższego tematu:
Jawa // Java program to illustrate creating // an array of objects class Student { public int roll_no; public String name; Student(int roll_no, String name) { this.roll_no = roll_no; this.name = name; } } // Elements of the array are objects of a class Student. public class GFG { public static void main(String[] args) { // declares an Array of Students Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the first elements of the array arr[0] = new Student(1, 'aman'); // initialize the second elements of the array arr[1] = new Student(2, 'vaibhav'); // so on... 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>
Złożoność powyższej metody:
Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(1)
Przykład 3
Tworzona jest również tablica obiektów, takich jak:
Jawa // Java program to illustrate creating // an array of objects class Student { public String name; Student(String name) { this.name = name; } @Override public String toString(){ return name; } } // Elements of the array are objects of a class Student. public class GFG { public static void main (String[] args) { // declares an Array and initializing the elements of the array Student[] myStudents = new Student[]{new Student('Dharma'),new Student('sanvi'),new Student('Rupa'),new Student('Ajay')}; // accessing the elements of the specified array for(Student m:myStudents){ System.out.println(m); } } }> Wyjście
Dharma sanvi Rupa Ajay>
Co się stanie, jeśli spróbujemy uzyskać dostęp do elementów spoza rozmiaru tablicy?
JVM rzuca Wyjątek ArrayIndexOutOfBounds aby wskazać, że dostęp do tablicy uzyskano przy użyciu nielegalnego indeksu. 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:
Jawa // Code for showing error 'ArrayIndexOutOfBoundsException' public class GFG { 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
Trying to access element outside the size of array Exception in thread 'main' java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 4 at GFG.main(GFG.java:13)>
Przykład (Iteracja tablicy):
Jawa public class GFG { public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 10; arr[1] = 20; for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); } }> Wyjście
10 20>
Złożoność powyższej metody:
Złożoność czasowa: O(n), tutaj n jest rozmiarem tablicy.
Przestrzeń pomocnicza: O(1) , ponieważ nie wymaga dodatkowej przestrzeni.
Tablice wielowymiarowe w Javie
Tablice wielowymiarowe są tablice tablic przy czym każdy element tablicy zawiera odwołanie do innych tablic. Są one również znane jako Postrzępione tablice . Tablicę wielowymiarową tworzy się poprzez dodanie jednego zestawu nawiasów kwadratowych ([]) na każdy wymiar.
Składnia wielowymiarowej tablicy Java
Istnieją 2 metody deklarowania tablic wielowymiarowych Java, jak wspomniano poniżej:
-- datatype [][] arrayrefvariable; -- datatype arrayrefvariable[][];>
Przykład:
Jawa // Java Program to demonstrate // Java Multidimensional Array import java.io.*; // Driver class class GFG { public static void main(String[] args) { // Syntax int[][] arr = new int[3][3]; // 3 row and 3 column // Number of Rows System.out.println('Number of Rows:'+ arr.length); // Number of Columns System.out.println('Number of Columns:'+ arr[0].length); } }> Wyjście
Number of Rows:3 Number of Columns:3>

Deklaracja tablicy wielowymiarowej
int[][] intArray = new int[10][20]; //a 2D array or matrix int[][][] intArray = new int[10][20][10]; //a 3D array>
Przykład wielowymiarowej tablicy wielowymiarowej w Javie
Przykład 1:
Poniżej implementacja powyższej metody:
kwartały w rokuJawa
// Java Program to Multidimensional Array // Driver Class public class multiDimensional { // main function public static void main(String args[]) { // declaring and initializing 2D array int arr[][] = { { 2, 7, 9 }, { 3, 6, 1 }, { 7, 4, 2 } }; // printing 2D array for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) System.out.print(arr[i][j] + ' '); System.out.println(); } } }> Wyjście
2 7 9 3 6 1 7 4 2>
Przekazywanie tablic do metod
Podobnie jak zmienne, możemy również przekazywać tablice do metod. Na przykład poniższy program przekazuje tablicę do metody suma aby obliczyć sumę wartości tablicy.
Jawa // Java program to demonstrate // passing of array to method public class Test { // 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>
Złożoność powyższej metody:
Złożoność czasowa: NA)
Przestrzeń pomocnicza: O(1)
Zwracanie tablic z metod
Jak zwykle metoda może również zwrócić tablicę. Na przykład poniższy program zwraca tablicę z metody m1 .
Jawa // Java program to demonstrate // return of array from method class Test { // 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>
Złożoność powyższej metody:
Złożoność czasowa: O(n)
Przestrzeń pomocnicza: O(1)
Obiekty klas dla tablic
Z każdą tablicą jest powiązany obiekt klasy, współdzielony ze wszystkimi innymi tablicami o tym samym typie komponentu.
Jawa // Java program to demonstrate // Class Objects for Arrays class Test { public static void main(String args[]) { int intArray[] = new int[3]; byte byteArray[] = new byte[3]; short shortsArray[] = new short[3]; // array of Strings String[] strArray = new String[3]; System.out.println(intArray.getClass()); System.out.println( intArray.getClass().getSuperclass()); System.out.println(byteArray.getClass()); System.out.println(shortsArray.getClass()); System.out.println(strArray.getClass()); } }> Wyjście
class [I class java.lang.Object class [B class [S class [Ljava.lang.String;>
Wyjaśnienie powyższej metody:
- Łańcuch [I jest sygnaturą typu wykonawczego dla tablicy obiektów klasy z typem komponentu wew .
- Jedyną bezpośrednią nadklasą typu tablicowego jest Obiekt Java.lang.Object .
- Ciąg [B jest sygnaturą typu wykonawczego dla tablicy obiektów klasy z typem komponentu bajt .
- Ciąg [S jest sygnaturą typu wykonawczego dla tablicy obiektów klasy z typem komponentu krótki .
- Łańcuch [L jest sygnaturą typu wykonawczego dla tablicy obiektów klasy z typem komponentu klasy. Następnie następuje nazwa klasy.
Członkowie tablicy Java
Jak już wiesz, tablice są obiektami klasy, a bezpośrednia nadklasa tablic jest obiektem klasy. Elementy typu tablicowego to wszystkie poniższe elementy:
- Publiczne pole końcowe długość zawiera liczbę elementów tablicy. Długość może być dodatnia lub zerowa.
- Wszyscy członkowie są dziedziczeni z klasy Object; jedyną metodą obiektu, która nie jest dziedziczona, jest jego klon metoda.
- Metoda publiczna klon() zastępuje metodę clone w klasie Object i zgłasza nie sprawdzone wyjątki .
Typy tablic i ich dozwolone typy elementów
| Typy tablic | Dozwolone typy elementów |
|---|---|
| Tablice typów pierwotnych | Dowolny typ, który można niejawnie awansować do zadeklarowanego typu. |
| Tablice typów obiektów | Albo zadeklarowane obiekty typu, albo obiekty klas podrzędnych. |
| Abstrakcyjne tablice typów klas | Jego obiekty klasy podrzędnej są dozwolone. |
| Tablice typów interfejsów | Obiekty jego klasy implementacyjnej są dozwolone. |
Klonowanie tablicy jednowymiarowej w Javie
Kiedy klonujesz tablicę jednowymiarową, taką jak Obiekt[], wykonywana jest głęboka kopia nowej tablicy zawierającej kopie elementów oryginalnej tablicy, a nie odniesienia.
porównywalny interfejs w Javie
Poniżej implementacja powyższej metody:
Jawa // Java program to demonstrate // cloning of one-dimensional arrays class Test { public static void main(String args[]) { int intArray[] = { 1, 2, 3 }; int cloneArray[] = intArray.clone(); // will print false as deep copy is created // for one-dimensional array System.out.println(intArray == cloneArray); for (int i = 0; i < cloneArray.length; i++) { System.out.print(cloneArray[i] + ' '); } } }> Wyjście
false 1 2 3>

Klonowanie tablicy wielowymiarowej w Javie
Klon tablicy wielowymiarowej (takiej jak Obiekt[][]) jest jednak płytką kopią, co oznacza, że tworzy tylko jedną nową tablicę, przy czym każda tablica elementów jest odniesieniem do oryginalnej tablicy elementów, ale podtablice są wspólny.
Jawa // Java program to demonstrate // cloning of multi-dimensional arrays class Test { public static void main(String args[]) { int intArray[][] = { { 1, 2, 3 }, { 4, 5 } }; int cloneArray[][] = intArray.clone(); // will print false System.out.println(intArray == cloneArray); // will print true as shallow copy is created // i.e. sub-arrays are shared System.out.println(intArray[0] == cloneArray[0]); System.out.println(intArray[1] == cloneArray[1]); } }> Wyjście
false true true>

Często zadawane pytania dotyczące tablic Java
1. Czy możemy określić tak długi rozmiar tablicy?
Nie, nie możemy określić rozmiaru tablicy tak długiej, ale możemy określić ją jako int lub krótką.
2. Która jest bezpośrednią nadklasą tablicy w Javie?
Jakiś Obiekt jest bezpośrednią nadklasą tablicy w Javie.
3. Które interfejsy są implementowane przez Arrays w Javie?
Każdy typ tablicy implementuje interfejsy Cloneable i Możliwość serializacji java.io .
4. Czy możemy zmienić rozmiar tablicy?
Rozmiaru tablicy nie można zmienić (po zainicjowaniu). Można jednak utworzyć odwołanie do tablicy, aby wskazywało inną tablicę.
Artykuły powiązane z tematem
- Postrzępiona tablica w Javie
- Pętla for-each w Javie
- Klasa Arrays w Javie