1. String
อาร์เรย์
ฉันต้องการให้ภาพรวมคร่าวๆ เกี่ยวกับString
อาร์เรย์
อย่างที่เราได้กล่าวไปก่อนหน้านี้ อาร์เรย์สามารถเป็นประเภทใดก็ได้ ซึ่งหมายความว่าคุณสามารถสร้างอาร์เรย์ของString
s หากเราต้องการเขียนโปรแกรมที่ "อ่าน 10 บรรทัดจากแป้นพิมพ์และแสดงผลตามลำดับย้อนกลับ" โค้ดจะมีลักษณะดังนี้:
|
สร้างScanner วัตถุสร้างวัตถุอาร์เรย์ 10 องค์ประกอบ วนซ้ำจาก 0 ถึง 9 อ่านสตริงจากแป้นพิมพ์และบันทึกลงในเซลล์ถัดไปของอาร์เรย์ วนซ้ำจาก 9 ถึง 0 แสดงเซลล์ถัดไปในอาร์เรย์ |
รหัสแทบไม่เปลี่ยน! เราต้องแทนที่int
ด้วยString
เมื่อสร้างอาร์เรย์ เท่านั้น และเมื่ออ่านสตริงจากแป้นพิมพ์ เราก็แทนที่เมธอดnextInt()
ด้วยnextLine()
.
2. String
อาร์เรย์ในหน่วยความจำ
และอีกหนึ่งข้อเท็จจริงที่เป็นประโยชน์ ลองพิจารณา 3 ภาพ:
ภาพที่ 1วิธีการString
จัดเรียงวัตถุในหน่วยความจำ:
ภาพนี้ถ่ายจากบทเรียนที่แล้ว
โปรดทราบว่าข้อความของสตริงไม่ได้ถูกจัดเก็บโดยตรงในตัวแปร: มีการจัดสรรบล็อกหน่วยความจำแยกต่างหากสำหรับข้อความนั้น ตัวแปรString
เก็บที่อยู่ (อ้างอิง) ไปยังวัตถุที่เก็บข้อความ
ภาพที่ 2วิธีการจัดเรียงอาร์เรย์จำนวนเต็มในหน่วยความจำ:
รูปนี้ก็คุ้นๆ
ภาพที่ 3วิธีการจัดเรียงอาร์เรย์สตริงในหน่วยความจำ:
ทางด้านซ้ายเราจะเห็นตัวแปรอาร์เรย์ที่มีประเภทString[]
(เก็บที่อยู่ของวัตถุอาร์เรย์)
ตรงกลางเรามีString
วัตถุอาร์เรย์เอง
และทางด้านขวาคือวัตถุสตริงที่เก็บข้อความบางส่วน
เซลล์ของString
อาร์เรย์ไม่ได้เก็บสตริงไว้เอง (ข้อความของออบเจกต์สตริง) แต่จะเก็บที่อยู่ (อ้างอิงถึงพวกเขา) แทน ในลักษณะเดียวกับที่String
ตัวแปรจัดเก็บที่อยู่ของวัตถุสตริง (ที่เก็บข้อความ)
พิจารณาสิ่งนี้เมื่อคุณเปรียบเทียบเซลล์อาร์เรย์:
|
สร้างอาร์เรย์ 10 สตริง ใส่ค่าลงในอาร์เรย์ true (การอ้างอิงเท่ากัน) false (การอ้างอิงไม่เท่ากัน)true (สตริงเท่ากัน) true (สตริงยังคงเท่ากัน) |
3. การเริ่มต้นอาร์เรย์อย่างรวดเร็วใน Java
อาร์เรย์มีประโยชน์มาก ดังนั้นผู้สร้าง Java จึงพยายามทำให้การทำงานกับอาร์เรย์สะดวกที่สุด
สิ่งแรกที่พวกเขาทำคือการทำให้การกำหนดค่าเริ่มต้นของอาร์เรย์ง่ายขึ้น ซึ่งเป็นกระบวนการที่คุณระบุค่าเริ่มต้นของอาร์เรย์
ท้ายที่สุดแล้ว นอกเหนือจากการอ่านข้อมูลจากที่ใดที่หนึ่งแล้ว โปรแกรมยังต้องการข้อมูลภายในของตัวเองค่อนข้างบ่อยเพื่อให้ทำงานได้ ตัวอย่างเช่น สมมติว่าเราต้องเก็บความยาวของแต่ละเดือนไว้ในอาร์เรย์ นี่คือลักษณะของรหัส:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
แต่ต้องขอบคุณผู้สร้าง Java มีวิธีเขียนให้กระชับกว่านี้:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
คุณสามารถระบุค่าทั้งหมดของอาร์เรย์โดยคั่นด้วยเครื่องหมายจุลภาค!
สะดวกใช่ไหม? แต่นั่นไม่ใช่ทั้งหมด
เมื่อเกิดขึ้น คอมไพเลอร์สามารถกำหนดประเภทของคอนเทนเนอร์ (วัตถุอาร์เรย์) ตามประเภทของค่าของอาร์เรย์ และเพื่อกำหนดความยาวของอาร์เรย์ การนับจำนวนองค์ประกอบที่เขียนในวงเล็บปีกกาก็ไม่ใช่เรื่องเล็กน้อย
นั่นหมายความว่าโค้ดนี้สามารถเขียนให้สั้นลงได้อีก:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
เรื่องของความงามใช่ไหม? 🙂
สิ่งนี้เรียกว่า "การเริ่มต้นอาร์เรย์อย่างรวดเร็ว" โดยวิธีการนี้ใช้ได้กับประเภทอื่นที่ไม่ใช่int
...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION