การสร้างและการเข้าถึงอาร์เรย์
แนะนำใหม่| English | ความหมาย |
|---|---|
| initializer list/ɪˈnɪʃəlaɪzə lɪst/ | ลิสต์เริ่มต้นค่า |
| ArrayIndexOutOfBoundsException/əˈreɪ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | ArrayIndexOutOfBoundsException |
การสร้างอาร์เรย์
- ประกาศ อาร์เรย์ ด้วยประเภทและ
[]:int[] scores; - สร้างด้วย
newและขนาด:int[] scores = new int[5];(ห้าช่อง) - หรือระบุค่าโดยตรง:
int[] scores = {85, 90, 78};(รายการเริ่มต้น) - ทุกช่องเริ่มต้นที่ค่าเริ่มต้นของประเภท (
0สำหรับint,nullสำหรับออบเจ็กต์)
ดัชนีเริ่มจากศูนย์
- องค์ประกอบอาร์เรย์ถูกกำหนดหมายเลขตั้งแต่
0; ดัชนีสุดท้ายคือlength - 1. - เข้าถึงช่องด้วย
scores[i]:scores[0]คือตัวแรก,scores[2]คือตัวที่สาม - กำหนดค่าด้วย
scores[0] = 100;และอ่านด้วยint x = scores[0]; - ข้อผิดพลาด Off-by-one ที่ดัชนีสุดท้ายเป็นบั๊กอาร์เรย์ที่พบบ่อยที่สุด
ฟิลด์ความยาว
- ขนาดของอาร์เรย์คือ
lengthฟิลด์ — ไม่มีวงเล็บ:scores.length. - (เปรียบเทียบกับ
String'slength()เมธอด, ซึ่งมีวงเล็บ.) lengthมีค่าคงที่เมื่อสร้างอาร์เรย์แล้ว — อาร์เรย์ไม่ยืดหดขนาดได้- ใช้
scores.lengthในเงื่อนไขวนลูปเพื่อให้อยู่ภายในขอบเขต
เกินขอบเขต
- ดัชนีที่ถูกต้องคือ
0ถึงlength - 1; อย่างอื่นจะเกิด ArrayIndexOutOfBoundsException scores[5]บนอาร์เรย์ขนาด 5 คือ เกินขอบเขต (ดัชนีคือ0–4).- เงื่อนไขลูป
i < scores.lengthรักษาiให้อยู่ในขอบเขต - ห้ามใช้
<=กับlength— มันข้ามไปหลังสุดหนึ่งจุด
ขนาดอาร์เรย์คือ length (ฟิลด์, ไม่มีวงเล็บ); String ความยาวคือ length() (เมธอด, มีวงเล็บ). สลับกันจะไม่คอมไพล์ และดัชนีที่ถูกต้องคือ 0 ถึง length - 1 — scores[scores.length]跨过末尾และเกิด ArrayIndexOutOfBoundsException. ววนลูปด้วย i < scores.length, ห้ามใช้ i <= scores.length.
การสร้างและการเข้าถึงอาร์เรย์:
int[] a = {10, 20, 30};— ความยาว3, ดัชนี0,1,2.a[0]คือ10;a[2]คือ30;a.lengthคือ3.a[3]throws ArrayIndexOutOfBoundsException (ไม่มีดัชนี 3).
สร้าง array ด้วย new type[size] หรือ initializer list {...}. องค์ประกอบมีดัชนีตั้งแต่ 0 ถึง length - 1, เข้าถึงผ่าน a[i]. ขนาดคือ length ฟیلด์ (ไม่มีวงเล็บ) ดัชนีนอกเหนือจาก 0..length-1 จะเกิด ArrayIndexOutOfBoundsException — ให้ลูปด้วย i < a.length
การใช้อิน덱ซ์อาร์เรย์เริ่มต้นที่ 0
a[0]=10, a[1]=20, a[2]=30; a.length มีค่าเป็น 3
สำหรับ int[] a = {10, 20, 30}; a[0] คืออะไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
อาร์เรย์ใช้อิน덱ซ์เริ่มต้นที่ 0 ดังนั้น a[0] จึงเป็นองค์ประกอบแรก 10
คุณจะได้ขนาดของอาร์เรย์ a อย่างไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ขนาดอาร์เรย์คือฟิลด์ length (ไม่มีวงเล็บ)
สำหรับ int[] a = {10, 20, 30}; a.length คืออะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
สามองค์ประกอบ → length เป็น 3
สำหรับอาร์เรย์ขนาด 5 การเข้าถึงดัชนี 5 (a[5])...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
อิน덱ซ์ที่ใช้ได้คือ 0..4; อิน덱ซ์ 5 เกินขอบเขต
String ใช้ length() (เมทოდ) ในขณะที่อาร์เรย์ใช้ length (ฟิลด์)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ไวยากรณ์ต่างกัน — มีวงเล็บสำหรับ String ไม่มีสำหรับอาร์เรย์