21

บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

Embed Size (px)

DESCRIPTION

บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง ม.6/2

Citation preview

Page 1: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
Page 2: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

การใช้ตัวแปร array มีรูปแบบดังนี้ ประเภทตัวแปร ช่ือตัวแปร array [ จ านวนสมาชิกของ array]; เช่น int Score[4]; ในที่นี้มีความหมายว่า เป็นการประกาศตัวแปร array ชื่อ Score มีจ านวน 4 รายการ โดยมีรายการที่ Score[0] Score[1] Score[2] Score[3] Score[0] Score[1] Score[2] Score[3] int int int int

รายการของ array จะเริ่มที่ 0 ไม่ได้เริ่มที่ 1 ถ้าเราประกาศตัวแปร array เช่น int i[3] ก็จะมีรายการที่ 0 ถึง 2 จะไม่มีหมายเลข อินเด็กซ์ 3

Page 3: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

การประกาศอาร์เรย์หลายตัวท าได้ดงันี ้int [] abc , xyz; abc = new int[500]; xyz = new int[10]; หรือเขียนรวมกันได้ดังนี ้int[] abc = new int [500], xyz = new int[10];

***ข้อควรระวัง int [] a , b ; a และ b เป็น Array int a[], b ; a เป็น Array b ไม่เป็น Array

Page 4: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

⌂ สามารถก าหนดค่าเริ่มต้นให้กับ array ได้ตั้งแต่ตอนประกาศตัวแปร ⌂ ค่าทีก่ าหนดต้องอยู่ในเครื่องหมาย { } และถ้ามีมากกว่า 1 ค่า ต้องแยกจากกันด้วยเครื่องหมาย , (comma) เช่น int a[5] = {10,20,30,40,50 } ;

A[0] A[1] A[2] A[3] A[4] A

10 20 30 40 50

Page 5: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

⌂ ถ้าในตอนประกาศตัวแปรอาร์เรยไ์ม่ก าหนดค่าเริ่มต้นให้กับมันแลว้ ค่าที่อยู่ในตัวแปรจะเป็นค่าที่ค้างอยู่ในหน่วยความจ าช่วงที่เราจองไว้เป็นอาร์เรย์นั้น ⌂ ถ้าก าหนดค่าเริ่มต้นตั้งแต่ตอนประกาศตัวแปรแต่ ก าหนดไม่ครบ ในกรณีที่เป็นอาร์เรย์แบบตัวเลขทั้งจ านวนเต็มและจ านวนจริง ค่าที่เหลือจะถูกก าหนดเป็น 0 โดยอัตโนมัต ิเช่นfloat price[5] = {50.5,2.25,10.0} ;

price[0] price[1] price[2] price[3] price[4] Price 4 bytes 4 bytes 4 bytes 4 bytes 4 bytes

50.25 2.25 10.0 0.0 0.0

Page 6: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

⌂ บางครั้งถ้าก าหนดคา่เริ่มตน้ให้แก่อาร์เรยเ์ลย เราไม่จ าเป็นต้องใส่ขนาดของอาร์เรย์ก็ได ้ เช่น float a[ ] = {1,2,3,4,5} ; ความหมายคือ เป็นการก าหนดตัวแปรอาร์เรย์ของจ านวนจริงแบบ float ขนาด 5 ช่อง ***เราไม่สามารถประกาศตัวแปรอาร์เรย์โดยไม่ใส่ขนาดของอาร์เรย์ได้ ยกเว้นมีการก าหนดคา่เร่ิมต้นให้กบัมันตั้งแต่แรก

Page 7: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

ล าดับในการเข้าถึงแต่ละ Element ของอาร์เรย์ ล าดับแรกจะเป็น 0 เสมอ ล าดับของ Element ของอาร์เรย์โดยส่วนมากจะเป็นค่าตัวเลขจ านวนเต็ม ตัวอย่างเช่น ใช้อาร์เรย์ scores ในรูปท่ี 8-5 เราจะเข้าถึง Element แรกได้ดังนี ้ scores[0] และถ้าต้องการจะประมวลผล Element ทั้งหมด ก็สามารถใช้ลูปเข้ามาช่วยได้ดังตวัอย่างดา้นล่างนี้ for (i=0;<9;i++) scores[i]…;

