Ostatnio zastanawiałem się nad różnicą między dwoma sposobami definiowania tablicy:
int[] array
int array[]
Czy jest jakaś różnica?
Są semantycznie identyczne. int array[]
Składnia dodano tylko do pomocy programistów C przyzwyczaić do java.
int[] array
jest o wiele bardziej preferowane i mniej mylące.
int array[]
składnia. Również logiczne ... w jakiś pokręcony sposób. :)int array[]
ma dla mnie więcej sensu. Co sądzisz o tej deklaracji?int[] x, y
? Jesty
tablicą czy nie? Może tak, a może nie. Tylko guru Java mogą odpowiedzieć z pewnością ....int[] x, y
,y
jest tablicą (ponieważ[]
należy do typu), aw przypadkuint x[], y
,y
nie jest tablicą ([]
należy do zmiennej).Jest jedna drobna różnica, jeśli zdarza się, że deklarujesz więcej niż jedną zmienną w tej samej deklaracji:
Zauważ, że jest to zły styl kodowania, chociaż kompilator prawie na pewno złapie twój błąd w momencie, gdy spróbujesz go użyć
d
.źródło
Nie ma różnicy.
Wolę
type[] name
format jest jasne, że zmienna jest tablicą (mniej rozglądając się, aby dowiedzieć się, co to jest).EDYTOWAĆ:
Och, czekaj, jest różnica (zapomniałem, ponieważ nigdy nie deklaruję więcej niż jednej zmiennej na raz):
źródło
Nie, są takie same. jednak
jest równa:
Zaczerpnięte ze specyfikacji Java . Oznacza to, że
są różne. Nie poleciłbym żadnej z tych wielokrotnych deklaracji. Najłatwiejszy do odczytania to (prawdopodobnie):
źródło
Z sekcji 10.2 specyfikacji języka Java :
Osobiście prawie wszyscy kod Java, jaki kiedykolwiek widziałem, używa pierwszej formy, co ma większy sens, ponieważ wszystkie informacje o zmiennej są przechowywane w jednym miejscu. Chciałbym, żeby druga forma została niedozwolona, szczerze mówiąc ... ale takie jest życie ...
Na szczęście chyba nie widziałem tego (poprawnego) kodu:
źródło
int[] a[];
- to nigdy nie będzie niejasne ;-)Dwa polecenia są takie same.
Możesz użyć składni do zadeklarowania wielu obiektów:
patrz: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
źródło
Bez różnicy.
Cytowanie z Sun :
źródło
Nie ma między nimi żadnej różnicy; oba deklarują tablicę
int
s. Jednak ta pierwsza jest preferowana, ponieważ utrzymuje informacje o typie w jednym miejscu. To ostatnie jest obsługiwane tylko dla programistów C / C ++ przechodzących na Javę.źródło
Nie ma prawdziwej różnicy; jednak,
jest preferowany, ponieważ wyraźnie wskazuje, że typ jest tablicą.
źródło
Oba są jednakowo ważne.
int puzzle[]
Forma jest jednak zniechęcać Theint[] puzzle
jest korzystne według standardy kodowania . Zobacz także oficjalny samouczek dotyczący tablic Java :Zwróć uwagę na ostatni akapit.
Zalecam przeczytanie oficjalnych samouczków Sun / Oracle, a nie niektórych zewnętrznych. W przeciwnym razie zaryzykowałbyś, ucząc się złych praktyk.
źródło
Jest to forma alternatywna, z której została zapożyczona
C
, na której oparta jest Java.Ciekawostką są trzy sposoby zdefiniowania prawidłowej
main
metody w java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
źródło
public static void main ( String \u005B \u005D args )
jest to również inny wariant.String... param
, jest tablicą, then why it is not possible to call a method like say
someMethod (1, 2) `jeśli definiuje sięsomeMethod
jakosomeMethod ( int[] numbers )
. Tablice wymagają jednak, aby argument musiał pochodzić z ciągłego miejsca w pamięci, alevarargs
najpierw utworzy tablicę z podanych argumentów. Co więcej, avarargs
może być tylko ostatnim argumentem metody, chociaż nie dotyczy to również tablicy.meth(int... a)
można wywoływać jako jedenmeth(1, 2)
lubmeth(new int[] {1, 2})
. Varargs to cukier składniowy, który zmienia pierwszą wersję w drugą wersję. Rzeczywisty typ (kod bajtowy) parametru to typ tablicy. Jeśli chodzi o konieczność bycia ostatnim, jeśli się nad tym zastanowić, nie ma innego rozsądnego wyboru.Nie ma różnicy, ale Sun zaleca umieszczenie go obok typu opisanego tutaj
źródło
Najbardziej preferowaną opcją jest
int[] a
- ponieważint[]
jest to typ ia
nazwa. (Twoja druga opcja jest taka sama, z niewłaściwie umieszczonym miejscem)Funkcjonalnie nie ma między nimi żadnej różnicy.
źródło
Java Language Specification mówi:
W ten sposób otrzymają dokładnie ten sam kod bajtowy.
źródło
W Javie są to po prostu różne składniowe metody mówienia tego samego.
źródło
Oni są tacy sami. Jeden jest bardziej czytelny (dla niektórych) niż drugi.
źródło
Są całkowicie równoważne.
int [] array
jest preferowanym stylem.int array[]
jest po prostu zapewniony jako równoważny styl zgodny z C.źródło
Oba mają to samo znaczenie. Jednak istnienie tych wariantów pozwala również na to:
który jest taki sam jak:
Jest to jednak okropny styl kodowania i nigdy nie należy tego robić.
źródło
Nie ma różnicy w funkcjonalności między obydwoma stylami deklaracji. Obie deklarują tablicę int.
Ale
int[] a
łączy informacje o typie i jest bardziej szczegółowe, więc wolę.źródło
Są takie same, ale istnieje istotna różnica między tymi stwierdzeniami:
w 1. regular jest tylko liczbą całkowitą, w przeciwieństwie do 2. gdzie zarówno regularna, jak i tablica są tablicami liczb całkowitych.
W związku z tym preferowane jest drugie stwierdzenie, ponieważ jest bardziej przejrzyste. Pierwsza forma jest również odradzana zgodnie z tym samouczkiem na temat Oracle .
źródło
Jak już wspomniano, nie ma dużej różnicy (jeśli zadeklarujesz tylko jedną zmienną na linię).
Pamiętaj, że SonarQube traktuje twój drugi przypadek jako niewielki zapach kodu:
źródło
Tak, dokładnie tak samo. Osobiście wolę
ponieważ od razu staje się oczywiste dla każdego czytającego Twój kod, że liczby całkowite są tablicami liczb całkowitych, w przeciwieństwie do
co nie czyni tego tak oczywistym, szczególnie jeśli masz wiele deklaracji w jednym wierszu. Ale znowu są one równoważne, więc sprowadza się to do osobistych preferencji.
Sprawdź tę stronę dotyczącą tablic w Javie, aby uzyskać bardziej szczegółowe przykłady.
źródło
deklarując odniesienie do pojedynczej tablicy, nie ma między nimi dużej różnicy. więc następujące dwie deklaracje są takie same.
deklarując wiele odniesień tablicowych, możemy znaleźć różnicę między nimi. następujące dwa stwierdzenia oznaczają to samo. w rzeczywistości to od programisty zależy, który z nich śledzi. ale zalecana jest standardowa notacja Java.
źródło
Oba są ok. Sugeruję wybranie jednego i trzymanie się go. (Robię drugi)
źródło
Chociaż
int integers[]
rozwiązanie zakorzenia się w języku C (i dlatego można je uznać za „normalne” podejście), wiele osób uważa, że jestint[] integers
bardziej logiczny, ponieważ nie pozwala na tworzenie zmiennych różnych typów (tj. Int i tablica) w jednej deklaracji (w przeciwieństwie do deklaracja w stylu C).źródło