ใช่มันจะสร้างการอ้างอิงเท่านั้นซึ่งถูกตั้งค่าเป็นค่าเริ่มต้นเป็นโมฆะ นั่นคือเหตุผลที่คุณได้รับ NullPointerException คุณต้องสร้างวัตถุแยกต่างหากและกำหนดการอ้างอิง มี 3 ขั้นตอนในการสร้างอาร์เรย์ใน Java -
การประกาศ - ในขั้นตอนนี้เราระบุชนิดข้อมูลและขนาดของอาร์เรย์ที่เราจะสร้าง แต่จำไว้ว่าเรายังไม่พูดถึงขนาดของขนาด พวกเขาถูกปล่อยให้ว่างเปล่า
การสร้างอินสแตนซ์ - ในขั้นตอนนี้เราสร้างอาร์เรย์หรือจัดสรรหน่วยความจำสำหรับอาร์เรย์โดยใช้คำหลักใหม่ มันอยู่ในขั้นตอนนี้ที่เราพูดถึงขนาดของขนาดอาเรย์
การเริ่มต้น - อาร์เรย์จะถูกคืนค่าเป็นค่าเริ่มต้นของชนิดข้อมูลเสมอ แต่เราสามารถเริ่มต้นได้เอง
ประกาศอาร์เรย์ใน Java
นี่คือวิธีที่เราประกาศอาร์เรย์หนึ่งมิติใน Java -
int[] array;
int array[];
Oracle ขอแนะนำให้คุณใช้ไวยากรณ์เดิมเพื่อประกาศอาร์เรย์ นี่คือตัวอย่างอื่น ๆ ของการประกาศทางกฎหมาย -
// One Dimensional Arrays
int[] intArray; // Good
double[] doubleArray;
// One Dimensional Arrays
byte byteArray[]; // Ugly!
long longArray[];
// Two Dimensional Arrays
int[][] int2DArray; // Good
double[][] double2DArray;
// Two Dimensional Arrays
byte[] byte2DArray[]; // Ugly
long[] long2DArray[];
และนี่คือตัวอย่างของการประกาศที่ผิดกฎหมาย -
int[5] intArray; // Don't mention size!
double{} doubleArray; // Square Brackets please!
instantiation
นี่คือวิธีที่เรา“ ยกตัวอย่าง” หรือจัดสรรหน่วยความจำสำหรับอาร์เรย์ -
int[] array = new int[5];
เมื่อ JVM พบnew
คำหลักมันเข้าใจว่าจะต้องจัดสรรหน่วยความจำสำหรับบางสิ่งบางอย่าง และโดยการระบุint[5]
เราหมายความว่าเราต้องการอาเรย์ของint
s, ขนาด 5 ดังนั้น JVM สร้างหน่วยความจำและกำหนดการอ้างอิงของหน่วยความจำที่จัดสรรใหม่ให้กับอาเรย์ซึ่งเป็น "อ้างอิง" ของประเภทint[]
การเริ่มต้น
การใช้ลูป - การใช้ลูปสำหรับเริ่มต้นองค์ประกอบของอาร์เรย์เป็นวิธีที่ใช้กันโดยทั่วไปมากที่สุดเพื่อให้ได้อาร์เรย์ ไม่จำเป็นต้องเรียกใช้ลูป for ถ้าคุณจะกำหนดค่าเริ่มต้นเองเนื่องจาก JVM ทำเพื่อคุณ
ทั้งหมดในอย่างเดียว..! - เราสามารถประกาศยกตัวอย่างและเริ่มต้นอาร์เรย์ของเราได้ในครั้งเดียว นี่คือไวยากรณ์ -
int[] arr = {1, 2, 3, 4, 5};
ที่นี่เราไม่ได้พูดถึงขนาดเพราะ JVM สามารถเห็นได้ว่าเราให้ 5 ค่า
ดังนั้นจนกว่าเราจะยกตัวอย่างการอ้างอิงยังคงเป็นโมฆะ ฉันหวังว่าคำตอบของฉันจะช่วยคุณ .. ! :)