แม้ว่านี่จะไม่ใช่คำตอบสำหรับคำถามโดยตรง แต่มันก็เป็นส่วนเสริมของอาร์กิวเมนต์.length
vs .size()
ฉันกำลังค้นคว้าสิ่งที่เกี่ยวข้องกับคำถามนี้ดังนั้นเมื่อฉันเจอมันฉันสังเกตเห็นว่าคำจำกัดความที่ให้ไว้ที่นี่
ความยาวสนามสุดท้ายประชาชนซึ่งมีจำนวนขององค์ประกอบของอาร์เรย์
ไม่ถูกต้อง
ความยาวของเขตข้อมูลประกอบด้วยจำนวนของสถานที่ที่มีอยู่เพื่อใส่ส่วนประกอบไม่ใช่จำนวนขององค์ประกอบที่มีอยู่ในอาร์เรย์ ดังนั้นจึงแสดงถึงหน่วยความจำทั้งหมดที่มีอยู่ซึ่งจัดสรรให้กับอาร์เรย์นั้นไม่ใช่จำนวนหน่วยความจำที่เต็มไป
ตัวอย่าง:
static class StuffClass {
int stuff;
StuffClass(int stuff) {
this.stuff = stuff;
}
}
public static void main(String[] args) {
int[] test = new int[5];
test[0] = 2;
test[1] = 33;
System.out.println("Length of int[]:\t" + test.length);
String[] test2 = new String[5];
test2[0] = "2";
test2[1] = "33";
System.out.println("Length of String[]:\t" + test2.length);
StuffClass[] test3 = new StuffClass[5];
test3[0] = new StuffClass(2);
test3[1] = new StuffClass(33);
System.out.println("Length of StuffClass[]:\t" + test3.length);
}
เอาท์พุท:
Length of int[]: 5
Length of String[]: 5
Length of StuffClass[]: 5
อย่างไรก็ตาม.size()
คุณสมบัติของการArrayList
ให้จำนวนองค์ประกอบในรายการ:
ArrayList<Integer> intsList = new ArrayList<Integer>();
System.out.println("List size:\t" + intsList.size());
intsList.add(2);
System.out.println("List size:\t" + intsList.size());
intsList.add(33);
System.out.println("List size:\t" + intsList.size());
เอาท์พุท:
List size: 0
List size: 1
List size: 2