Upload
ploy-stopdark
View
36
Download
2
Embed Size (px)
Citation preview
ก ลม ท 4
ขอมลชนดอารเรยและสตรง
อา ร เรย (ARRAY)
อารเรย (Array) เปนตวแปรชดใหส าหรบเกบขอมลทมความสมพนธกน โดยจะเกบไวในชอ
เดยวกนสมาชกแตละตวของ Array จะเรยกวา Element หรอ Cell ตวเลขทใชระบต าแหนง
สมาชกของ Array เรยกวา Index หรอ Subscript
ตวอยาง Array X ทม 5 Element ซงจะเรมตนตงแต Index 0 ถง 4
ตวแปรอา ร เรยแบบ 1 ม ต
อารเรยหนงมต มโครงสรางเทยบเทาเมตรกซขนาด nx1 การประกาศตวแปรอารเรย จะใช
เครองหมาย [ ] ลอมคาตวเลขจ านวนเตม เพอบอกจ านวนหนวยขอมลทตองการไดในรป
ชนดของตวแปร ชอตวแปร[จ านวนสมาชกทตองการ]
data_type variable_name [ number-of-elements ]
เชน int a[5]
double x y[10] z[3]
ตวแปรอา ร เรยหลายตว
อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ
อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน
การก าหนดอารเรยหลายมต จะกระท าในรป
ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว
การประกาศอารเรยหลายตวท าไดดงน
int [] abc xyz
abc = new int[500]
xyz = new int[10]
หรอเขยนรวมกนไดดงน
int[] abc = new int[500] xyz = new int[10]
ตวอย า งอา ร เ รยหลาย ม ต
เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน
สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]
ขนาดของอารเรย 3 x 2
จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =
3x2x4 = 24 ไบต
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
อา ร เรย (ARRAY)
อารเรย (Array) เปนตวแปรชดใหส าหรบเกบขอมลทมความสมพนธกน โดยจะเกบไวในชอ
เดยวกนสมาชกแตละตวของ Array จะเรยกวา Element หรอ Cell ตวเลขทใชระบต าแหนง
สมาชกของ Array เรยกวา Index หรอ Subscript
ตวอยาง Array X ทม 5 Element ซงจะเรมตนตงแต Index 0 ถง 4
ตวแปรอา ร เรยแบบ 1 ม ต
อารเรยหนงมต มโครงสรางเทยบเทาเมตรกซขนาด nx1 การประกาศตวแปรอารเรย จะใช
เครองหมาย [ ] ลอมคาตวเลขจ านวนเตม เพอบอกจ านวนหนวยขอมลทตองการไดในรป
ชนดของตวแปร ชอตวแปร[จ านวนสมาชกทตองการ]
data_type variable_name [ number-of-elements ]
เชน int a[5]
double x y[10] z[3]
ตวแปรอา ร เรยหลายตว
อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ
อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน
การก าหนดอารเรยหลายมต จะกระท าในรป
ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว
การประกาศอารเรยหลายตวท าไดดงน
int [] abc xyz
abc = new int[500]
xyz = new int[10]
หรอเขยนรวมกนไดดงน
int[] abc = new int[500] xyz = new int[10]
ตวอย า งอา ร เ รยหลาย ม ต
เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน
สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]
ขนาดของอารเรย 3 x 2
จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =
3x2x4 = 24 ไบต
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวแปรอา ร เรยแบบ 1 ม ต
อารเรยหนงมต มโครงสรางเทยบเทาเมตรกซขนาด nx1 การประกาศตวแปรอารเรย จะใช
เครองหมาย [ ] ลอมคาตวเลขจ านวนเตม เพอบอกจ านวนหนวยขอมลทตองการไดในรป
ชนดของตวแปร ชอตวแปร[จ านวนสมาชกทตองการ]
data_type variable_name [ number-of-elements ]
เชน int a[5]
double x y[10] z[3]
ตวแปรอา ร เรยหลายตว
อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ
อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน
การก าหนดอารเรยหลายมต จะกระท าในรป
ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว
การประกาศอารเรยหลายตวท าไดดงน
int [] abc xyz
abc = new int[500]
xyz = new int[10]
หรอเขยนรวมกนไดดงน
int[] abc = new int[500] xyz = new int[10]
ตวอย า งอา ร เ รยหลาย ม ต
เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน
สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]
ขนาดของอารเรย 3 x 2
จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =
3x2x4 = 24 ไบต
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวแปรอา ร เรยหลายตว
อารเรยหลายมต (Multi-dimensional array) คอ อารเรยทมสมาชกเปนขอมลอารเรย นนคอ ในหนวยขอมลแตละหนวยของ
อารเรย จะเปนอารเรยยอยๆ ซงอาจจะก าหนดซอนลงไปไดหลายชน
การก าหนดอารเรยหลายมต จะกระท าในรป
ชนดตวแปร ชอตวแปร[จ านวนสมาชก][จ านวนสมาชก]hellip ตวแปรอารเรยหลายตว
การประกาศอารเรยหลายตวท าไดดงน
int [] abc xyz
abc = new int[500]
xyz = new int[10]
หรอเขยนรวมกนไดดงน
int[] abc = new int[500] xyz = new int[10]
ตวอย า งอา ร เ รยหลาย ม ต
เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน
สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]
ขนาดของอารเรย 3 x 2
จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =
3x2x4 = 24 ไบต
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า งอา ร เ รยหลาย ม ต
เชน อารเรยทมสมาชกอย 3 ตว และสมาชกแตละตวกเปนอารเรยเกบขอมลชนด int มจ านวน
สมาชก 2 ตว จะก าหนดไดดงน int a[3][2]
ขนาดของอารเรย 3 x 2
จ านวนไบต ทใชในการเกบอารเรยsizeof (a) ค านวณจาก 3 x 2 x sizeof ( int ) =
3x2x4 = 24 ไบต
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า งอา ร เ รยหลาย ม ต
จากการก าหนดดงกลาวจะไดอารเรยทมโครงสรางดงรป
การจดวางภายในหนวยความจ าสามารถแสดงไดดงรป
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การก าหนดคา เ รมตนใหอา ร เ รย 1 ม ต
สามารถประกาศตวแปร Array พรอมกบก าหนดคาเรมตนใหกบสมาชก Array ไดโดยม
รปแบบดงนชนดของตวแปรอารเรย ชออารเรย[จ านวนขอมล] = คาคงทคาคงท hellip
เชน
การก าหนดคาเรมตนใหอารเรย 1 มตType [] var_name = value1value2value3
int []num = 569 String []name =ldquonoomrdquordquobobyrdquordquogoftrdquoInt []unit = 1
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า งโปรแกรม
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การ เ ข าถ งต วแปรอา ร เร ย
เมอมการประกาศอารเรยแลว คาต าแหนงหมายเลขล าดบขอมลส าหรบใชเขาถงตวแปร
ยอยตางๆ ในอารเรย จะถกก าหนดโดยอตโนมต
โดยหากก าหนดอารเรยดวยขนาด n ขอมล หนวยแรก จะมคาต าแหนงล าดบเปน 0 ไป
จนถงขอมลหนวยสดทายจะมคาต าแหนงล าดบเปน n-1
เชน int v[5]
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ถาตองการอานหรอเขยนขอมลในหนวยตางๆ ของตวแปรอารเรย จะตองอางชอตวแปร
ตามดวยคาล าดบของหนวยในกลมขอมลอารเรย ลอมดวยเครองหมาย [ ] ซงเรยกวา
subscript (หรอดชน index)
คาดชน อาจอยในรป คาคงทของตวแปร นพจน หรอฟงกชนทใหคาเปนคาจ านวนเตมก
ได ( positive integer gt=0 )
ของเขตของ index หรอ subscript มคาตงแต 0 ถง n-1 ( n คอขนาดของ
อารเรย)
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ก า ร ใชค า ส ง วน รอบ FOR ในก า ร เ ข า ถ ง ค า ใ นอ า ร เ ร ย
เราสามารถใชค าสง วนรอบ for ในการวนรอบรบคาทป อนเขามาและใชในการ
ค านวณโดยการใชตวแปรในการวนรอบ และใชตวแปรเดยวกน เพอก าหนดล าดบของ
ขอมลทจะใชในอารเรย
int xa[5]
for (x=0 xlt5 x++)
printf(ldquoEnter value for a[d]rdquox)
scanf(ldquodrdquoampa[x])
printf(ldquoShow all valuesnrdquo)
for (x=0 xlt5 x++)
printf(ldquoa[d] = drdquo x a[x])
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า งโปรแกรม
int grades[5]
grades[0] = 98
grades[1] = grades[0] ndash 11
grades[2] = 2 (grades[0] ndash 6)
grades[3] = 79
grades[4] = (grades[2]+grades[3]ndash 3)2
total = ggrraaddeess[[03]]++ ggrraaddeess[[14]]+ grades[2]+
grades[i]
grades[2i]
grades[j-i]
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ถาตองการหาผลรวมของตวแปร grade ทง 5 อลเมนต ท าดงน
total = grades[0] + grades[1] + grades[2] +
grades[3] + grades[4]
เปลยนเปน for loop ไดดงน
total = 0
for ( i = 0 i lt= 4 i++)
total += grades[i]
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การ สงผ านอา ร เรยไปยง ฟงกชน
สามารถแบงไดเปน 2 ลกษณะ
การสงผานคาอลเมนตอารเรยใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ
Call-by-value
การสงอารเรยทกอลเมนตใหกบฟงกชน เปนการเรยกใชฟงกชนแบบ Callby-
reference
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การ เ ร ยกใชแบบ CALL-BY-VALUE
ใชวธการสงคาของตวแปร (value) ใหกบฟงกชน โดยผานพารามเตอร
ไมสามารถแกไขคาของอารกวเมนต(หรอพารามเตอร) ภายในฟงกชนได = การแกไขคาตางๆใน
ฟงกชน ไมมผลตอตวแปรทสงคามา
ใชกบฟงกชนท1048777รบคาเขาเปนตวแปรธรรมดา (int float char)
เชน void triple(int x)
x=x3 printf(ldquox = drdquox) hellip
int x=5 y[2]=1011
triple(x) triple(y[0])
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ก า ร เ ร ย ก ใ ช แ บ บ CAL L - B Y- REF ERENCE
ใชวธการสงคา แอดเดรส (Address) ของตวแปรไปใหฟงกชน
ใชกบฟงกชนทรบคาเขาเปนอารเรย
สามารถแกไขคาของอารกวเมนตภายในฟงกชนได = การแกไขคาตวแปรอารเรย ภายในฟงกชน ม
ผลการเปลยนแปลงตอตวแปรทสงคามา เพราะ การมการจดการคาของหนวยความจ าในต าแหนง
เดยวกน
แอดเดรส (Address) คอ คาทใชอางถงตวขอมลภายในหนวยความจ า เหมอนกบ
หมายเลขบานเลขท
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ฟ งกชน ท มการ รบ คา เขา เ ปนอา ร เรย
ฟงกชนสามารถทจะรบคาเขาเปนอารเรยได ซงรปแบบของการเขยนตนแบบของฟงกชนเปนดงนชนด
ขอมล ชอฟงกชน(ชนดขอมล ชอตวแปร[ขนาดอารเรย])
ในกรณฟงกชนมการรบคาเขาเปนอารเรย 1 มต อาจจะไมตองก าหนดขนาดของอารเรยกได
ตวอยางเชน
int sum_arr(int num[10])
void print_arr(int a[5])
float average(int num[])
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การ ส งผ าน ค า อ ล เ มนตอ า ร เ ร ยให กบ ฟ งกชน
หากฟงกชน my_func มตนแบบของฟงกชนดงน
void my_func(int x)
และใน main ไดมการประกาศตวแปรอารเรยชอวา num
int num[10]
การสงอลเมนตท 0 ของอารเรย num ไปเปนอารกวเมนตของฟงกชน my_func
สามารถเขยนไดดงน
my_func(num[0])
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ต ว อ ย า ง ท 1 ก า ร ส ง ค า แ ต ล ะ อ ล เ ม น ต ใ น อ า ร เ ร ย ใ ห ก บ ฟ ง ก ช น
include ltstdiohgt
void check_val(int x)
int main()
int a[3] = 2-15
check_val(a[0])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตว อ ย า ง ท 2 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ในอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void check_val(int x)
int main()
int ia[3] = 2-15
for(i=0ilt3i++)
check_val(a[i])
return 0
void check_val(int x)
if(x gt= 0)
printf(d Positivenx)
else
printf(d Negativenx)
2 Positive
-1 Negative5 Positive
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตว อ ย า ง ท 3 ก า ร ส ง ค า แ ต ล ะ อ ล เ มนต ใ นอ า ร เ ร ย ใ ห กบฟ ง ก ชน
include ltstdiohgt
void showVal(int val) function prototype
void main()
int nums[5] = 2 18 1 27 16
showVal(nums[0])
void showVal(int val) show a value
printf(Value is dn val)
Value is 2
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ข อ งอ า ร เ ร ย ใ ห กบ ฟ ง ก ชน
การสงอารเรยในกรณน ใชแคชอตวแปรอารเรยเทานน เชน หากใน main มการ
ประกาศอารเรยดงน
int num[10]
และฟงกชน print_arr มตนแบบฟงกชนดงน
void print_arr(int a[10])
การสงอารเรย num ทกอลเมนตไปใหฟงกชน print_arr สามารถเขยนไดดงน
print_arr(num)
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตว อ ย า ง ท 1 ก า ร ส ง อ า ร เ ร ย ท ก อ ล เ มนต ให กบ ฟ ง ก ชน
include ltstdiohgt
void print_arr(int a[4])
int main()
int num[4] = 52-18
print_arr(num)
return 0
void print_arr(int a[4])
int i
for(i =0ilt4i++)
printf(d a[i])
5 2 -1
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
อา ร เรยของออบเจกต
อารเรยสามารถเกบ reference ของ Object ได โดยก าหนดใหอาเรย
เปน Class นน ๆ ในตอนประกาศอาเรย มรปแบบดงน
เชน
Student [] studentList = new Student[10]
className [] arrayName = new className[size]
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
Student [] studentList = new Student[3]
studentList[0] = new Student()
studentList[1] = new Student()
studentList[2] = new Student()
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
อา ร เรยแบบ 2 ม ต
โดยสรป ส าหรบอารเรยสองมต เมออางชออารเรย จะหมายถงต าแหนงเรมตนของอารเรย
ทงหมด (อารเรย 2 มต)
เมออางชออารเรยพรอมสมาชกหนงอนดบ จะหมายถงต าแหนงเรมตนของอารเรยยอยภายใน
(อารเรย 1 มต)
เมออางชออารเรยพรอมคาสองอนดบ จะหมายถง ขอมลภายในอารเรย
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
อา เรย 2 ม ต
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การประกาศตวแปรอา ร เรย 2 ม ต
int val[3][4]
double prices[10][5]
char code[6][4]
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ก า ร ใ ช ค า ส ง F OR ใ น ก า ร เ ข า ถ ง อ า ร เ ร ย 2 ม ต
ใชลป for 2 ชน โดยลปชนนอกวนรอบตามจ านวนแถว สวนลปชนในวนรอบตามจ านวนหลก
ตองมตวนบ 2 ตว คอ ตวนบแถวและตวนบหลก
ตวอยางเชน
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า ง การแสดงคาของอา ร เรย 2 ม ต
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ก า ร ใ ห ค า เ ร ม ต น ( ARRAYINITIAL IZATION )
เราจะใชกลมคาคงททมสมาชกเปนกลมคาคงทยอย ซงเปนชนดเดยว กน
และมขนาดเทากน
รวมถงสอดคลองกบชนดของอารเรยดวย
โดยใชเครองหมาย หรอ ในการแบงแยกแตละแถว
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ต ว อ ย า ง ก า ร ใ ห ค า เ ร ม ตน ( ARRAYINITIAL IZATION )
int val[3][4] = 816 9 52
315 27 6
14 25 2 10
int val[3][4] = 8 16 9 52
3 15 27 6
14 25 2 10
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
หากไมมการก าหนดจ านวนแถว คอมไพเลอรจะก าหนดจ านวนแถวโดย
นบจากทก าหนด
ในคาเรมตน แตจะตองมการก าหนดจ านวนหลกเสมอ เชน
int a[][2] = 589-1
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ในการก าหนดคาเรมตนของอารเรย 2 มต สามารถละเครองหมายปกกาทใชแบงแถวได
โดยใชจ านวนหลกในการจดวาอลเมนตใดอยแถวใด
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
CLASS ARRAYLIST
ในภาษา Java มกลมคลาสทเ รยกวา คอลเลกชน (Collection) ซง ออบเจกตจากคลาสน
สามารถใชสะสมออบเจกตตาง ๆ ไวได เชน Class ArrayList ดกวาArray ทส ามารถเพม
สมาชกได โดยไมตองประกาศไวลวงหนาการใช Class ArrayList จะตอง import
javautilArrayList
ตวอยางการสรางออบเจกต จาก Class ArrayList
ArrayList nameList = new ArrayList()
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
M ETHOD ท ส า คญ ข อ ง ARRAYL IST
add(int indexObject obj) ใชใสออบเจกตลงในอารเรยทต าแหนง index
remove(int index) น าออบเจกตต าแหนง index ออกจากอารเรย
get(int index) คนคาออบเจกตในต าแหนง index
indexof(Object obj) คนคา index ของออบเจกตทร1048777 ะบ
size ส าหรบหาขนาดของ ArrayList
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
STRING
String คอขอความ หรอ สายของอกขระ ในภาษา C++ ไมมตวแปร
ประเภท String แตจะมตวแปรประเภท char ใหใชแทน ซงตวแปร
ประเภทchar จะสามารถเกบอกขระได 1 อกขระ เทานนถาหากเราอยากให
ตวแปร char สามารถเกบขอความไดเรากสามารถ ท าใหตวแปร char เปน
array ได char Name[10]
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ตวอย า ง เ ชน CHAR NAME[10]
ความหมายวา
ตวแปร ชอ Name เปนตวแปรประเภท char สามารถเกบอกขระได 9 ตวอกษรสาเหตทเกบได 9
ตวอกษรกเพราะวา ในกรณทเราใชตวแปร char เปน array เพอเกบขอความCompiler จะเหลอเนอท
ต าแหนงสดทายไวเกบอกขระ นล เพอใหรวาเปนการจบ String
เพราะฉะนนรปแบบการประกาศตวแปร char ทเปน Stringจงเปนแบบน
char ชอตวแปร[จ านวนอกษร+1] ถาเราตองการประกาศตวแปร char ทเปน String ไวเกบขอมล
ชอทมไดมากสด 30 ตวอกษรกให ประกาศดงนchar Name[31] หรอถาเรา จะประกาศตวแปร char ท
เปน String ไวเกบขอมลชอเดอนมไดมากสด 20 ตวอกษร กใหประกาศดงนchar Month[21]
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
การ เป รยบ เ ทยบ STRING
ใชเครองหมาย = =
เปนการเปรยบเทยบวา String 2 ตวเปน Object เดยวกนหรอไม โดยจะเปรยบเทยบคาอางองหรอ
ทอยในหนวยความจ าของตวแปรทงสอง ไมไดเปนการเปรยบเทยบถงขอมลท String ทง 2 ตววาเกบ
ขอมลเดยวกนหรอไม
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
EQUALS() METHOD
เปนการเปรยบเทยบคาใน String Object ทง 2 ตวเปนคาเดยวกนหรอไม โดยทจะใหคาเปน
จรง (True) กตอเมอตวอกษรทกตวใน String ทง 2 คาจะตองเหมอนกนหมด โดยสนใจตวอกษร
พมพเลกและพมพใหญดวย หากตางกนกจะใหคาเปนเทจ (False)
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
COMPARETO METHOD
การเปรยบเทยบความไมเทากนของ String โดยจะใหคาทไดจากการเปรยบเทยบแบงเปน 3
คาคอ
- เปนลบ (-) ถาคาแรกนอยกวาคาทสอง
- เปนบวก (+) ถาคาแรกมากกวาคาทสอง
- เปนศนย (0) ถาคาเทากน
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
คลาส STRINGBUFFER
คลาส StringBuffer จะมลกษณะคลายกบคลาส String เพยงแตเปนตวแปรสตรงทมการแกไขคาแบบถาวร
คอนสตรกเตอรของคลาส StringBuffer ทนาสนใจมดงตอไปน
StringBuffer(String s) เกบสตรง s ไวในตวแปร StringBuffer
StringBuffer() เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาด16 byte เหตทตวแปร
StringBuffer มขนาดปกต 16 และจะเพมขนาดเมอเกบขอความลงไป เปนเพราะถามการเปลยนขอความทเกบภายหลง
ขอความใหมอาจมขนาดไมเทาเดม ดงนนจาวาจงวางไวอก 16 ทวางเพอจะไดไมตองกนทในหนวยความจ าเพมเตมอกใน
กรณทขอความใหมมขนาดใหญกวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงเปนเรองยงยากและอาจ
ท าใหประสทธภาพในการเขาถงลดลง
StringBuffer(int length) เกบขอความวางเปลาไวในตวแปร StringBuffer และมขนาดเทากบ length
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
เ มธอด ท น าสนใจ สวนห น งของคลาสS T R I N G B U F F E R
StringBuffer append(String s)
StringBuffer append(char c)
StringBuffer append(chra[] c int offset int len)
StringBuffer append(booleab b)
StringBuffer append(int i)
StringBuffer append(long l)
StringBuffer append(float f)
StringBuffer append(double d)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท เ พ ม ข อ ค ว า ม ใ น ว ง เ ล บเ ข า ไ ป ต อ ท า ย ข อ ค ว า ม ท ม อ ย แ ล ว ใ น S T R I N G B U F F E R ถ าม ก า ร เ ป ล ย น แ ป ล ง S T R I N G B U F F E R ผ า น เ ม ธ อ ด ข อ ค ว า มจ ะ ถ ก เ ป ล ย น แ บ บ ถ า ว ร
StringBuffer insert(int offset String s)
StringBuffer insert(int offset char c)
StringBuffer insert(int offset char[] c)
StringBuffer insert(int offset boolean b)
StringBuffer insert(int offset int i)
StringBuffer insert(int offset long l)
StringBuffer insert(int offset float f)
StringBuffer insert(int offset double b)
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
เ ม ธ อ ด น เ ป น โ อ เ ว อ ร โ ห ล ด เ ม ธ อ ด ท า ห น า ท แ ท ร ก ข อ ค ว า ม ใ น ว ง เ ล บ เ ข าไ ป ใ น ต า แ ห น ง ท เ ท า ก บ O F F S E T
StringBuffer deleteCharAt(int index) เมธอดนจะท าหนาทลบตวอกษรในต าแหนง index
ออก
StringBuffer delete(int start int end) เมธอดนจะท าหนาทลบตวอกษรจากต าแหนง start ถง
end ออก
StringBuffer revers()เมธอดนจะท าหนาทกลบตวตวอกษรจากหลงมาหนา
char charAt(int index) ลงคาตวอกษรในต าแหนง index กลบ
char setCharAt(int index char ch) เปลยนตวอกษรในต าแหนง index ดวย chtoString()
สงคา
ของขอความออกมาในรปตวแปรสตรง
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
ข อ แ ต ก ต า ง ร ะ ห ว า ง STRINGBU F F ER แ ล ะ STRING
ขอทแตกตางระหวาง StringBuffer และ String คอขนาดของ
StringBuffer ไมจ าเปนตองเทากบขนาดของขอความและสามารถเพม
หรอลดขนาดได เราสามารถตรวจสอบขนาดของ StringBuffer ไดโดย
ใชเมธอด intcapacity() ซงจะคนคาปจจบนของ StringBuffer ดง
ตวอยางตอไป
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
จากโคดขางบนในบรรทดท (1) เราสรางตวแปร s1 โดยไมเกบคาอะไร
เลย ผลทไดคอขนาดของขอความเทากบ 0 แตขนาดของตวมนเองจรงเปน 16
ซงเปนคาปกต ในบรรทดท (2) เราสรางตวแปร s2 โดยใหเกบคา Hello
ผลทไดคอขนาดขอความเปน 5 แตขนาดของตวมนเองเทากบคาปกตบวกดวย
ความยาวของขอความทสงใหมนเกบซงเทากบ 21 นนเอง ในบรรทดท(3) เรา
พยายามสรางตวแปร s3 ซงเปนวธการทใชไมไดกบตวแปร
StringBuffer
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
เหตทตวแปร StringBuffer มขนาดเทากบ 16 และจะเพมขนาดเมอ
เกบขอความลงไป เปนเพราะถามการเปลยนแปลงขอความทเกบภายหลง ขอ
ความหใมอาจมขนาดไมเทาเดม จาวาจงเผอทวางไวอก 16 ทวาง เพอจะไดไม
ตองกนพนทในหนวยความจ าเพมเตมอกในกรณทขอความใหมมขนาดใหญ
กวาเดมไมเกน 16 เพราะการกนทในหนวยความจ าเพมเตมภายหลงท าไดยาก
เนองจากพนทในหนวยความจ าทเพมขนอาจไมอยตดกบพนทเดมท าให
ประสทธภาพในการเขาถงลดลง
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62
สมาชก
1 นาย พรวชญ สวรรณรฐ เลขท 3
2 นาย อมรณฐ ออนนอม เลขท 4
3 นาย เพชร พรหมสทอง เลขท 8
4 นาย ราชสงห ทรงบณทตย เลขท 10
5 นาย องกร ตนประเสรฐ เลขท 11
6 นางสาว ธญญารตน แตนเคราะห เลขท 14
ชนมธยมศกษาปท 62