22
ข้อมูลชนิดอาร์เรย์และสตริง

Presentation1

Embed Size (px)

Citation preview

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

สมาชิก

1. นาย พีรวิชญ์ สวุรรณรัฐ เลขที่ 32. นาย อมรณฐั ออ่นน้อม เลขที่ 43. นาย เพชร พรหมสีทอง เลขที่ 84. นาย ราชสิงห์ ทรงบณัทิตย์ เลขที่ 105. นาย องักรู ตนัประเสริฐ เลขที่ 116. นางสาว ธญัญารัตน์ แต้นเุคราะห์ เลขท่ี 14

ชัน้มธัยมศกึษาปีท่ี 6/2

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

• array คือกลุม่ของข้อมลูท่ีเรียงล าดบักนั มีจ านวนแน่นอนซึง่ข้อมลูจะเป็นประเภทเดียวกนั ข้อมลูแตล่ะตวัของอาร์เรย์ จะเรียกว่า อีลีเมนต์(Element) และข้อมลูแตล่ะอีลีเมนต์จะมีหมายเลขเพ่ือใช้ในการอ้างอิงถึงเรียกตวัเลขนี ้วา่ เลขดชันี (Index) จะเป็นตวัแปรท่ีช่ือ เหมือนกนั แตจ่ะแตกตา่งกนัตรงหมายเลข

ตวัแปร ARRAY 1 มิติ

การใช้ตวัแปร array มีรูปแบบดงันี ้

ประเภทตวัแปร ช่ือตวัแปรarray[จ านวนสมาชิกของ array];

ตวัแปร ARRAY 1 มิติ เช่น 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

ตวัแปรอาร์เรยห์ลายตวั

การประกาศอาร์เรย์หลายตวัท าได้ดงันี ้

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

การก าหนดค่าเร่ิมตน้ใหก้บัอาร์เรย ์1 มิติ

สามารถก าหนดคา่เร่ิมต้นให้กบั array ได้ตัง้แตต่อนประกาศตวัแปร คา่ท่ีก าหนดต้องอยูใ่นเคร่ืองหมาย { } และถ้ามีมากกวา่ 1 คา่ ต้องแยกจากกนัด้วยเคร่ืองหมาย ,(comma)

เช่น int a[5] = {10,20,30,40,50 } ;

การกาหนดค่าเร่ิมตน้ใหก้บัอาร์เรย ์1 มิติ • ถ้าในตอนประกาศตวัแปรอาร์เรย์ไมก่ าหนดคา่เร่ิมต้นให้กบัมนัแล้ว คา่ท่ีอยูใ่น ตวัแปรจะเป็นคา่ท่ีค้างอยูใ่นหนว่ยความจ าช่วงท่ีเราจองไว้เป็นอาร์เรย์นัน้

• ถ้าก าหนดคา่เร่ิมต้นตัง้แตต่อนประกาศตวัแปรแตก่ าหนดไมค่รบ ในกรณีท่ี เป็นอาร์เรย์แบบตวัเลขทัง้จานวนเตม็และจ านวนจริง คา่ท่ีเหลือจะถกูก าหนดเป็น 0 โดยอตัโนมตัิ

• เชน่ float price[5] = {50.5,2.25,10.0} ;

การกาหนดค่าเร่ิมตน้ใหก้บัอาร์เรย ์1 มิติ

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

ความหมายคือ เป็นการก าหนดตวัแปรอาร์เรย์ของจ านวนจริงแบบ float ขนาด 5 ช่อง

***เราไม่สามารถประกาศตวัแปรอาร์เรย์โดยไม่ใสข่นาดของอาร์เรย์ได้ ยกเว้นมีการกาหนดคา่เร่ิมต้นให้กบัมนัตัง้แตแ่รก

การประมวลผลอาร์เรย Element ของอาร์เรย์ ล าดบัแรกจะเป็น 0 เสมอ ล าดบัของ Element ของอาร์เรย์โดยสว่นมากจะเป็นคา่ตวัเลขจานวนเตม็ ตวัอยา่งเช่น ใช้อาร์เรย์ scores เราจะเข้าถึง Element แรกได้ดงันี ้

scores[0]

และถ้าต้องการจะประมวลผล Element ทัง้หมด ก็สามารถใช้ลปูเข้ามาช่วยได้ดงัตวัอยา่งด้านลา่งนี ้