Page 8: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

การส่ง Array เข้าไปใน Method จะเป็นการส่งต าแหน่งของ Array ( Reference ) เข้าไปให้กับ Parameter ของ Method

Page 9: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

อาร์เรย์สามารถเก็บ reference ของ Object ได้ โดยก าหนดให้อาเรย์ เป็น Class นั้น ๆ ในตอนประกาศอาเรย ์มีรูปแบบดังนี้ className [] arrayName = new className[size];

เช่น Student [ ] studentList = new Student[10]; Student [ ] studentList = new Student[3]; studentList[0] = new Student(); studentList[1] = new Student(); studentList[2] = new Student();

Page 10: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

• อาร์เรย์ 2 มิติ เป็ นตัวแปรชุดที่มีการจดัการข้อมลู Row (แถว) Column (หลัก) ซึ่งอยู่ในรูปแบบตาราง ที่มีแสดงต าแหน่ง 2 ตัว • อาร์เรย์ 2 มิติ คือ array of array กล่าวคือ array 2 มิติ เป็ น array ของ array 1 มิติ นั่นเอง

Page 11: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

การประกาศตัวแปรอาร์เรย์ 2 มิติ • แบบที่ 1 แบบระบุขนาดไม่ก าหนดค่าเริ่มต้น data_type array_name[row_size][column_size]; • ตัวอย่าง int score[2][10]; char id[2][10]; **สร้างตัวแปรที่มี 2 แถว 10 หลักส าหรับเก็บตัวเลขจ านวนเตม็

Page 12: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

การก าหนดค่าเริ่มต้นให้กับอาร์เรย์ 2 มิติ ตัวอย่างรูปแบบที่ 1 int num[2][3] = {11,12,13,21,22,23}; ตัวอย่างรูปแบบที่ 2 int num[2][3] = {{11,12,13},{21,22,23}}; ตัวอย่างรูปแบบที่ 3 int num[3][3] = {{11,12,13},{21,22,23}};

โดยที่การประกาศตัวแปรทั้ง 3 รูปแบบให้ผลลัพธ์เหมือนกัน คือ Num {0} {1} {2} {0} {1}

11 12 13

21 22 23

Page 13: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

ArrayList เป็นคลาสที่รวบรวมค าส่ังพิเศษที่ช่วยสั่งงานอาร์เรย์ ต่างจาก array ปกติที่จะเป็นการก าหนดขนาดของตวัแปรอาร์เรย์คงที่ แต่ ArrayList จะสามารถแก้ไขขนาดได้ เวลาใส่ข้อมูลเข้าไปก็ไม่ต้องก าหนดขนาดเฉพาะไว้ก่อน ***การเรียกใช้งานต้อง import เข้ามา import java.util.ArrayList; method ที่ใช้ในการจัดการข้อมลู ดังนี้ 1. add(ต าแหน่งอาร์เรย์,ค่าข้อมลูในอาร์เรย์) 2. remove(ต าแหน่งอารเ์รย์) 3. get(ต าแหน่งอาร์เรย์) 4. indexOf(ข้อมูลอาร์เรย์) 5. ชื่ออาร์เรย์.size()

Page 14: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

สตริงเป็นออปเจค (Object) ที่สืบทอดคุณสมบัติมาจากคลาสสตริง (Class String) ถ้าต้องการสร้างออปเจคจากคลาสสตริง ต้องประกาศดังนี้ String str = new String(“Java”); หรือ String str = “Java”; ถ้าเราต้องการให้ str มีค่าว่างต้องประกาศเช่นนี้ String str = null;

