Rumah  >  Artikel  >  Java  >  Apakah Maksud \'[Ljava.lang.Object;\' dalam Pengekodan Jenis Tatasusunan Java?

Apakah Maksud \'[Ljava.lang.Object;\' dalam Pengekodan Jenis Tatasusunan Java?

Barbara Streisand
Barbara Streisandasal
2024-11-18 19:59:02142semak imbas

What Does

Memahami Pengekodan Jenis Tatasusunan Objek

Apabila mendapatkan semula objek daripada panggilan fungsi dan mencetak perwakilan rentetannya, anda mungkin menghadapi tatatanda yang membingungkan seperti "[Ljava.lang.Object;". Ungkapan yang membingungkan ini mewakili jenis kelas objek, tetapi bagaimanakah kita menghuraikan format samarnya?

Skim pengekodan jenis kelas diperincikan dengan elegan dalam Class.getName(): untuk jenis rujukan (tidak termasuk tatasusunan), nama binari dikembalikan. Jenis primitif dan kekosongan diberikan kata kunci Java mereka. Walau bagaimanapun, untuk tatasusunan, pengekodan mereka mengambil bentuk yang unik.

Pengekodan Tatasusunan: Memecahkan [ Ljava.lang.Object; ]

"Ljava.lang.Object;" ialah tatatanda untuk kelas Java yang mewakili tatasusunan Objek, juga dikenali sebagai Object[].class. Corak penamaan mengikut peraturan berikut:

  • Nama jenis elemen dinyatakan dahulu.
  • Untuk tatasusunan, jenis elemen didahului oleh satu atau lebih aksara '[', menunjukkan kedalaman bersarang.

Memahami Notasi Pengekodan

Formatnya adalah seperti berikut:

Pengekodan Jenis Elemen
boolean Z
bait B
char C
double D
float F
int I
panjang J
S pendek
kelas atau antara muka Lclassname;

Contoh Penyahkodan

Untuk ilustrasi, pertimbangkan contoh berikut:

  • [[[I@xxxxx: Ini mewakili tatasusunan dengan tiga peringkat bersarang, yang mengandungi integer sebagai elemen.
  • [[Ljava.lang.String;@xxxxx: Ini menandakan tatasusunan dengan dua peringkat bersarang, mengandungi tatasusunan Rentetan.
  • [Z@xxxxx: Ini mewakili tatasusunan dengan unsur boolean.

Mengapa Tatasusunan Mengatasi toString()

Bertentangan dengan jangkaan, kaedah toString() untuk tatasusunan menyimpang daripada pelaksanaan kelas Objek. Ia mengembalikan rentetan dalam format yang disebutkan di atas kerana tatasusunan tidak mengatasi kaedah ini. Oleh itu, kaedah yang diwarisi daripada Object, dinyatakan seperti berikut, digunakan:

String.class mengembalikan rentetan dalam format: getClass().getName() '@' Integer.toHexString(hashCode())

Perwakilan Rentetan Array Alternatif

Kelas java.util.Arrays menawarkan lebih banyak perwakilan rentetan yang mesra pengguna untuk tatasusunan:

  • Arrays.toString (nums): Untuk tatasusunan primitif dan Objek[], senarai elemen yang dipisahkan koma dipaparkan.
  • Arrays.deepToString(jadual): Untuk tatasusunan berbilang dimensi, perwakilan bersarang disediakan.

Sumber Berguna Tambahan

  • Arrays.equals dan Arrays.deepEquals: Kaedah ini membandingkan tatasusunan untuk kesamaan mengikut unsur.
  • Java Arrays.equals() mengembalikan false untuk tatasusunan dua dimensi
  • Berkesan Java 2nd Edition, Item 53: Lebih suka antara muka daripada refleksi

Atas ialah kandungan terperinci Apakah Maksud \'[Ljava.lang.Object;\' dalam Pengekodan Jenis Tatasusunan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn