Pytanie Czy zainicjowana tablica zachowuje kolejność?


Załóżmy, że zainicjowałem tablicę nieco w ten sposób:

int[] anArray = { 
    100, 200, 300,
    400, 500, 600, 
    700, 800, 900, 1000
};

Czy jest zagwarantowane, że elementy będą zawsze wstawiane w tej samej kolejności, jaką wpisałem podczas inicjowania? Na przykład.: 100,200,300,400,500,600,700,...,1000?


12
2018-01-11 23:52


pochodzenie




Odpowiedzi:


Tak, gwarantuje to specyfikacja (patrz JLS 10.6):

Zmienne inicjatory natychmiast zamknięte w nawiasach klamrowych   inicjalizator tablicowy jest następnie wykonywany od lewej do prawej w tekście   kolejność występuje w kodzie źródłowym. N-ty inicjator zmiennej   określa wartość komponentu tablicy n-1.


13
2018-01-11 23:56



Dobry! Szukałem czegoś takiego w dokumentach, domyślam się, że patrzyłem na niewłaściwą stronę. Wielkie dzięki! - Mauker


Krótka odpowiedź: Tak, jeśli zainicjujesz to w ten sposób, będą one w kolejności, w jakiej zostały zainicjalizowane.

Zobacz JLS na ten temat:

Zmienne inicjatory zamknięte bezpośrednio przez nawiasy inicjalizatora macierzy są następnie wykonywane od lewej do prawej w kolejności tekstowej, w jakiej występują w kodzie źródłowym. N-ty inicjator zmiennej określa wartość n-1-tego komponentu macierzy

https://docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.6


12
2018-01-11 23:54





Czy jest zagwarantowane, że elementy będą zawsze wstawiane w tej samej kolejności, jaką wpisałem podczas inicjowania?

tak


3
2018-01-11 23:54





TAK!

Wysłany przez Ciebie kod jest identyczny:

int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };

To, co robi, to stworzyć array z integers, gdzie 100 idzie w pozycji 0, 200 do pozycji 1, 300 do pozycji 2, 400 do pozycji 3 itd.

Działa to tak samo dla każdej tablicy za każdym razem!


1
2018-01-21 01:17





Tak, jeśli tablica zmieniała położenie wartości, większość programów we współczesnym dniu nie będzie działać.


0
2018-01-12 00:07



OP pyta o kolejność inicjalizacji, a nie o "pozycję" - Sleiman Jneidi