Długość tablicy w Javie


101

Zadeklarowałem tablicę, jak pokazano poniżej:

int[] arr = new int[10];

Następnie przypisałem tablicy następujące wartości:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Następnie zadeklarowałem i zainicjowałem zmienną całkowitą:

int arrayLength = arr.length;

Będzie to przydatne do znalezienia rzeczywistego rozmiaru, ale czy istnieje metoda znalezienia logicznego rozmiaru tablicy?

Odpowiedzi:



71

Przede wszystkim lengthjest własnością, więc byłoby arr.lengthzamiast arr.length().

Zwróci 10, zadeklarowany rozmiar. Elementy, których nie zadeklarujesz jawnie, są inicjowane z wartością 0.


Nie można wywołać funkcji length () w tablicy typu long [] Java (67108980)
Alessandro Ornano

22

Aby znaleźć długość tablicy A, należy użyć lengthwłaściwości. To jest tak A.length, że nie używaj A.length()go głównie do rozmiaru obiektów związanych z ciągami.

wprowadź opis obrazu tutaj

Właściwość length zawsze będzie pokazywać całkowitą ilość miejsca przydzieloną tablicy podczas inicjalizacji.

Jeśli kiedykolwiek wystąpi którykolwiek z tego rodzaju problemów, prostym sposobem jest jego uruchomienie. Miłego programowania!


6

Tablice są statyczną alokacją pamięci, więc jeśli zainicjujesz tablicę liczb całkowitych:

int[] intArray = new int[15];

Długość zawsze będzie wynosić 15, niezależnie od liczby wypełnionych indeksów.

I jeszcze jedno, kiedy zainicjujesz tablicę liczb całkowitych, wszystkie indeksy zostaną wypełnione „0”.


5

W Javie "rzeczywisty" i "logiczny" rozmiar jest taki sam. Czas wykonywania wypełnia wszystkie gniazda tablicy wartościami domyślnymi podczas alokacji. Więc masz a10.


5

W tym przypadku parametr arr.length zwróci 10, czyli rozmiar przydzielonej tablicy. Rozmiar logiczny tak naprawdę nie ma tutaj zastosowania, ponieważ jest to tablica o stałej długości.

Podczas inicjalizacji tablicy:

int[] arr = new int[10];

Java utworzy tablicę z 10 elementami i zainicjuje je wszystkie do 0. Szczegółowe informacje na temat wartości początkowych dla tego i innych typów pierwotnych można znaleźć w specyfikacji języka Java .


4
int[] arr = new int[10];

arrjest inttablicą typów o rozmiarze 10. Jest to tablica 10elementów. Jeśli nie zainicjujemy tablicy domyślnie, elementy tablicy zawierają wartość domyślną. W przypadku tablicy int domyślną wartością jest 0.

length to właściwość, która ma zastosowanie do tablicy.
tutaj arr.lengthda 10.


3

`

int tablica [] = nowa int [3]; array.length;

więc tutaj utworzyliśmy tablicę z przestrzenią pamięci 3 ... tak to wygląda w rzeczywistości

0th 1st 2nd ...........> Indeks 2 4 5 ...........> Liczba

Więc, jak widzisz, rozmiar tej tablicy wynosi 3, ale indeks tablicy wynosi tylko do 2, ponieważ każda tablica zaczyna się od zerowego indeksu.

druga instrukcja 'wyjście powinno wynosić 3, ponieważ długość tablicy wynosi 3 ... Proszę nie pomylić wartości indeksu z długością tablicy ....

Twoje zdrowie!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

Będzie zawierał rzeczywisty rozmiar tablicy, ponieważ jest to wartość, którą zainicjowałeś tablicę, kiedy ją deklarujesz. Java nie ma pojęcia o „logicznym” rozmiarze tablicy, jeśli chodzi o to, domyślna wartość 0 jest tak samo logiczna, jak wartości ustawione ręcznie.


1

Zawiera przydzielony rozmiar, 10. Pozostałe indeksy będą zawierać wartość domyślną, która wynosi 0.


1

Jeśli chcesz logicznego rozmiaru tablicy, możesz przejść przez wszystkie wartości w tablicy i sprawdzić je względem zera. Zwiększ wartość, jeśli nie jest równa zero i byłby to rozmiar logiczny. Ponieważ rozmiar tablicy jest stały, nie masz żadnej wbudowanej metody, być może powinieneś rzucić okiem na kolekcje.


To jest po prostu rozmiar „Zakładam, że 0 nie jest prawidłową wartością” i jeśli jest to pomocne, jest trochę wątpliwe.
Tom

Właśnie wpadłem na pomysł, aby uzyskać długość tablicy (0 są nieprawidłowe). Jak powiedziałem, możesz używać kolekcji do bardziej precyzyjnej manipulacji danymi.
Struse

1

Powinno być:

int a = arr.length;

Należy unikać nawiasów.


5
Witamy w przepełnieniu stosu! Ponieważ jest to pytanie, które ma już ponad rok i ma już sześć innych odpowiedzi, spodziewałbym się długiej odpowiedzi niż ta. Co więcej, nie odpowiadasz na punkt pytania - po prostu poprawiasz literówkę, która była już celem odpowiedzi (która odpowiada na pytanie) i komentarz do pytania.
John Dvorak

0

Tablice Java mają w rzeczywistości stały rozmiar, a inne odpowiedzi wyjaśniają, dlaczego .length nie robi tego, czego można się spodziewać. Chciałbym tylko dodać, że biorąc pod uwagę twoje pytanie, to, czego możesz chcieć użyć, to ArrayList, czyli tablica, która może rosnąć i zmniejszać się:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Tutaj metoda .size () pokaże liczbę elementów na liście i możesz ją powiększać w miarę dodawania elementów.


0

jeśli masz na myśli „rozmiar logiczny”, indeks tablicy, to po prostu int arrayLength = arr.length-1; ponieważ indeks tablicy zaczyna się od „0”, więc logiczny lub „indeks tablicy” będzie zawsze mniejszy od rzeczywistego rozmiaru o „jeden”.


0

Tablice są przydzielane w pamięci w czasie kompilacji w języku Java, więc są statyczne, a elementy, które nie zostały jawnie ustawione lub zmodyfikowane, mają ustawione wartości domyślne. Mógłbyś użyć takiego kodu, chociaż nie jest to zalecane, ponieważ nie liczy wartości domyślnych, nawet jeśli jawnie zainicjujesz je w ten sposób, prawdopodobnie spowoduje to również błędy. Jak powiedzieli inni, szukając rzeczywistego rozmiaru, należy użyć „.length” zamiast „.length ()”.

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.