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?

Kiran Bhat
sumber

Jawaban:

86

Ini berisi ukuran yang dialokasikan 10,. Indeks yang tidak ditetapkan akan berisi nilai default 0untuk int.

Kai
sumber
3
Ya, array adalah alokasi memori statis.
Ramon Saraiva
3
Bisakah Anda menunjukkan javadoc? Saya tidak tahu di mana properti "panjang" ini.
Philip Rego
1
@PhilipRego Ada dalam spesifikasi bahasa docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.3
Torben
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.

Costi Ciudatu
sumber
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!

Ravi Pandey
sumber
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".

Ramon Saraiva
sumber
5

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

Beladau
sumber
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.

Tom Elliott
sumber
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.

Anil
sumber
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!

Ayush Murty AH
sumber
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
alok
sumber
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.

Turix
sumber
1

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

Nikhil Kumar
sumber
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.

Struse
sumber
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.

Godlu
sumber
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.

draxil.dll
sumber
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".

Salah
sumber
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;
}
Poobean
sumber