Java String array: apakah ada ukuran metode?

152

Saya berasal dari latar belakang php dan di php, ada array_size()fungsi yang memberitahu Anda berapa banyak elemen dalam array yang digunakan.

Apakah ada metode serupa untuk sebuah String[]array? Terima kasih.

phill
sumber
3
Heh, semua jawaban ada di menit yang sama.
jjnguy
1
Ah, PHP dengan namespace global yang berantakan. Masa lalu yang indah ...
kevinji
2
saya pikir maksudnya adalah jumlah php () bukan array_size ()
Joshua Burns

Jawaban:

277

Ya, .length(seperti properti, bukan metode):

String[] array = new String[10];
int size = array.length;
Keris
sumber
2
hai, bagaimana kita bisa menemukan dokumen yang mencantumkan semua properti dan fungsi yang mungkin dari objek array? Maksud saya bukan objek Array yang merupakan satu-satunya dokumen yang dapat saya temukan.
GMsoF
1
@ GMsoF Dokumentasi untuk "[]" (array, bukan objek Array) sebenarnya adalah spesifikasi Java. .eg docs.oracle.com/javase/specs/jls/se7/html/jls-10.html Edit: Ah ... komentarnya dari 2013 ...
Acapulco
44
array.length

Ini sebenarnya adalah anggota terakhir dari array, bukan metode.

jjnguy
sumber
2
IIRC, itu sebenarnya bukan bidang, hanya terlihat seperti satu.
Tom Hawtin - tackline
Oh, lalu apa itu? Beberapa hal Array khusus?
jjnguy
3
sebuah "pseudo field" yang dikompilasi ke sebuah op-code panjang array khusus, daripada op-code akses field.
Pete Kirkham
2
Ini adalah bidang, sesuai dengan §10.7 ( java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 ): "Panjang bidang akhir publik, yang berisi jumlah komponen array ( panjangnya bisa positif atau nol). "
Michael Myers
19

Juga, mungkin berguna untuk mencatat bahwa jika Anda memiliki Array beberapa dimensi, Anda bisa mendapatkan dimensi masing-masing hanya dengan menambahkan '[0]' ke array yang Anda query sampai Anda tiba pada sumbu / tuple / dimensi yang sesuai.

Ini mungkin lebih baik dijelaskan dengan kode berikut:

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

Yang menghasilkan output:

5
12
Liang
sumber
15

properti akhir array.length

itu adalah milik umum dan final. Ini final karena array di Jawa tidak dapat diubah berdasarkan ukuran (tetapi dapat diubah oleh nilai elemen)

dfa
sumber
14

Array adalah objek dan bidangnya panjang.

String [] haha ​​= {"olle", "bulle"};

haha. Panjangnya akan 2

willcodejavaforfood
sumber
Hanya untuk nitpick. Tapi saya percaya array BUKAN objek di Jawa - mereka adalah salah satu dari dua jenis variabel referensi. Yang lainnya adalah objek.
jabbie
2
@ Jabbie: Benarkah? Apakah Anda punya referensi untuk itu? Saya hanya mempertanyakannya karena Anda dapat mengatakan Object o = new String [] {"hello"};
Simon Nickerson
Saya pikir alasan pernyataan itu bekerja adalah karena mereka memperkenalkan kelas refleksif untuk semua tipe primitif.
Brian Sweeney
9
Baca kalimat pertama dari docs.oracle.com/javase/specs/jls/se8/html/jls-10.html dan kemudian coba beri tahu kami bahwa array bukanlah objek. ;)
Michael Myers
1
Anda bisa menggunakan nama variabel lain, itu sangat mengganggu saya
Space Rocker
11

Di java ada lengthbidang yang bisa Anda gunakan pada array apa pun untuk mengetahui ukurannya:

    String[] s = new String[10];
    System.out.println(s.length);
bruno conde
sumber
1
terima kasih karena tidak membahas masalah teknis tentang apa itu mungkin atau tidak, dan hanya memberikan jawaban singkat dan ringkas. +1 untuk Anda. :)
Joshua Burns
9

Jika Anda ingin fungsi melakukan ini

Object array = new String[10];
int size = Array.getlength(array);

Ini bisa berguna jika Anda tidak tahu apa jenis array yang Anda miliki misalnya int [], byte [] atau Object [].

Peter Lawrey
sumber
6

Ada perbedaan antara panjang Stringdan arrayuntuk memperjelas:

int a[] = {1, 2, 3, 4};
String s = "1234";

a.length //gives the length of the array

s.length() //gives the length of the string
Valona
sumber
Ini harus diperbarui dalam pertanyaan jika klarifikasi.
Whitecat
5

Jawabannya adalah "Semuanya". Array java dialokasikan dengan jumlah tetap slot elemen. Atribut "length" akan memberi tahu Anda berapa banyak. Angka itu tidak berubah untuk umur array. Untuk persamaan yang dapat diubah ukurannya, Anda memerlukan salah satu kelas java.util.List - di mana Anda dapat menggunakan metode size () untuk mengetahui berapa banyak elemen yang digunakan.

Namun, ada "Sedang digunakan" dan kemudian Ada Digunakan . Dalam array objek kelas, Anda dapat memiliki slot elemen yang elemennya adalah objek nol, jadi meskipun mereka menghitung dalam atribut panjang, tetapi definisi kebanyakan orang, mereka tidak digunakan (YMMV, tergantung pada aplikasi). Tidak ada fungsi bawaan untuk mengembalikan jumlah null / non-null.

Daftar objek belum memiliki definisi lain "Sedang Digunakan". Untuk menghindari penciptaan / penghancuran yang berlebihan dari struktur penyimpanan yang mendasarinya, biasanya ada beberapa lapisan di kelas-kelas ini. Ini digunakan secara internal, tetapi tidak dihitung dalam metode ukuran yang dikembalikan (). Dan jika Anda mencoba mengakses item-item tersebut tanpa memperluas Daftar (melalui metode add), Anda akan mendapatkan pengecualian indeks ilegal.

Jadi untuk Daftar, Anda dapat memiliki "Dalam Penggunaan" untuk elemen yang tidak nol, berkomitmen, Semua elemen yang berkomitmen (termasuk elemen nol), atau Semua elemen, termasuk ruang ekspansi yang saat ini dialokasikan.

Tim H
sumber
2

Semua jawaban di atas benar. Yang penting untuk diperhatikan adalah array memiliki atribut panjang tetapi bukan metode panjang. Setiap kali Anda menggunakan string dan array di java tiga model dasar yang mungkin Anda hadapi adalah:

  1. String s = String baru ("vidyasagar");
    System.out.println (s.length ()); // Dalam hal ini kami hanya menggunakan String. Tidak ada atribut panjang untuk Strings. kita harus menggunakan metode length ().
  2. int [] s = new int [10]; System.out.println (s.length); // di sini kita menggunakan atribut array panjang.
  3. String [] s = String baru [10];
    System.out.println (s.length); // Di sini meskipun tipe data adalah String, itu bukan String tunggal. s adalah referensi untuk berbagai string. Jadi kami menggunakan atribut panjang array untuk menyatakan berapa banyak string yang bisa masuk dalam array itu.
vidyasagar
sumber
1

Tidak benar-benar jawaban untuk pertanyaan Anda, tetapi jika Anda ingin memiliki sesuatu seperti array yang dapat tumbuh dan menyusut Anda sebaiknya tidak menggunakan array di java. Anda mungkin lebih baik menggunakan ArrayList atau implementasi Daftar lainnya.

Anda kemudian dapat memanggil size () di atasnya untuk mendapatkan ukurannya.

Simon Groenewolt
sumber