Mempertimbangkan:
int[][] multD = new int[5][];
multD[0] = new int[10];
Apakah ini cara Anda membuat array dua dimensi dengan 5 baris dan 10 kolom?
Saya melihat kode ini online, tetapi sintaksinya tidak masuk akal.
java
multidimensional-array
AppSensei
sumber
sumber
Jawaban:
Coba yang berikut ini:
... yang merupakan kependekan dari sesuatu seperti ini:
Perhatikan bahwa setiap elemen akan diinisialisasi dengan nilai default untuk
int
,0
sehingga di atas adalah juga setara dengan:sumber
new int[][]
di=new int[][]{...}
varian? Bisakah kita menulis={...}
?new
kata kunci.int array[][] = new int[3][];
VSint array[][] = new int[][3];
?? mana yang legal karena saya telah membaca kedua versi di suatu tempat.Kita dapat mendeklarasikan array dua dimensi dan langsung menyimpan elemen pada saat deklarasi sebagai:
Di sini int mewakili elemen tipe integer yang disimpan ke dalam array dan nama array adalah 'tanda'. int adalah tipe data untuk semua elemen yang direpresentasikan di dalam kurung "{" dan "}" karena array adalah kumpulan elemen yang memiliki tipe data yang sama.
Kembali ke pernyataan kami yang tertulis di atas: setiap baris elemen harus ditulis di dalam kurung kurawal. Baris dan elemen di setiap baris harus dipisahkan oleh koma.
Sekarang perhatikan pernyataan: Anda bisa mendapatkan ada 3 baris dan 5 kolom, sehingga JVM menciptakan 3 * 5 = 15 blok memori. Blok-blok ini dapat secara individual disebut sebagai:
CATATAN:
Jika Anda ingin menyimpan n elemen maka indeks array dimulai dari nol dan berakhir pada n-1 . Cara lain untuk membuat array dua dimensi adalah dengan mendeklarasikan array terlebih dahulu dan kemudian mengalokasikan memori untuknya dengan menggunakan operator baru.
Dengan menggabungkan dua di atas kita dapat menulis:
sumber
Anda dapat membuatnya seperti yang orang lain katakan. Satu hal lagi untuk ditambahkan: Anda bahkan dapat membuat array dua dimensi yang miring pada setiap baris, tidak harus memiliki jumlah kolom yang sama, seperti ini:
sumber
int array[][] = new int[3][];
VSint array[][] = new int[][3];
?? mana yang legal karena saya telah membaca kedua versi di suatu tempat.Idiom paling umum untuk membuat array dua dimensi dengan 5 baris dan 10 kolom adalah:
Atau, Anda dapat menggunakan yang berikut, yang lebih mirip dengan yang Anda miliki, meskipun Anda perlu menginisialisasi setiap baris secara eksplisit:
sumber
Object[][] ary2d = new Object[5][10];
itu, Anda masih harus menginisialisasi setiap elemen dari array 2D.null
kasing dengan aman untuk orang non primitif. Apakah Anda harus menginisialisasi setiap elemen sepenuhnya tergantung pada desain Anda. Juga, hanya untuk mengklarifikasi - primitif tidak boleh nol dan instantiated ke nilai default yang ditentukan jika tidak ditugaskan oleh Anda. Misalnya aint
tidak boleh nol dan ketika Anda mengatakanint i;
tanpa memberikan nilai, yang standar0
digunakan. Baca tentang itu di siniDimungkinkan juga untuk menyatakannya dengan cara berikut. Ini bukan desain yang bagus, tapi itu berfungsi.
sumber
Mencoba:
Perhatikan bahwa dalam kode Anda hanya baris pertama dari array 2D diinisialisasi ke 0. Baris 2 hingga 5 bahkan tidak ada. Jika Anda mencoba mencetaknya, Anda akan mendapatkannya
null
untuk semua orang.sumber
sumber
Di Jawa, array dua dimensi dapat dinyatakan sama dengan array satu dimensi. Dalam array satu dimensi Anda dapat menulis suka
di mana int adalah tipe data, array [] adalah deklarasi array, dan
new array
merupakan array dengan objeknya dengan lima indeks.Seperti itu, Anda dapat menulis array dua dimensi sebagai berikut.
Ini
array
adalah tipe data int. Saya pertama kali mendeklarasikan pada array satu dimensi dari tipe-tipe itu, kemudian array 3 baris dan 4 kolom dibuat.Dalam kode Anda
berarti Anda telah membuat array dua dimensi, dengan lima baris. Di baris pertama ada 10 kolom. Di Jawa, Anda dapat memilih ukuran kolom untuk setiap baris sesuai keinginan.
sumber
Nikmati!
sumber
Coba dengan cara ini:
sumber
Jenis-jenis array ini dikenal sebagai array bergerigi di Jawa:
Dalam skenario ini setiap baris array menampung jumlah kolom yang berbeda. Pada contoh di atas, baris pertama akan menampung tiga kolom, baris kedua akan menampung dua kolom, dan baris ketiga berisi lima kolom. Anda dapat menginisialisasi array ini pada waktu kompilasi seperti di bawah ini:
Anda dapat dengan mudah mengulangi semua elemen dalam array Anda:
sumber
Sebenarnya Java tidak memiliki array multi-dimensi dalam arti matematika. Apa yang dimiliki Java hanyalah array array, sebuah array di mana setiap elemen juga merupakan array. Itulah sebabnya syarat mutlak untuk menginisialisasi adalah ukuran dimensi pertama. Jika sisanya ditentukan maka akan membuat array yang diisi dengan nilai default.
Itu juga memberi kita kekhasan. Ukuran sub-array tidak dapat diubah dengan menambahkan lebih banyak elemen, tetapi kita dapat melakukannya dengan menetapkan array baru ukuran sewenang-wenang.
sumber