Zanim opublikujesz nową odpowiedź, zastanów się, że istnieje już ponad 25 odpowiedzi na to pytanie. Upewnij się, że twoja odpowiedź zawiera informacje, których nie ma wśród odpowiedzi istniejących.
janniks
Odpowiedzi:
2682
Możesz użyć deklaracji tablicowej lub literału tablicowego (ale tylko wtedy, gdy deklarujesz i wpływasz na zmienną od razu, literałów tablicowych nie można użyć do ponownego przypisania tablicy).
Dla typów pierwotnych:
int[] myIntArray =newint[3];int[] myIntArray ={1,2,3};int[] myIntArray =newint[]{1,2,3};// Since Java 8. Doc of IntStream: https://docs.oracle.com/javase/8/docs/api/java/util/stream/IntStream.htmlint[] myIntArray =IntStream.range(0,100).toArray();// From 0 to 99int[] myIntArray =IntStream.rangeClosed(0,100).toArray();// From 0 to 100int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).toArray();// The order is preserved.int[] myIntArray =IntStream.of(12,25,36,85,28,96,47).sorted().toArray();// Sort
Jaki jest cel posiadania drugiego i trzeciego sposobu na zrobienie tego?
Quazi Irfan
123
@iamcreasy Wygląda na to, że drugi sposób nie działa z instrukcjami zwrotnymi. return {1,2,3}daje błąd, podczas gdy return new int[]{1,2,3}działa dobrze (zakładając oczywiście, że twoja funkcja zwraca tablicę liczb całkowitych).
Skylar Ittner
1
@ SkylarMT Ale nadal możemy użyć pierwszego sposobu użycia z instrukcją return.
Quazi Irfan
6
@iamcreasy Niedawno napisałem funkcję, która zwróciła tablicę ints. Jeśli wystąpił błąd wewnątrz funkcji, chciałem, aby zwróciła określoną wartość, ale funkcja potrzebowała zwrócić tablicę. Który sposób działa w przypadku instrukcji zwrotnej jednowierszowej? Tylko trzeci.
Skylar Ittner,
5
@apadana W drugim przypadku tworzysz anonimowy obiekt, który jest zdefiniowany tylko w zakresie obejmującym (funkcja lub cokolwiek). Po zwróceniu go dzwoniącemu nie jest już ważny. Za pomocą nowego słowa kluczowego przydzielasz nowy obiekt ze sterty i jest on ważny poza zakresem definiującym.
teukkam
280
Istnieją dwa rodzaje tablic.
Tablica jednowymiarowa
Składnia wartości domyślnych:
int[] num =newint[5];
Lub (mniej preferowane)
int num[]=newint[5];
Składnia z podanymi wartościami (inicjalizacja zmiennej / pola):
int[] num ={1,2,3,4,5};
Lub (mniej preferowane)
int num[]={1,2,3,4,5};
Uwaga: Dla wygody preferowane jest int [] num, ponieważ wyraźnie mówi, że mówisz tutaj o tablicy. W przeciwnym razie nie ma różnicy. Ani trochę.
Czy pierwszy nie prowadzi do pustej / pustej tablicy zamiast tablicy z wartościami domyślnymi?
vipin8169
Zgadzam się w tej kwestii i możemy dodać jeszcze jedną funkcję, możemy dynamicznie zmieniać rozmiar.
AdamIJK
Mógłbym się z tobą spierać o to, że tablica wielowymiarowa to inny „typ” tablicy. Jest to po prostu termin używany do opisania tablicy, która zawiera inne tablice. Zarówno tablice zewnętrzne, jak i wewnętrzne (i te pośrednie, jeśli istnieją) są tylko zwykłymi tablicami.
Uważam, że pomocne jest zrozumienie każdej części:
Type[] name =newType[5];
Type[]Jest to typ o zmiennej o nazwie nazwie ( „nazwa” jest nazywany identyfikatorem ). Dosłowny „Typ” jest typem podstawowym, a nawiasy oznaczają, że jest to typ tablicowy tej podstawy. Typy tablic są z kolei własnymi typami, co pozwala na tworzenie tablic wielowymiarowych, takich jak Type[][](typ tablicowy Type []). Słowo kluczowe newmówi, aby przydzielić pamięć dla nowej tablicy. Liczba między nawiasami określa, jak duża będzie nowa tablica i ile pamięci do przydzielenia. Na przykład, jeśli Java wie, że typ podstawowy Typezajmuje 32 bajty, a chcesz tablicę o rozmiarze 5, musi wewnętrznie przydzielić 32 * 5 = 160 bajtów.
Możesz także tworzyć tablice z już tam zawartymi wartościami, takimi jak
int[] name ={1,2,3,4,5};
co nie tylko tworzy puste miejsce, ale wypełnia je tymi wartościami. Java może stwierdzić, że prymitywy są liczbami całkowitymi i że jest ich 5, więc rozmiar tablicy można określić niejawnie.
Więc nie jest konieczne dołączanie int[] name = new int[5]?
Cookie Monster
31
Poniżej przedstawiono deklarację tablicy, ale tablica nie została zainicjowana:
int[] myIntArray =newint[3];
Poniżej przedstawiono deklarację oraz inicjalizację tablicy:
int[] myIntArray ={1,2,3};
Teraz poniżej pokazano również deklarację oraz inicjalizację tablicy:
int[] myIntArray =newint[]{1,2,3};
Ale ten trzeci pokazuje właściwość anonimowego tworzenia obiektów tablicowych, na którą wskazuje zmienna referencyjna „myIntArray”, więc jeśli napiszemy tylko „new int [] {1,2,3};” w ten sposób można stworzyć anonimowy obiekt tablicowy.
Jeśli po prostu napiszemy:
int[] myIntArray;
nie jest to deklaracja tablicy, ale następująca instrukcja uzupełnia powyższą deklarację:
Nie ma absolutnie żadnej różnicy między drugim i trzecim podejściem, poza tym, że drugie podejście działa tylko wtedy, gdy deklarujesz zmienną. Nie jest jasne, co rozumiesz przez „pokazuje właściwość anonimowego tworzenia obiektów tablicowych”, ale tak naprawdę są to równoważne fragmenty kodu.
Jon Skeet
4
Również pierwszy fragment ma zainicjować tablicę - jest ona gwarantowana mieć wartość 0 dla każdego elementu tablicy.
Jon Skeet
Czy tak naprawdę nie ma różnicy między podejściem drugim a trzecim?
typelogiczny
27
Alternatywnie,
// Either method worksString arrayName[]=newString[10];String[] arrayName =newString[10];
To deklaruje tablicę o nazwie arrayNameo rozmiarze 10 (masz do użycia elementy od 0 do 9).
Jakiego standardu używać? Właśnie odkryłem ten pierwszy i uważam go za przerażająco mylący: |
Anti Earth
2
Z tego powodu, co warte mojego profu, powiedział, że drugi sposób jest bardziej typowy dla Javy i że lepiej przekazuje to, co się dzieje; jako tablica związana z typem zmienna została rzutowana jako.
Celeritas,
2
Na marginesie: język mający więcej niż jedną semantykę do deklarowania jednej rzeczy oznaczającej zły projekt języka.
Muhammad Suleman
26
Ponadto, jeśli chcesz czegoś bardziej dynamicznego, znajdziesz interfejs listy. To nie będzie działać tak dobrze, ale jest bardziej elastyczne:
List<String> listOfString =newArrayList<String>();
listOfString.add("foo");
listOfString.add("bar");String value = listOfString.get(0);
assertEquals( value,"foo");
@CyprUS Listjest klasą ogólną, ma typ jako parametr zamknięty w <>. Pomaga to, ponieważ wystarczy zdefiniować typ ogólny tylko raz, a następnie można go używać z wieloma różnymi typami. Bardziej szczegółowe wyjaśnienie znajduje się na docs.oracle.com/javase/tutorial/java/generics/types.html
Heimdall
15
Istnieją dwa główne sposoby tworzenia tablicy:
Ten dla pustej tablicy:
int[] array =newint[n];// "n" being the number of spaces to allocate in the array
I ten, dla zainicjowanej tablicy:
int[] array ={1,2,3,4...};
Możesz także tworzyć tablice wielowymiarowe, takie jak to:
int[][] array2d =newint[x][y];// "x" and "y" specify the dimensionsint[][] array2d ={{1,2,3...},{4,5,6...}...};
Weźmy intna przykład typ pierwotny . Istnieje kilka sposobów deklarowania i inttablicowania:
int[] i =newint[capacity];int[] i =newint[]{value1, value2, value3, etc};int[] i ={value1, value2, value3, etc};
gdzie we wszystkich tych można użyć int i[]zamiast int[] i.
Dzięki refleksji możesz użyć (Type[]) Array.newInstance(Type.class, capacity);
Zauważ, że w parametrach metody ...wskazuje variable arguments. Zasadniczo dowolna liczba parametrów jest w porządku. Łatwiej jest to wyjaśnić za pomocą kodu:
Wewnątrz metody varargsjest traktowany jak normalny int[]. Type...może być użyte tylko w parametrach metody, więc int... i = new int[] {}nie będzie się kompilować.
Pamiętaj, że podczas przekazywania int[]do metody (lub dowolnej innej Type[]) nie można użyć trzeciego sposobu. W oświadczeniu int[] i = *{a, b, c, d, etc}*, kompilator zakłada, że {...}oznacza int[]. Ale to dlatego, że deklarujesz zmienną. Podczas przekazywania tablicy do metody deklaracją musi być new Type[capacity]albo new Type[] {...}.
Tablice wielowymiarowe
Z macierzami wielowymiarowymi trudniej sobie poradzić. Zasadniczo tablica 2D jest tablicą tablic. int[][]oznacza tablicę int[]s. Kluczem jest to, że jeśli an int[][]jest zadeklarowany jako int[x][y], maksymalny indeks to i[x-1][y-1]. Zasadniczo prostokąt int[3][5]to:
int[] a =IntStream.iterate(10, x -> x <=100, x -> x +10).toArray();Out:[10,20,30,40,50,60,70,80,90,100]int[] b =IntStream.iterate(0, x -> x +1).takeWhile(x -> x <10).toArray();Out:[0,1,2,3,4,5,6,7,8,9]
Dlaczego miałbyś chcieć stworzyć tablicę w ten sposób?
Dorian Gray
9
Deklarowanie tablicy odwołań do obiektów:
classAnimal{}classHorseextendsAnimal{publicstaticvoid main(String[] args){/*
* Array of Animal can hold Animal and Horse (all subtypes of Animal allowed)
*/Animal[] a1 =newAnimal[10];
a1[0]=newAnimal();
a1[1]=newHorse();/*
* Array of Animal can hold Animal and Horse and all subtype of Horse
*/Animal[] a2 =newHorse[10];
a2[0]=newAnimal();
a2[1]=newHorse();/*
* Array of Horse can hold only Horse and its subtype (if any) and not
allowed supertype of Horse nor other subtype of Animal.
*/Horse[] h1 =newHorse[10];
h1[0]=newAnimal();// Not allowed
h1[1]=newHorse();/*
* This can not be declared.
*/Horse[] h2 =newAnimal[10];// Not allowed}}
W przypadku obiektów należy albo przypisać je, aby nullje zainicjować new Type(..), klasy takie jak Stringi Integersą przypadkami specjalnymi, które będą obsługiwane w następujący sposób
String[] a ={"hello","world"};// is equivalent toString[] a ={newString({'h','e','l','l','o'}),newString({'w','o','r','l','d'})};Integer[] b ={1234,5678};// is equivalent toInteger[] b ={newInteger(1234),newInteger(5678)};
Ogólnie możesz tworzyć tablice, które są Mwymiarowe
int[][]..[] array =// ^ M times [] brackets{{..{// ^ M times { bracket// this is array[0][0]..[0]// ^ M times [0]}}..}// ^ M times } bracket;
Warto zauważyć, że tworzenie Mtablicy wymiarowej jest kosztowne pod względem przestrzeni. Ponieważ kiedy tworzysz Mtablicę wymiarową Ndla wszystkich wymiarów, całkowity rozmiar tablicy jest większy niż N^M, ponieważ każda tablica ma odniesienie, a na wymiarze M znajduje się tablica wymiarowa (M-1). Całkowity rozmiar jest następujący
Space= N^M + N^(M-1)+ N^(M-2)+..+ N^0// ^ ^ array reference// ^ actual data
Czy faktycznie uwzględniono -50 i / lub +50? To znaczy, czy wewnętrzny jest otwarty na jednym, czy na obu końcach?
Peter Mortensen
1
-50 jest uwzględnione, a +50 jest wykluczone. Te informacje z interfejsu API Java „podane pochodzenie (włącznie) i powiązane (wyłączne)”. Używam deklaracji interwałowej z wiki . Myślę więc, że będzie to bardziej poprawne [-50, 50)
Kirill Podlivaev
3
Innym sposobem zadeklarowania i zainicjowania ArrayList:
privateList<String> list =newArrayList<String>(){{
add("e1");
add("e2");}};
Tutaj jest wiele odpowiedzi. Dodaję kilka trudnych sposobów tworzenia tablic (z punktu widzenia egzaminu dobrze jest o tym wiedzieć)
Zadeklaruj i zdefiniuj tablicę
int intArray[]=newint[3];
Spowoduje to utworzenie tablicy o długości 3. Ponieważ zawiera ona prymitywny typ, int, wszystkie wartości są domyślnie ustawione na 0. Na przykład,
intArray[2];// Will return 0
Używanie nawiasów kwadratowych [] przed nazwą zmiennej
int[] intArray =newint[3];
intArray[0]=1;// Array content is now {1, 0, 0}
Zainicjuj i podaj dane do tablicy
int[] intArray =newint[]{1,2,3};
Tym razem nie trzeba wspominać o wielkości w nawiasie pudełkowym. Nawet prosty wariant tego to:
int[] intArray ={1,2,3,4};
Tablica o długości 0
int[] intArray =newint[0];int length = intArray.length;// Will return length 0
Podobne dla tablic wielowymiarowych
int intArray[][]=newint[2][3];// This will create an array of length 2 and//each element contains another array of length 3.// { {0,0,0},{0,0,0} }int lenght1 = intArray.length;// Will return 2int length2 = intArray[0].length;// Will return 3
Używanie nawiasów kwadratowych przed zmienną:
int[][] intArray =newint[2][3];
Jest absolutnie w porządku, jeśli umieścisz jeden wspornik pudełka na końcu:
int[] intArray []=newint[][]{{1,2,3},{4,5,6}};int[] intArray1 []=newint[][]{newint[]{1,2,3},newint[]{4,5,6}};int[] intArray2 []=newint[][]{newint[]{1,2,3},{4,5,6}}// All the 3 arrays assignments are valid// Array looks like {{1,2,3},{4,5,6}}
Nie jest obowiązkowe, aby każdy element wewnętrzny był tego samego rozmiaru.
int[][] intArray =newint[2][];
intArray[0]={1,2,3};
intArray[1]={4,5};//array looks like {{1,2,3},{4,5}}int[][] intArray =newint[][2];// This won't compile. Keep this in mind.
Musisz upewnić się, że jeśli używasz powyższej składni, że w kierunku do przodu musisz określić wartości w nawiasach kwadratowych. W przeciwnym razie się nie skompiluje. Kilka przykładów:
Number[] numArray ={1,2,3,4};// java.lang.Number
numArray[0]=newFloat(1.5f);// java.lang.Float
numArray[1]=newInteger(1);// java.lang.Integer// You can store a subclass object in an array that is declared// to be of the type of its superclass.// Here 'Number' is the superclass for both Float and Integer.Number num[]=newFloat[5];// This is also valid
WAŻNE: W przypadku typów referencyjnych domyślna wartość przechowywana w tablicy ma wartość NULL.
Tablica statyczna: Stała tablica rozmiarów (jej rozmiar powinien być zadeklarowany na początku i nie można go później zmienić)
Tablica dynamiczna: nie bierze się pod uwagę limitu rozmiaru. (Czyste tablice dynamiczne nie istnieją w Javie. Zamiast tego najbardziej zachęca się List)
Aby zadeklarować statyczną tablicę liczb całkowitych, łańcuchów, liczb zmiennoprzecinkowych itp., Użyj poniższej deklaracji i instrukcji inicjalizacji.
int[] intArray =newint[10];String[] intArray =newint[10];float[] intArray =newint[10];// here you have 10 index starting from 0 to 9
Aby użyć funkcji dynamicznych, musisz użyć Listy ... Lista jest czystą dynamiczną tablicą i nie ma potrzeby deklarowania rozmiaru na początku. Poniżej znajduje się właściwy sposób na zadeklarowanie listy w JAVA>
Bardzo łatwo jest zadeklarować i zainicjować tablicę. Na przykład chcesz zapisać pięć elementów całkowitych, które są 1, 2, 3, 4 i 5 w tablicy. Możesz to zrobić w następujący sposób:
za)
int[] a =newint[5];
lub
b)
int[] a ={1,2,3,4,5};
więc podstawowym wzorem dla inicjalizacji i deklaracji metodą a) jest:
Tablica może zawierać prymitywne typy danych, a także obiekty klasy w zależności od definicji tablicy. W przypadku typów danych pierwotnych wartości rzeczywiste są przechowywane w ciągłych lokalizacjach pamięci. W przypadku obiektów klasy rzeczywiste obiekty są przechowywane w segmencie sterty.
Tablice jednowymiarowe:
Ogólna forma jednowymiarowej deklaracji tablicowej to
type var-name[];
OR
type[] var-name;
Tworzenie instancji tablicy w Javie
var-name =new type [size];
Na przykład
int intArray[];//declaring array
intArray =newint[20];// allocating memory to array// the below line is equals to line1 + line2int[] intArray =newint[20];// combining both statements in oneint[] intArray =newint[]{1,2,3,4,5,6,7,8,9,10};// accessing the elements of the specified arrayfor(int i =0; i < intArray.length; i++)System.out.println("Element at index "+ i +" : "+ intArray[i]);
Chociaż ten kod może odpowiedzieć na pytanie, lepiej wyjaśnić, w jaki sposób rozwiązuje problem bez przedstawiania innych i dlaczego go używać. Odpowiedzi zawierające tylko kod nie są przydatne na dłuższą metę.
Odpowiedzi:
Możesz użyć deklaracji tablicowej lub literału tablicowego (ale tylko wtedy, gdy deklarujesz i wpływasz na zmienną od razu, literałów tablicowych nie można użyć do ponownego przypisania tablicy).
Dla typów pierwotnych:
Na przykład dla klas
String
jest to samo:Trzeci sposób inicjowania jest przydatny, gdy najpierw zadeklarujesz tablicę, a następnie ją zainicjujesz. Obsada jest tutaj niezbędna.
źródło
return {1,2,3}
daje błąd, podczas gdyreturn new int[]{1,2,3}
działa dobrze (zakładając oczywiście, że twoja funkcja zwraca tablicę liczb całkowitych).Istnieją dwa rodzaje tablic.
Tablica jednowymiarowa
Składnia wartości domyślnych:
Lub (mniej preferowane)
Składnia z podanymi wartościami (inicjalizacja zmiennej / pola):
Lub (mniej preferowane)
Uwaga: Dla wygody preferowane jest int [] num, ponieważ wyraźnie mówi, że mówisz tutaj o tablicy. W przeciwnym razie nie ma różnicy. Ani trochę.
Tablica wielowymiarowa
Deklaracja
Lub
Lub
Inicjalizacja
Lub
Poszarpana tablica (lub tablica nieprostokątna)
Więc tutaj jawnie definiujemy kolumny.
Inny sposób:
Aby uzyskać dostęp:
Alternatywnie:
Poszarpane tablice to tablice wielowymiarowe.
Aby uzyskać wyjaśnienie, zobacz wielowymiarowe szczegóły tablicy w oficjalnych samouczkach Java
źródło
jest również poprawny, ale wolę nawiasy po typie, ponieważ łatwiej jest zauważyć, że typ zmiennej jest w rzeczywistości tablicą.
źródło
int[] a, b;
nie będzie to to samoint a[], b;
, co błąd łatwy do popełnienia, jeśli użyjesz tego ostatniego formularza.Istnieją różne sposoby deklarowania tablicy w Javie:
Więcej informacji można znaleźć na stronie z samouczkami firmy Sun i JavaDoc .
źródło
Uważam, że pomocne jest zrozumienie każdej części:
Type[]
Jest to typ o zmiennej o nazwie nazwie ( „nazwa” jest nazywany identyfikatorem ). Dosłowny „Typ” jest typem podstawowym, a nawiasy oznaczają, że jest to typ tablicowy tej podstawy. Typy tablic są z kolei własnymi typami, co pozwala na tworzenie tablic wielowymiarowych, takich jakType[][]
(typ tablicowy Type []). Słowo kluczowenew
mówi, aby przydzielić pamięć dla nowej tablicy. Liczba między nawiasami określa, jak duża będzie nowa tablica i ile pamięci do przydzielenia. Na przykład, jeśli Java wie, że typ podstawowyType
zajmuje 32 bajty, a chcesz tablicę o rozmiarze 5, musi wewnętrznie przydzielić 32 * 5 = 160 bajtów.Możesz także tworzyć tablice z już tam zawartymi wartościami, takimi jak
co nie tylko tworzy puste miejsce, ale wypełnia je tymi wartościami. Java może stwierdzić, że prymitywy są liczbami całkowitymi i że jest ich 5, więc rozmiar tablicy można określić niejawnie.
źródło
int[] name = new int[5]
?Poniżej przedstawiono deklarację tablicy, ale tablica nie została zainicjowana:
Poniżej przedstawiono deklarację oraz inicjalizację tablicy:
Teraz poniżej pokazano również deklarację oraz inicjalizację tablicy:
Ale ten trzeci pokazuje właściwość anonimowego tworzenia obiektów tablicowych, na którą wskazuje zmienna referencyjna „myIntArray”, więc jeśli napiszemy tylko „new int [] {1,2,3};” w ten sposób można stworzyć anonimowy obiekt tablicowy.
Jeśli po prostu napiszemy:
nie jest to deklaracja tablicy, ale następująca instrukcja uzupełnia powyższą deklarację:
źródło
Alternatywnie,
To deklaruje tablicę o nazwie
arrayName
o rozmiarze 10 (masz do użycia elementy od 0 do 9).źródło
Ponadto, jeśli chcesz czegoś bardziej dynamicznego, znajdziesz interfejs listy. To nie będzie działać tak dobrze, ale jest bardziej elastyczne:
źródło
List
jest klasą ogólną, ma typ jako parametr zamknięty w<>
. Pomaga to, ponieważ wystarczy zdefiniować typ ogólny tylko raz, a następnie można go używać z wieloma różnymi typami. Bardziej szczegółowe wyjaśnienie znajduje się na docs.oracle.com/javase/tutorial/java/generics/types.htmlIstnieją dwa główne sposoby tworzenia tablicy:
Ten dla pustej tablicy:
I ten, dla zainicjowanej tablicy:
Możesz także tworzyć tablice wielowymiarowe, takie jak to:
źródło
Weźmy
int
na przykład typ pierwotny . Istnieje kilka sposobów deklarowania iint
tablicowania:gdzie we wszystkich tych można użyć
int i[]
zamiastint[] i
.Dzięki refleksji możesz użyć
(Type[]) Array.newInstance(Type.class, capacity);
Zauważ, że w parametrach metody
...
wskazujevariable arguments
. Zasadniczo dowolna liczba parametrów jest w porządku. Łatwiej jest to wyjaśnić za pomocą kodu:Wewnątrz metody
varargs
jest traktowany jak normalnyint[]
.Type...
może być użyte tylko w parametrach metody, więcint... i = new int[] {}
nie będzie się kompilować.Pamiętaj, że podczas przekazywania
int[]
do metody (lub dowolnej innejType[]
) nie można użyć trzeciego sposobu. W oświadczeniuint[] i = *{a, b, c, d, etc}*
, kompilator zakłada, że{...}
oznaczaint[]
. Ale to dlatego, że deklarujesz zmienną. Podczas przekazywania tablicy do metody deklaracją musi byćnew Type[capacity]
albonew Type[] {...}
.Tablice wielowymiarowe
Z macierzami wielowymiarowymi trudniej sobie poradzić. Zasadniczo tablica 2D jest tablicą tablic.
int[][]
oznacza tablicęint[]
s. Kluczem jest to, że jeśli anint[][]
jest zadeklarowany jakoint[x][y]
, maksymalny indeks toi[x-1][y-1]
. Zasadniczo prostokątint[3][5]
to:źródło
W Javie 9
Używanie różnych
IntStream.iterate
iIntStream.takeWhile
metod:W Javie 10
Korzystanie z wnioskowania o typ zmiennej lokalnej :
źródło
Jeśli chcesz tworzyć tablice przy użyciu odbić, możesz to zrobić w następujący sposób:
źródło
Deklarowanie tablicy odwołań do obiektów:
źródło
Tablica to sekwencyjna lista elementów
Jeśli jest to obiekt, to jest to ta sama koncepcja
W przypadku obiektów należy albo przypisać je, aby
null
je zainicjowaćnew Type(..)
, klasy takie jakString
iInteger
są przypadkami specjalnymi, które będą obsługiwane w następujący sposóbOgólnie możesz tworzyć tablice, które są
M
wymiaroweWarto zauważyć, że tworzenie
M
tablicy wymiarowej jest kosztowne pod względem przestrzeni. Ponieważ kiedy tworzyszM
tablicę wymiarowąN
dla wszystkich wymiarów, całkowity rozmiar tablicy jest większy niżN^M
, ponieważ każda tablica ma odniesienie, a na wymiarze M znajduje się tablica wymiarowa (M-1). Całkowity rozmiar jest następującyźródło
W Javie 8 możesz używać tego w ten sposób.
źródło
Do tworzenia tablic obiektów klasy możesz użyć
java.util.ArrayList
. aby zdefiniować tablicę:Przypisz wartości do tablicy:
Czytaj z tablicy:
Uwaga:
variableName
jest odniesieniem do tablicy, co oznacza, że manipulowanievariableName
będzie manipulowaćarrayName
dla pętli:
dla pętli, która pozwala na edycję
arrayName
(konwencjonalna dla pętli):źródło
Zadeklaruj i zainicjuj dla Java 8 i nowszych. Utwórz prostą tablicę liczb całkowitych:
Utwórz losową tablicę dla liczb całkowitych między [-50, 50] i dla liczb podwójnych [0, 1E17]:
Sekwencja potęgi dwóch:
Dla String [] musisz podać konstruktor:
Tablice wielowymiarowe:
źródło
Innym sposobem zadeklarowania i zainicjowania ArrayList:
źródło
Tutaj jest wiele odpowiedzi. Dodaję kilka trudnych sposobów tworzenia tablic (z punktu widzenia egzaminu dobrze jest o tym wiedzieć)
Zadeklaruj i zdefiniuj tablicę
Spowoduje to utworzenie tablicy o długości 3. Ponieważ zawiera ona prymitywny typ, int, wszystkie wartości są domyślnie ustawione na 0. Na przykład,
Używanie nawiasów kwadratowych [] przed nazwą zmiennej
Zainicjuj i podaj dane do tablicy
Tym razem nie trzeba wspominać o wielkości w nawiasie pudełkowym. Nawet prosty wariant tego to:
Tablica o długości 0
Podobne dla tablic wielowymiarowych
Używanie nawiasów kwadratowych przed zmienną:
Jest absolutnie w porządku, jeśli umieścisz jeden wspornik pudełka na końcu:
Kilka przykładów
Nie jest obowiązkowe, aby każdy element wewnętrzny był tego samego rozmiaru.
Musisz upewnić się, że jeśli używasz powyższej składni, że w kierunku do przodu musisz określić wartości w nawiasach kwadratowych. W przeciwnym razie się nie skompiluje. Kilka przykładów:
Kolejną ważną cechą jest kowariant
WAŻNE: W przypadku typów referencyjnych domyślna wartość przechowywana w tablicy ma wartość NULL.
źródło
Możesz to również zrobić za pomocą
java.util.Arrays
:Ten jest dość prosty i bezpośredni.
źródło
W przypadku wnioskowania o typach zmiennych lokalnych musisz podać typ tylko raz:
Lub
źródło
var
.var
openjdk.java.net/jeps/286Tablica ma dwa podstawowe typy.
Aby zadeklarować statyczną tablicę liczb całkowitych, łańcuchów, liczb zmiennoprzecinkowych itp., Użyj poniższej deklaracji i instrukcji inicjalizacji.
Aby użyć funkcji dynamicznych, musisz użyć Listy ... Lista jest czystą dynamiczną tablicą i nie ma potrzeby deklarowania rozmiaru na początku. Poniżej znajduje się właściwy sposób na zadeklarowanie listy w JAVA>
źródło
Deklaracja tablicy:
int[] arr;
Initialize Array:
int[] arr = new int[10];
10 reprezentuje liczbę elementów dozwolonych w tablicyZadeklaruj tablicę wielowymiarową:
int[][] arr;
Zainicjuj tablicę wielowymiarową:
int[][] arr = new int[10][17];
10 wierszy i 17 kolumn i 170 elementów, ponieważ 10 razy 17 to 170.Inicjowanie tablicy oznacza określenie jej rozmiaru.
źródło
Bardzo łatwo jest zadeklarować i zainicjować tablicę. Na przykład chcesz zapisać pięć elementów całkowitych, które są 1, 2, 3, 4 i 5 w tablicy. Możesz to zrobić w następujący sposób:
za)
lub
b)
więc podstawowym wzorem dla inicjalizacji i deklaracji metodą a) jest:
datatype
powinno być pisane małymi literami.Podstawowym wzorcem dla inicjalizacji i deklaracji metodą a jest:
Jeśli jest to tablica ciągów:
Jeśli jest to tablica znaków:
Dla float double format tablicy będzie taki sam jak liczba całkowita.
Na przykład:
ale kiedy zadeklarujesz i zainicjujesz tablicę za pomocą „metody a”, będziesz musiał wprowadzić wartości ręcznie, za pomocą pętli lub czegoś innego.
Ale kiedy zrobisz to „metodą b”, nie będziesz musiał ręcznie wprowadzać wartości.
źródło
Tablica może zawierać prymitywne typy danych, a także obiekty klasy w zależności od definicji tablicy. W przypadku typów danych pierwotnych wartości rzeczywiste są przechowywane w ciągłych lokalizacjach pamięci. W przypadku obiektów klasy rzeczywiste obiekty są przechowywane w segmencie sterty.
Tablice jednowymiarowe:
Ogólna forma jednowymiarowej deklaracji tablicowej to
Tworzenie instancji tablicy w Javie
Na przykład
Ref: https://www.geeksforgeeks.org/arrays-in-java/
źródło
jeden inny pełny przykład z klasą filmów 😋
źródło
przykład:
lub
przykład:
źródło
źródło