อาร์เรย์ (หนังสือบางเล่นใช้คำว่าแถวลำดับ ตัวแปรชุด) ช่วยในการเก็บข้อมูลจำนวนมากโดยไม่ต้องประกาศตัวแปรเยอะๆ เช่น ต้องการเก็บข้อมูล 100 ข้อมูลก็ไม่ต้องประกาศตัวแปร 50 ตัวเพราะมันเสียเวลา ประกาศอาร์เรย์เดียวขนาด 100 ช่อง การใช้อาร์เรย์ยังไปได้ด้วยดีกับการใช้ลูป เพราะอาร์เรย์จะเก็บข้อมูลประเภทเดียวกัน เช่น เก็บ int ก็จะเก็บ int ทั้งอาร์เรย์ทำให้ใช้ลูปมาเก็บใส่ได้ดี การใช้งานอาร์เรย์ได้แก่ การเก็บข้อมูล การหาข้อมูลและการเรียงลำดับเป็นสำคัญ
อาร์เรย์
อาร์เรย์จะถูกแบ่งออกเป็นหลายๆช่อง โดยมีสิ่งที่เรียกว่า index เป็นตัวระบุว่าข้อมูลนั้นๆอยู่ช่องไหน โดยในภาษาจาวา อาร์เรย์ช่องแรกจะเริ่มต้นที่ index[0] หมายความว่า ถ้าประกาศอาร์เรย์ 100 ช่อง indexหรือช่องสุดท้ายจะเป็น 99
จากในรูปจะเห็นว่าเราเก็บข้อมูลเป็นจำนวนเต็ม เลข 1 เก็บไว้ใน อาร์เรย์ช่องแรก index[0] และ 16 เก็บไว้ที่ index[4]
รูป 5-1
จะเห็นว่าว่าอาร์เรย์ข้างบนมี 5 ช่อง แต่มี index[0-4] ถ้าเผลอเก็บข้อมูลไว้ที่ index[5] จะ error
รูป 5-2
เป็นการประกาศอาร์เรย์ 3 ช่อง ดังนั้น index จะมีเพียงแค่ index[0] index[1] index[2] พอไปเก็บไว้ที่index[3] ก็จะ เกิด error ต้องระวังไว้ว่าช่องแรกเริ่มที่ 0 เสมอ
รูป 5-3
วิธีการประกาศตัวแปรชนิดอาร์เรย์ 1 มิติ
ชนิดตัวแปร [ ] ชื่อตัวแปร;
ชนิดตัวแปร ชื่อตัวแปร[ ];
เช่น int a [ ]; หรือ int [ ]a;
อาร์เรย์เป็นอ็อปเจ็ค เวลาสร้างอาร์เรย์ใช้จริงๆต้องใช้คีย์เวิร์ด new คือข้างบนแค่ประกาศเหมือนประกาศตัวแปรทั่วไป แต่การ new คือจะเราอาร์เรย์มาใช้ก็เหมือนการจะให้ค่ากับตัวแปร
ชื่อตัวแปร = new ชนิดตัวแปร[ ขนาดของอาร์เรย์ที่อยากได้];
a = new int [5];
แต่จริงๆคือประกาศตัวแปรและเรียกใช้อาร์เรย์ในบรรทัดเดียวกันก็ได้
int a[ ] = new int [5];
อันนี้เท่ากับว่าประกาศตัวแปร x เก็บข้อมูลชนิด int ใส่ อาร์เรย์ 1 มิติ
รูป 5-4
เมื่อเรา ประกาศตัวแปรa[ ] เราก็ได้กล่อง a ขึ้นมาแต่พอเรา new ก็จะได้บล็อกแถวข้างๆออกมา ต้องมีทั้งกล่องและบล็อกที่จะเอากล่องไปใส่ถึงจะสามารถใช้อาร์เรย์ได้สมบูรณ์
การอ้างอิงอาร์เรย์เดียวกัน
ในอาร์เรย์ตัวแปรอาร์เรย์สามารถชี้ไปที่อาร์เรย์เดียวกันได้ โดยใช้เครื่องหมาย = กล่าวคือเครื่องหมาย = ในจาวามีได้ 2 ความหมาย คือ
1.ตัวแปรธรรมดา = คือเอาค่าทางขวาไปใส่ทางซ้าย เช่น x = 3; คือเอา 3 ไปใส่ x
2.ตัวแปรอาร์เรย์ = คือตัวทางซ้ายกับตัวทางขวา ชี้ไปที่ อาร์เรย์เดียวกัน เช่น
int [ ]d = new int [5];
int [ ]a = d;
รูป 5-5
สร้างอาร์เรย์ d ขึ้นมา 5 ช่อง d ก็จะชี้ไปที่อาร์เรย์ 5ช่อง พอสร้าง a ขึ้นมาก็ให้ชี้ไปที่เดียวกับที่ d ชี้อยู่ โดยใช้ เครื่องหมาย =
กำจัดขยะด้วย Garbage collector
ในจาวาอาร์เรย์ที่ไม่มีตัวแปรอ้างอิงจะถูกกำจัดเพื่อให้ประหยัดหน่วยความจำ
int a = new int[6];
a = new int[2];
รูป 5-6
ตัวอย่างการสร้าง เพิ่ม และใช้งานอาร์เรย์
ให้รับข้อมูลใส่อาร์เรย์10ตัวถามว่าในอาร์เรย์มีเลขคู่หรือไม่มี
รูป 5-7
บรรทัดที่ 8 : ใช้ Scanner เพื่อรับข้อมูลจากทางแป้นพิมพ์(Scanner ก็ใช้วิธีการ new เช่นเดียวกับ array)
บรรทัดที่ 9 : ประกาศตัวแปร x เป็นอาร์เรย์ โดยกำหนดขนาดอาร์เรย์เป็น 10 ช่อง
บรรทัดที่ 10 : จากนั้นวนลูป for โดยมีเงื่อนไขคือ i<x.length โดย .length หมายความว่า ขนาดของ กล่าวคือ
ตราบเท่าที่ i ยังไม่เกินขนาดของอาร์เรย์ x ให้ทำการรับข้อมูลต่อ
บรรทัดที่ 13 : ให้x[ ] เก็บข้อมูลจากการวนลูปของ i
บรรทัดที่ 15 : ประกาศตัวแปร count สำหรับใช้นับว่ามีจำนวนที่เป็นเลขคู่หรือไม่
บรรทัดที่ 16 : ใช้ลูปวน for วนลูปเท่าขนาดอาร์เรย์อีกครั้ง
บรรทัดที่ 18 : ใช้เงื่อนไขเพื่อตรวจสอบว่าในอาร์เรย์มีจำนวนที่หารด้วย 2 ลงตัวหรือไม่
บรรทัดที่ 20-21 : หากมีตัวที่เป็นไปตามเงื่อนไขของบรรทัดที่ 18 ให้ทำ count นับ 1 และทำการ break; ออก
จากลูปเลยเพราะมีอย่างน้อย 1 ตัวเป็นเลขคู่ก็หมายความว่า อาร์เรย์นี้มีเลขคู่
บรรทัดที่ 24 - 31 : สร้างเงื่อนไขอีก ถ้า count มากกว่า 0 ให้ แสดงผลว่ามีเลขคู่ แต่ถ้าไม่มีให้บอกไม่มี
ได้ผลลัพธ์ดังนี้
รูป 5-8
การหาค่ามากสุด
รูป 5-9
โปรแกรมนี้ต้องการทำให้โปรแกรมเรียงลำดับของอาร์เรย์จากน้อยไปมากและแสดงผลออกทางหน้าจอ
บรรทัดที่ 9 : ประกาศอาร์เรย์ x ขนาด 10 ช่อง
บรรทัดที่ 11-15: ทำการวนลูปโดยให้ลูปมีขนาดเท่ากับอาร์เรย์ จากนั้นทำการ random ตัวเลข0-50 มาใส่ใน
อาร์เรย์ จากนั้นแสดงผลออกทางหน้าจอ
บรรทัดที่ 17-19 : จากนั้นจะทำการเปรียบเทียบค่าในอาร์เรย์ทีละสองตัวเพื่อเรียงลำดับโดยให้ลูปแรกมีขนาด
เท่ากับอาร์เรย์ที่เราประกาศ ส่วนลูปที่ 2 ลดขนาดลง 1 เพราะไม่ต้องทำการเปรียบเทียบกับตัวเอง
บรรทัดที่ 21 :สร้างเงื่อนไง ถ้า ตัวก่อนหน้า x[i] มากกว่า ตัวข้างหลัง x[i+1]
บรรทัดที่ 23 : สร้างตัวแปร temp มาเก็บค่า x[i]
บรรทัดที่ 24 : เอาค่า x[i+1] มาใส่ x[i]
บรรทัดที่ 25 : จากนั้นเอา temp ที่เก็บค่าเดิมของ x[i] มาใส่ที่ x[i+1]
พูดง่ายๆก็คือถ้าอาร์เรย์มันเป็นแถวบล็อกยาวๆ แล้ว x[i] มันมากกว่า x[i+1] ก็ให้สลับค่ากัน ค่าที่มากกว่าจะได้มาอยู่ฝั่งขวาแล้วพอวนลูปรอบต่อไปค่ามากกว่าก็จะดูว่าตัวเองมากกว่าตัวถัดไปหรือเปล่าถ้าใช่ก็สลับอีก สลับจนตัวมากกว่าสุดไปอยู่ขวาสุด
บรรทัดที่ 31 : ให้แสดงผลออกทางหน้าจอ
บรรทัดที่ 31 : ใช้เมท็อด Arrays.toString(int []) เพื่อช่วยพิมพ์ข้อความออกมาเป็นรูปแบบอาร์เรย์สวยๆ
ผลลัพธ์ที่ได้หลังจากสลับกันจนเรียบร้อยแล้ว
รูป 5-10
อาร์เรย์ 2 มิติ
เนื่องจากอาร์เรย์มีลักษณะเป็นแถวๆจึงสามารถสร้างแถวได้มากกว่า 1 กล่าวคือสร้าง 2แถวติดกันก็ได้
วิธีการสร้างอาร์เรย์ 2มิติ ก็เพิ่ม [ ] มาอีก 1 อัน
int a[ ][ ]= new int [5][5];
แบบนี้ก็จะได้ตารางอาร์เรย์แบบ 5x5 ช่อง
Tag ที่น่าสนใจ: java array programming data_structure indexing loop memory_management garbage_collector variable_declaration new_keyword
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM