ฉันมาจากพื้นหลัง php และใน php มีarray_size()
ฟังก์ชั่นที่จะบอกคุณว่ามีองค์ประกอบจำนวนเท่าใดในอาร์เรย์ที่ใช้
มีวิธีการที่คล้ายกันสำหรับString[]
อาร์เรย์หรือไม่? ขอบคุณ
ฉันมาจากพื้นหลัง php และใน php มีarray_size()
ฟังก์ชั่นที่จะบอกคุณว่ามีองค์ประกอบจำนวนเท่าใดในอาร์เรย์ที่ใช้
มีวิธีการที่คล้ายกันสำหรับString[]
อาร์เรย์หรือไม่? ขอบคุณ
คำตอบ:
ใช่.length
(เหมือนอสังหาริมทรัพย์ไม่ใช่วิธี):
String[] array = new String[10];
int size = array.length;
array.length
เป็นสมาชิกสุดท้ายของอาร์เรย์ไม่ใช่วิธีการ
นอกจากนี้อาจเป็นประโยชน์ที่จะทราบว่าหากคุณมีอาร์เรย์หลายมิติคุณสามารถรับมิติที่เกี่ยวข้องเพียงแค่ผนวก '[0]' ในอาร์เรย์ที่คุณกำลังสอบถามจนกว่าจะถึงแกน / tuple / มิติที่เหมาะสม
นี่อาจอธิบายได้ดีกว่าด้วยรหัสต่อไปนี้:
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
}
}
ซึ่งผลิตผลลัพธ์:
5
12
array.length คุณสมบัติสุดท้าย
มันเป็นทรัพย์สินสาธารณะและสุดท้าย มันเป็นสิ่งสุดท้ายเพราะอาร์เรย์ใน Java ไม่สามารถเปลี่ยนแปลงได้ตามขนาด (แต่ไม่แน่นอนโดยค่าขององค์ประกอบ)
อาร์เรย์เป็นวัตถุและมีฟิลด์ความยาว
String [] haha = {"olle", "bulle"};
haha.length จะเท่ากับ 2
ในจาวามีlength
ฟิลด์ที่คุณสามารถใช้กับอาเรย์เพื่อหาขนาดของมัน:
String[] s = new String[10];
System.out.println(s.length);
หากคุณต้องการฟังก์ชั่นการทำเช่นนี้
Object array = new String[10];
int size = Array.getlength(array);
สิ่งนี้มีประโยชน์หากคุณไม่ทราบว่าคุณมีอาร์เรย์ประเภทใดเช่น int [], byte [] หรือ Object []
มีความแตกต่างระหว่างความยาวของString
และarray
เพื่อชี้แจง:
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
คำตอบคือ "ทุกคน" อาร์เรย์ java ถูกจัดสรรด้วยจำนวนสล็อตองค์ประกอบที่คงที่ แอตทริบิวต์ "ความยาว" จะบอกคุณว่ามีจำนวนเท่าใด จำนวนนั้นไม่เปลี่ยนรูปไปตลอดชีวิตของอาเรย์ สำหรับการเทียบเท่าที่ปรับขนาดได้คุณจำเป็นต้องมีหนึ่งคลาส java.util.List ซึ่งคุณสามารถใช้เมธอด size () เพื่อค้นหาว่ามีการใช้งานองค์ประกอบจำนวนเท่าใด
อย่างไรก็ตามมี "ใช้งาน" แล้วมีใช้งานอยู่ ในอาเรย์คลาสอ็อบเจ็กต์คุณสามารถมีสล็อตอิลิเมนต์ที่องค์ประกอบเป็นวัตถุที่เป็นโมฆะดังนั้นแม้ว่าพวกเขาจะนับในแอตทริบิวต์ความยาว แต่คำจำกัดความของคนส่วนใหญ่พวกเขาไม่ได้ใช้งาน (YMMV ขึ้นอยู่กับแอปพลิเคชัน) ไม่มีฟังก์ชั่น builtin สำหรับคืนค่า null / non-null
รายการวัตถุมีคำจำกัดความอื่นของ "ใช้งาน" เพื่อหลีกเลี่ยงการสร้าง / ทำลายโครงสร้างการจัดเก็บข้อมูลพื้นฐานมากเกินไปโดยทั่วไปแล้วจะมีช่องว่างภายในคลาสเหล่านี้บางส่วน มันถูกใช้ภายใน แต่ไม่นับในวิธีการส่งคืนขนาด () และหากคุณพยายามเข้าถึงรายการเหล่านั้นโดยไม่ขยายรายการ (ผ่านวิธีการเพิ่ม) คุณจะได้รับข้อยกเว้นดัชนีที่ผิดกฎหมาย
ดังนั้นสำหรับรายการคุณสามารถมี "ใช้งาน" สำหรับองค์ประกอบที่ไม่เป็นโมฆะองค์ประกอบที่กำหนดทั้งหมด (รวมถึงองค์ประกอบที่เป็นโมฆะ) หรือองค์ประกอบทั้งหมดรวมถึงพื้นที่ส่วนขยายที่ได้รับการจัดสรรในปัจจุบัน
คำตอบทั้งหมดข้างต้นมีความเหมาะสม สิ่งสำคัญที่ต้องสังเกตคืออาร์เรย์มีคุณลักษณะความยาว แต่ไม่ใช่ความยาว เมื่อใดก็ตามที่คุณใช้สตริงและอาร์เรย์ใน java ทั้งสามรุ่นพื้นฐานที่คุณอาจเผชิญคือ:
ไม่ใช่คำตอบสำหรับคำถามของคุณ แต่ถ้าคุณต้องการมีบางอย่างเช่นอาเรย์ที่สามารถเติบโตและลดขนาดได้คุณไม่ควรใช้อาเรย์ในจาวา คุณน่าจะดีที่สุดโดยใช้ArrayListหรือการใช้งานรายการอื่น
จากนั้นคุณสามารถโทรหา size () เพื่อเพิ่มขนาด