การเก็บข้อมูลของสตริงนั้น จะมีการเก็บข้อมูลอยู่ 2 ส่วน ส่วนแรกจะเป็นข้อมูลตัวอักษรโดยเก็บเรียงกันไป แบะส่วนท่ี 2 จะเก็บจุดส้ินสุดของสตริง ซึ่งจุสิ้นสุดของสตริงจะใช้ Null Characterหรือ ‘\0’ซึ่งในรูปท่ี 10-2 แสดงการเก็บข้อมูลสตริงในหน่วยความจ า

Page 15: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

ตัวอย่าง class string2 { public static void main (String[] args) { String one = "Principle "; String two = "programming"; String three = null; three = one + two; System.out.printf("%s%n",three); } } ** ผลลัพธ์ท่ีได้คือPrinciple programming

Page 16: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

โดยใช้ equals( )ซึ่ง เป็น method ตัวนึงทีอ่ยู่ใน String Class โดยจะท าหน้าที่เปรียบเทียบ String 2 ชุดว่ามีสมาชิกหรือข้อความที่เหมือนกนัหรือไม่ มีรูปแบบการใช้งานดังนี ้String1.equals(String2)

Page 17: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

อธิบายโปรแกรม จากโปรแกรมมีการก าหนดตัวแปร s1 และ s2 เป็น String โดยมีข้อความเหมือนกนั จากนั้นก าหนดเงื่อนไขของ if ว่าให้น า String ทั้ง 2 มา เปรียบเทียบกันว่าเหมือนกันหรือไม ่โดยใช้เงือ่นไข s1.equals(s2) ถ้ามีข้อความเหมอืนกันจริงก็จะ พิมพ์ข้อความ "s1 equals s2" แต่ถ้าข้อความไมเ่หมอืนกันก็จะพิมพ์ข้อความ "s1 not equals s2" ออกมาแทน ให้เราทดสอบ โดยการไปเปล่ียนข้อความในตัวแปร s1 หรือ s2 ก็ได้แค่เปลี่ยนตัวอักษรตัวเล็กเป็นตัวใหญ่ก็ถอืว่าข้อความไม่เหมอืนกัน

Page 18: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

1.คลาสสตริงบัฟเฟอร ์ เป็น class หน่ึงที่ท างานกับ String แต่มีความยืดหยุน่และใชง้านได้หลากหลายกว่า String Class ทั้งนี้ StringBuffer Class จะมี Constructor ให้เลือกใช้ได้ 3 Constructor ได้แก่ - StringBuffer() ใช้ในการสร้าง StringBuffer ที่ไม่มีข้อมูลใดๆ และมีความยาวสูงสุด 16 ตัวอักษร

Page 19: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

- StringBuffer(int length) ใช้ในการสร้าง StringBuffer ที่ไม่มีข้อมูลใดๆ แต่ความยาวจะขึ้นอยู่กับค่าของ length ที่ส่งมาให ้- StringBuffer(String str) ใช้ในการสร้าง StringBuffer ที่มีข้อมูลตาม Argument “str” ที่ส่งมา โดยความยาวก็จะขึ้นอยูก่ับความยาวของ str เท่านั้น

2.คลาสสตริงบิลเดอร์ มคีุณสมบัติคล้ายๆกับ StringBuffer แต่ต่างกันตรงที่ StringBuilder ไม่เป็น Thread Save จึงท าให้ท างานได้เร็วกวา่ StringBuffer การเรียกใช้งาน ก็เรียกใช้งานได้เหมอืนกัน

Page 21: บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง

ผู้จัดท า

1. นายภาวัต กระต่าย เลขที่ 7 2. นายธนภัทร เหลืองรัตน์วัฒนะ เลขที่ 10 3. นายภควัต ภควิกรัย เลขที่ 12 4. นางสาวณัฐวดี สายศรีนิล เลขที่ 16 5. นางสาวนภามาศ เชียงทอง เลขที่ 17 6. นางสาวกมลชนก เปรมกิจ เลขที่ 20 7. นางสาวพลอยภัทรชา เยี่ยมสวัสดิ์ เลขที่ 36

ม. 6/2