Baru-baru ini saya memikirkan perbedaan antara dua cara mendefinisikan array:
int[] array
int array[]
Apakah ada perbedaan?
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
? Apakahy
array atau tidak? Mungkin ya, mungkin juga tidak. Hanya guru Java yang dapat menjawab dengan percaya diri ....int[] x, y
,y
adalah array (karena[]
milik tipe), dan dalam kasusint x[], y
,y
bukan array ([]
milik variabel).Ada satu perbedaan kecil, jika Anda mendeklarasikan lebih dari satu variabel dalam deklarasi yang sama:
Perhatikan bahwa ini adalah gaya pengkodean yang buruk, meskipun kompiler hampir pasti akan menangkap kesalahan Anda saat Anda mencoba menggunakannya
d
.sumber
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):
sumber
Tidak, ini sama saja. Namun
setara dengan:
Diambil dari Spesifikasi Java . Itu artinya
berbeda. Saya tidak akan merekomendasikan salah satu dari beberapa deklarasi ini. Paling mudah dibaca adalah (mungkin):
sumber
Dari bagian 10.2 dari Spesifikasi Bahasa Jawa :
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:
sumber
int[] a[];
- - itu tidak akan pernah menjadi tidak jelas ;-)Kedua perintah itu adalah hal yang sama.
Anda dapat menggunakan sintaks untuk mendeklarasikan beberapa objek:
lihat: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
sumber
Tidak ada perbedaan.
Mengutip dari Sun :
sumber
Tidak ada perbedaan di antara keduanya; keduanya mendeklarasikan array
int
s. 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.sumber
Tidak ada perbedaan nyata; namun,
lebih disukai karena jelas menunjukkan bahwa jenisnya adalah array.
sumber
Keduanya sama-sama valid. Namun
int puzzle[]
bentuknya tidak disarankan,int[] puzzle
lebih disukai sesuai dengan konvensi pengkodean . Lihat juga tutorial array Java resmi :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.
sumber
Ini adalah bentuk alternatif, yang dipinjam dari
C
, di mana java didasarkan.Sebagai rasa ingin tahu, ada tiga cara untuk mendefinisikan
main
metode yang valid di java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
sumber
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 mendefinisikansomeMethod
sebagaisomeMethod ( int[] numbers )
. Array menuntut bahwa argumen, harus dari lokasi memori yang berdekatanvarargs
, akan membuat array dari argumen yang disediakan terlebih dahulu. Selain itu, avarargs
hanya bisa menjadi argumen akhir dari suatu metode, meskipun hal yang sama tidak berlaku untuk array.meth(int... a)
dapat disebut sebagai salah satumeth(1, 2)
ataumeth(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.Tidak ada perbedaan, tetapi Sun merekomendasikan untuk meletakkannya di sebelah tipe seperti yang dijelaskan di sini
sumber
Opsi yang paling disukai adalah
int[] a
- karenaint[]
jenisnya, dana
nama. (Opsi ke-2 Anda sama dengan ini, dengan ruang yang salah tempat)Secara fungsional tidak ada perbedaan di antara mereka.
sumber
The Java Language Specification mengatakan:
Dengan demikian mereka akan menghasilkan kode byte yang persis sama.
sumber
Di Jawa, ini adalah metode sintaksis yang berbeda untuk mengatakan hal yang sama.
sumber
Mereka sama. Satu lebih mudah dibaca (untuk beberapa) daripada yang lain.
sumber
Mereka sepenuhnya setara.
int [] array
adalah gaya yang disukai.int array[]
hanya disediakan sebagai gaya setara C yang kompatibel.sumber
Keduanya memiliki makna yang sama. Namun, keberadaan varian ini juga memungkinkan ini:
yang sama dengan:
Namun, ini adalah gaya pengkodean yang mengerikan dan tidak boleh dilakukan.
sumber
Tidak ada perbedaan fungsi antara kedua gaya deklarasi. Keduanya mendeklarasikan array int.
Tapi
int[] a
tetap ketikkan informasi bersama dan lebih banyak verbose jadi saya lebih suka itu.sumber
Mereka sama, tetapi ada perbedaan penting antara pernyataan ini:
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 .
sumber
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 :
sumber
Yap, persis sama. Secara pribadi, saya lebih suka
karena itu membuatnya segera jelas bagi siapa pun yang membaca kode Anda bahwa integer adalah array int, sebagai lawan
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.
sumber
ketika mendeklarasikan referensi array tunggal, tidak ada banyak perbedaan di antara mereka. jadi dua deklarasi berikut sama.
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.
sumber
Keduanya baik-baik saja. Saya sarankan untuk memilih satu dan tetap menggunakannya. (Saya melakukan yang kedua)
sumber
Sementara
int integers[]
solusi berakar pada bahasa C (dan dengan demikian dapat dianggap sebagai pendekatan "normal"), banyak orang menemukanint[] integers
lebih logis karena tidak memungkinkan untuk membuat variabel dari jenis yang berbeda (yaitu int dan array) dalam satu deklarasi (sebagai lawan dari deklarasi C-style).sumber