for (i=0;<9;i++)

scores[i]…;

อาร์เรยก์บัการผา่นค่า • การสง่ Array เข้าไปใน Method จะเป็นการสง่ต าแหน่งของ Array (

Reference ) เข้าไปให้กบั Parameter ของ Method

อาร์เรยข์องออบเจก็ต อาร์เรย์สามารถเก็บ 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();

อาร์เรย ์2 มิติ • อาร์เรย์ 2 มิติ เป็นตวัแปรชดุที่มีการจดัการข้อมลู Row (แถว) , Column

(หลกั) ซึง่อยูใ่นรูปแบบตาราง ที่มีแสดงตาแหน่ง 2 ตวั

• อาร์เรย์ 2 มิติ คือ array of array กลา่วคือ array 2 มิติ เป็น array ของ array 1 มิติ นัน่เอง

การประกาศตวัแปรอาร์เรย ์2 มิติ

• แบบที่ 1 แบบระบขุนาดไม่ก าหนดคา่เร่ิมต้นdata_type

array_name[row_size][column_size];

• “ ตวัอย่างint score[2][10];char id[2][10];

**สร้างตวัแปรที่มี 2 แถว 10 หลกัส าหรับเก็บตวัเลขจ านวนเตม็

การก าหนดค่าเร่ิมตน้ใหก้บัอาร์เรย ์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 รูปแบบให้ผลลพัธ์เหมือนกนั คือ

**ข้อสังเกต ** อาร์เรย์ขนาด 2 มิตขิึน้ไป จะไม่ระบุขนาดได้เฉพาะมิตทิี่ 1 เท่าน้ัน ส่วนมิตอิืน่ๆ ต้องมีการระบุขนาดด้วยทุกคร้ัง

คลาส ARRAYLISTArrayList เป็นคลาสท่ีรวบรวมค าสัง่พิเศษท่ีช่วยสัง่งานอาร์เรย ์ต่างจาก array ปกติท่ีจะเป็นการก าหนดขนาดของตวัแปรอาร์เรยค์งท่ี แต่ ArrayList จะสามารแกไ้ขขนาดได ้เวลาใส่ขอ้มูลเขา้ไปกไ็ม่ตอ้งก าหนดขนาดเฉพาะไวก่้อน

***การเรียกใชง้านตอ้ง import เขา้มา

import java.util.ArrayList;

method ท่ีใชใ้นการจดัการขอ้มูล ดงัน้ี

1. add(ต าแหน่งอาร์เรย,์ค่าขอ้มุลในอาร์เรย)์

2. remove(ต าแหน่งอาร์เรย)์

3. get(ต าแหน่งอาร์เรย)์

4. indexOf(ขอ้มูลอาร์เรย)์

5. ช่ืออาร์เรย.์size()

สตริง(STRING)

สตริงเป็นออปเจค (Object) ท่ีสืบทอดคณุสมบตัิมาจากคลาสสตริง (Class String) ถ้าต้องการสร้างออปเจคจากคลาสสตริง ต้องประกาศดงันี ้

String str = new String(‚Java‛);

หรือ String str = ‚Java‛;

ถ้าเราต้องการให้ str มีคา่วา่งต้องประกาศเช่นนี ้String str = null;

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

สตริง(STRING) ตวัอยา่ง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

การเปรียบเทียบ STRING

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

อธิบายโปรแกรม

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

คลาสสตริงบฟัเฟอร์และสตริงบิลเตอร์ 1.คลาสสตริงบฟัเฟอร์

เป็น class หนึง่ท่ีท างานกบั String แตมี่ความยืดหยุน่และใช้งานได้หลากหลายกวา่ String Class ทัง้นี ้StringBuffer Class จะมี Constructor ให้เลือกใช้ได้ 3 Constructor ได้แก่

- StringBuffer() ใช้ในการสร้าง StringBuffer ท่ีไมมี่ข้อมลูใดๆ และมีความยาวสงูสดุ 16ตวัอกัษร

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

- StringBuffer(String str) ใช้ในการสร้าง StringBuffer ท่ีมีข้อมลูตาม Argument ‚str‛ ท่ีสง่มา โดยความยาวก็จะขึน้อยูก่บัความยาวของ str เทา่นัน้

คลาสสตริงบฟัเฟอร์และสตริงบิลเตอร์ (ต่อ)

2.คลาสสตริงบิลเดอร์

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