logo

Tablice w Javie

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
Java
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ć.
prymitywna_tablica_' title=Reprezentacja prymitywnej tablicy w Javie element-tablicy aktualizacji' loading='lazy' title=Reprezentacja tablicy nieprymitywnej w Javie

Podstawy 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
' loading='lazy' title=

// 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.
Wyjście' loading='lazy' title=Dostęp i aktualizacja wszystkich elementów tablicy

Program 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

Java
class 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.

Java
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:

Java
public 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:

' loading='lazy' title=Dane wyjściowe elementów poza rozmiarem tablicy

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 sum w celu obliczenia sumy wartości tablicy.

zbiory Javy

Przykład:

Java
public 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:

Java
class 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