Panjang Array di Java


101

Saya mendeklarasikan sebuah array seperti yang ditunjukkan di bawah ini:

int[] arr = new int[10];

Kemudian saya memberikan nilai berikut ke array:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

Kemudian saya mendeklarasikan dan menginisialisasi variabel integer:

int arrayLength = arr.length;

Ini akan berguna untuk menemukan ukuran sebenarnya tetapi adakah metode untuk menemukan ukuran logis dari array?

Jawaban:



71

Pertama-tama, lengthadalah properti, jadi itu akan menjadi arr.lengthbukan arr.length().

Dan itu akan mengembalikan 10, ukuran yang dinyatakan. Elemen yang tidak Anda deklarasikan secara eksplisit diinisialisasi dengan 0.


Tidak dapat memanggil panjang () pada tipe array long [] Java (67108980)
Alessandro Ornano

22

Untuk menemukan panjang sebuah array, AAnda harus menggunakan lengthproperti. Ini sebagai A.length, jangan gunakan A.length()terutama digunakan untuk ukuran objek yang berhubungan dengan string.

masukkan deskripsi gambar di sini

Properti length akan selalu menampilkan total ruang yang dialokasikan ke array selama inisialisasi.

Jika Anda pernah memiliki masalah seperti ini, cara sederhana adalah dengan menjalankannya. Selamat Memprogram!


6

Array adalah alokasi memori statis, jadi jika Anda menginisialisasi array bilangan bulat:

int[] intArray = new int[15];

Panjangnya akan selalu 15, tidak peduli berapa banyak indeks yang diisi.

Dan satu hal lagi, ketika Anda menginisialisasi array integer, semua indeks akan diisi dengan "0".


5

Di Java, ukuran "aktual" dan "logis" Anda sama. Run-time mengisi semua slot array dengan nilai default pada alokasi. Jadi, Anda aberisi 10.


5

Dalam kasus ini, arr.length akan mengembalikan 10, ukuran array yang Anda alokasikan. Ukuran logika tidak benar-benar berlaku di sini, karena ini adalah larik dengan panjang tetap.

Saat Anda menginisialisasi array:

int[] arr = new int[10];

Java akan membuat larik dengan 10 elemen dan menginisialisasi semuanya ke 0. Lihat spesifikasi bahasa Java untuk detail nilai awal ini dan tipe primitif lainnya.


4
int[] arr = new int[10];

arradalah inttipe array yang memiliki ukuran 10. Ini adalah larik 10elemen. Jika kita tidak menginisialisasi sebuah array dengan elemen array default berisi nilai default. Dalam kasus nilai default int array adalah 0.

length adalah properti yang dapat diterapkan untuk sebuah array.
di sini arr.lengthakan memberi 10.


3

`

int larik [] = int baru [3]; array.length;

jadi di sini kami telah membuat sebuah array dengan ruang memori 3 ... ini adalah tampilannya sebenarnya

0th 1st 2nd ...........> Indeks 2 4 5 ...........> Angka

Jadi seperti yang Anda lihat, ukuran array ini adalah 3 tetapi indeks array hanya maksimal 2 karena array apa pun dimulai dengan indeks ke-0.

output pernyataan kedua harus 3 karena panjang array adalah 3 ... Tolong jangan bingung antara nilai indeks dan panjang array ....

Bersulang!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

Ini akan berisi ukuran sebenarnya dari array karena itulah yang Anda inisialisasi dari array saat Anda mendeklarasikannya. Java tidak memiliki konsep ukuran "logis" dari sebuah larik, sejauh ini menyangkut nilai default 0 sama logisnya dengan nilai yang telah Anda tetapkan secara manual.


1

Ini berisi ukuran yang dialokasikan, 10. Indeks yang tersisa akan berisi nilai default yaitu 0.


1

Jika Anda menginginkan ukuran logis dari larik, Anda dapat melintasi semua nilai dalam larik dan memeriksanya dengan nol. Tingkatkan nilainya jika bukan nol dan itu akan menjadi ukuran logis. Karena ukuran array tetap, Anda tidak memiliki metode bawaan, mungkin Anda harus melihat koleksi.


Ini hanyalah ukuran "Saya menganggap 0 bukan nilai yang valid" dan jika itu membantu agak diragukan.
Tom

Saya baru saja mendapatkan ide untuk mendapatkan panjang array (0 tidak valid). Seperti yang saya katakan, Anda dapat menggunakan koleksi untuk manipulasi data yang lebih tepat.
Struse

1

Harus:

int a = arr.length;

Tanda kurung harus dihindari.


5
Selamat datang di stack overflow! Karena ini pertanyaan yang berumur lebih dari satu tahun, dan sudah memiliki enam jawaban lain, saya mengharapkan jawaban yang lebih panjang dari ini. Selain itu, Anda tidak menjawab inti pertanyaan - hanya memperbaiki kesalahan ketik yang telah ditargetkan dalam jawaban (yang menjawab pertanyaan) dan komentar pertanyaan.
John Dvorak

0

Array Java sebenarnya berukuran tetap, dan jawaban lain menjelaskan bagaimana .length tidak benar-benar melakukan apa yang Anda harapkan. Saya hanya ingin menambahkan bahwa dengan pertanyaan Anda, apa yang mungkin ingin Anda gunakan adalah ArrayList, yaitu array yang dapat tumbuh dan menyusut:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

Di sini metode .size () akan menunjukkan kepada Anda jumlah elemen dalam daftar Anda, dan Anda dapat mengembangkannya saat Anda menambahkan sesuatu.


0

jika yang Anda maksud dengan "ukuran logika", indeks dari array, maka cukup int arrayLength = arr.length-1; karena indeks array dimulai dengan "0", maka logika atau "indeks array" akan selalu lebih kecil dari ukuran sebenarnya dengan "satu".


0

Array dialokasikan memori pada waktu kompilasi di java, sehingga bersifat statis, elemen yang tidak disetel atau dimodifikasi secara eksplisit disetel dengan nilai default. Anda dapat menggunakan beberapa kode seperti ini, meskipun tidak disarankan karena tidak menghitung nilai default, bahkan jika Anda menginisialisasi secara eksplisit dengan cara itu, kemungkinan juga akan menyebabkan bug di telepon. Seperti yang dikatakan orang lain, saat mencari ukuran sebenarnya, ".length" harus digunakan sebagai pengganti ".length ()".

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.