Jawaban:
Mereka identik secara semantik. Ituint array[] sintaks hanya ditambahkan ke bantuan C programmer terbiasa dengan java.
int[] array jauh lebih disukai, dan kurang membingungkan.
int array[]sintaksnya. Juga logis ... dalam beberapa cara. :)
int array[]lebih masuk akal bagi saya. Apa pendapat Anda tentang deklarasi ini? int[] x, y? Apakah yarray atau tidak? Mungkin ya, mungkin juga tidak. Hanya guru Java yang dapat menjawab dengan percaya diri ....
int[] x, y, yadalah array (karena []milik tipe), dan dalam kasus int x[], y, ybukan array ( []milik variabel).
Ada satu perbedaan kecil, jika Anda mendeklarasikan lebih dari satu variabel dalam deklarasi yang sama:
int[] a, b; // Both a and b are arrays of type int
int c[], d; // WARNING: c is an array, but d is just a regular int
Perhatikan bahwa ini adalah gaya pengkodean yang buruk, meskipun kompiler hampir pasti akan menangkap kesalahan Anda saat Anda mencoba menggunakannya d.
Tidak ada perbedaan.
Saya lebih suka type[] name format di jelas bahwa variabel adalah array (kurang melihat-lihat untuk mengetahui apa itu).
EDIT:
Oh, tunggu, ada perbedaan (saya lupa karena saya tidak pernah mendeklarasikan lebih dari satu variabel sekaligus):
int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.
Tidak, ini sama saja. Namun
byte[] rowvector, colvector, matrix[];
setara dengan:
byte rowvector[], colvector[], matrix[][];
Diambil dari Spesifikasi Java . Itu artinya
int a[],b;
int[] a,b;
berbeda. Saya tidak akan merekomendasikan salah satu dari beberapa deklarasi ini. Paling mudah dibaca adalah (mungkin):
int[] a;
int[] b;
Dari bagian 10.2 dari Spesifikasi Bahasa Jawa :
[] Dapat muncul sebagai bagian dari tipe di awal deklarasi, atau sebagai bagian dari deklarator untuk variabel tertentu, atau keduanya, seperti dalam contoh ini:
byte[] rowvector, colvector, matrix[];Deklarasi ini setara dengan:
byte rowvector[], colvector[], matrix[][];
Secara pribadi hampir semua kode Java yang pernah saya lihat menggunakan bentuk pertama, yang lebih masuk akal dengan menyimpan semua informasi jenis tentang variabel di satu tempat. Saya berharap bentuk kedua tidak diizinkan, jujur ... tapi begitulah hidup ...
Untungnya saya tidak berpikir saya pernah melihat kode (valid) ini:
String[] rectangular[] = new String[10][10];
int[] a[];- - itu tidak akan pernah menjadi tidak jelas ;-)
Kedua perintah itu adalah hal yang sama.
Anda dapat menggunakan sintaks untuk mendeklarasikan beberapa objek:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
lihat: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
Tidak ada perbedaan.
Mengutip dari Sun :
Itu
[]mungkin muncul sebagai bagian dari tipe di awal deklarasi, atau sebagai bagian dari deklarator untuk variabel tertentu, atau keduanya, seperti dalam contoh ini:byte[] rowvector, colvector, matrix[];Deklarasi ini setara dengan:
byte rowvector[], colvector[], matrix[][];
Tidak ada perbedaan di antara keduanya; keduanya mendeklarasikan array ints. Namun, yang pertama lebih disukai karena menyimpan informasi jenis di satu tempat. Yang terakhir hanya benar-benar didukung untuk kepentingan programmer C / C ++ pindah ke Jawa.
Tidak ada perbedaan nyata; namun,
double[] items = new double[10];
lebih disukai karena jelas menunjukkan bahwa jenisnya adalah array.
Keduanya sama-sama valid. Namun int puzzle[]bentuknya tidak disarankan, int[] puzzlelebih disukai sesuai dengan konvensi pengkodean . Lihat juga tutorial array Java resmi :
Demikian pula, Anda dapat mendeklarasikan array tipe lain:
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;Anda juga dapat menempatkan tanda kurung setelah nama array:
float anArrayOfFloats[]; // this form is discouragedNamun, konvensi tidak menganjurkan formulir ini; tanda kurung mengidentifikasi tipe array dan akan muncul dengan penunjukan tipe.
Perhatikan paragraf terakhir.
Saya sarankan membaca tutorial resmi Sun / Oracle daripada beberapa tutorial pihak ke-3. Anda sebaliknya akan berisiko berakhir dalam mempelajari praktik buruk.
Ini adalah bentuk alternatif, yang dipinjam dari C, di mana java didasarkan.
Sebagai rasa ingin tahu, ada tiga cara untuk mendefinisikan mainmetode yang valid di java:
public static void main(String[] args)public static void main(String args[])public static void main(String... args)public static void main ( String \u005B \u005D args ), ini adalah varian lain juga.
String... param, adalah sebuah array
, then why it is not possible to call a method like say someMethod (1, 2) `jika seseorang mendefinisikan someMethodsebagai someMethod ( int[] numbers ). Array menuntut bahwa argumen, harus dari lokasi memori yang berdekatan varargs, akan membuat array dari argumen yang disediakan terlebih dahulu. Selain itu, a varargshanya bisa menjadi argumen akhir dari suatu metode, meskipun hal yang sama tidak berlaku untuk array.
meth(int... a)dapat disebut sebagai salah satu meth(1, 2)atau meth(new int[] {1, 2}). Varargs adalah gula sintaksis yang mengubah versi pertama menjadi versi kedua. Tipe aktual (bytecode) dari parameter adalah tipe array. Adapun harus menjadi yang terakhir, jika Anda berpikir tentang hal itu, tidak ada pilihan waras lainnya.
The Java Language Specification mengatakan:
The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example:
byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
byte rowvector[], colvector[], matrix[][];
Dengan demikian mereka akan menghasilkan kode byte yang persis sama.
Mereka sepenuhnya setara. int [] arrayadalah gaya yang disukai. int array[]hanya disediakan sebagai gaya setara C yang kompatibel.
Keduanya memiliki makna yang sama. Namun, keberadaan varian ini juga memungkinkan ini:
int[] a, b[];
yang sama dengan:
int[] a;
int[][] b;
Namun, ini adalah gaya pengkodean yang mengerikan dan tidak boleh dilakukan.
Mereka sama, tetapi ada perbedaan penting antara pernyataan ini:
// 1.
int regular, array[];
// 2.
int[] regular, array;
in 1. regular hanyalah sebuah int, berbeda dengan 2. di mana regular dan array adalah array dari int.
Oleh karena itu, pernyataan kedua yang Anda miliki lebih disukai, karena lebih jelas. Bentuk pertama juga tidak disarankan menurut tutorial tentang Oracle ini .
Seperti yang sudah dinyatakan, tidak ada banyak perbedaan (jika Anda mendeklarasikan hanya satu variabel per baris).
Perhatikan bahwa SonarQube memperlakukan kasus kedua Anda sebagai bau kode minor :
Perancang array "[]" harus pada tipe, bukan variabel (squid: S1197)
Perancang larik harus selalu ditempatkan pada jenis untuk keterbacaan kode yang lebih baik. Jika tidak, pengembang harus melihat pada jenis dan nama variabel untuk mengetahui apakah suatu variabel adalah array.
Contoh Kode Tidak Patuh
int matrix[][]; // Noncompliant int[] matrix[]; // NoncompliantSolusi yang Sesuai
int[][] matrix; // Compliant
Yap, persis sama. Secara pribadi, saya lebih suka
int[] integers;
karena itu membuatnya segera jelas bagi siapa pun yang membaca kode Anda bahwa integer adalah array int, sebagai lawan
int integers[];
yang tidak membuat semuanya jelas, terutama jika Anda memiliki banyak deklarasi dalam satu baris. Tetapi sekali lagi, mereka setara, sehingga turun ke preferensi pribadi.
Lihat halaman ini pada array di Jawa untuk contoh lebih mendalam.
ketika mendeklarasikan referensi array tunggal, tidak ada banyak perbedaan di antara mereka. jadi dua deklarasi berikut sama.
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
ketika mendeklarasikan beberapa referensi array, kita dapat menemukan perbedaan di antara mereka. dua pernyataan berikut artinya sama. pada kenyataannya, terserah programmer mana yang mengikuti. tetapi notasi java standar direkomendasikan.
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references
Sementara int integers[]solusi berakar pada bahasa C (dan dengan demikian dapat dianggap sebagai pendekatan "normal"), banyak orang menemukan int[] integerslebih logis karena tidak memungkinkan untuk membuat variabel dari jenis yang berbeda (yaitu int dan array) dalam satu deklarasi (sebagai lawan dari deklarasi C-style).