![Page 1: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/1.jpg)
Lec05_1 :: สายอกัขระ String , String Builder and String Buffer
การเขยีนโปรแกรมจาวา (4121309)
โดย อ. นัฐพงศ ์ สง่เนยีม
http://www.siam2dev.net
![Page 2: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/2.jpg)
Reviews
Variable
Identifier ชือ่
Scope ระดบัของตวัแปร
Data Type
Casting
Control Statement ค าสัง่ควบคมุการท างาน
Decision
Loop
![Page 3: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/3.jpg)
Variables : ตวัแปร• การประกาศตวัแปร
– Type Var-name; ตวัอย่าง int x;
– Type Var-name; ตวัอย่าง int x = 10;
– Type Var-name; ตวัอย่าง float pi =3.14f;
• การก าหนดคา่ (assign value = )
– X = 80;
– Name = “Dr. Nattapong Songneam”;
– ch=‘A’; // char ’..’
• ระดบัการใช้งาน
• ชนิดข้อมลู
• การแปลงชนิด (Casting)
– Implicit แปลงโดยปริยาย โดยจาวา
– Explicit
![Page 4: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/4.jpg)
Test_Var
• D:\Java_Prog
![Page 5: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/5.jpg)
โครงสร้าง code ท่ีไม่มี comment
ช่ือคลาส
ช่ือแพก็เกจ
ส่วนโปรแกรมหลกั
วงเลบ็ปิดของคลาส
![Page 6: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/6.jpg)
การประกาศตวัแปรในบริเวณใด (Scope)
• Global
• Local
– Class
– Method
– Block
ตัวแปร y เป็นระดบัโกลบอล global
ตัวแปร x เป็นระดบัโลคอล local
![Page 7: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/7.jpg)
Test_Var
y : int
+ Main()
x:int
![Page 8: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/8.jpg)
ตัวแปร x เป็นระดบัโลคอล local
![Page 9: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/9.jpg)
ตัวแปร x เป็นระดบัโลคอล local
ก. 8ข. 10ค. 12ง. 13จ. ไม่มีขอ้ใดถูก
![Page 10: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/10.jpg)
ประเภทขอ้ผิดพลาด
• Syntax Error
• Runtime Error
• Logical Error
![Page 11: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/11.jpg)
Syntax Error / Logical Error
• ใน main จะยงัไม่สามารถเรยีกใชง้าน add() ถา้ยงัไม่ก าหนดใหเ้ป็น static
• ดงันัน้ เมธอดทีจ่ะสามารถเรยีกใชง้านใน main ไดเ้ฉพาะ static method เทา่นัน้
• ดงันัน้ท าให ้add เป็น static กอ่น
![Page 12: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/12.jpg)
![Page 13: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/13.jpg)
ตวัแปร i เป็นตวัแปรระดบั Block
![Page 14: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/14.jpg)
Test_Var
y : int
+ Main()
x:int
![Page 15: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/15.jpg)
String , StringBuilder และ StringBuffer
• ชนิดข้อมูลพื้นฐานที่เป็นตัวอักษร char สารมารถน าเสนอตัวอักษรได้เพียงตัวเดียว ซึ่งไม่เพียงพอต่อการน าไปใช้งานทั่วไปได้ โปรแกรมส่วนใหญ่จึงต้องการน าเสนอข้อมูลที่เป็นค าหรือประโยค ก็คือสามารถน าตัวอักษรมาเรียงต่อกันเป็นสาย คล้ายกับสายอักษร แต่ นอกจากเก็บตัวอักษรได้แล้ว ยังสามารถเก็บตัวเลข และสัญลักษณ์อื่นได้ อีกด้วย จึงเรียกรวมกันว่าสายอักขระ ภาษาจาวามีชนิดข้อมูลที่เป็นสายอักขระได้ ซึ่งก็คือชนิดข้อมูล String , StringBuilder และ StringBuffer นั่นเอง
![Page 16: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/16.jpg)
สายอักขระ
จากโปรแกรม HelloWorld!
จะเห็นว่า ค าที่พิมพ์ออกมานั้นประกอบไปด้วย H,e,l,l,o,... เรียงต่อกัน เราจึงเรียกว่า สายอักขระ (String)
public class hello_world {public static void main(String args[]) {System.out.println(“Hello World!”);
}}
![Page 17: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/17.jpg)
คลาสสตริง (String class)
• เนื่องจากสายอักขระมีประโยชน์มากมาย ภาษาจาวาจึงมีชนิดข้อมูลที่น าเสนอสายอักขระได้ แต่ชนิดข้อมูลที่น าเสนอสายอักขระนี้ไม่จัดเป็นข้อมูลชนิดพื้นฐาน แถมยังมีลักษณะพิเศษเพิ่มเติมเข้ามา เราจึงใช้ค าว่า คลาส (class) แทนค าว่าชนิดข้อมูล (data type)
![Page 18: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/18.jpg)
Java String• สายอกัษร (String) ในภาษาจาวา
▪ ไม่ใช่เป็นเพยีงเน้ือที่ในหน่วยความจ าที่จองไว้ส าหรับประเภทข้อมูล แต่เป็นวตัถุ (Object)
• ตัวแปร String ในภาษาจาวา▪ เกบ็ค่าอ้างองิของ String Object▪ เม่ือมีการอ้างองิค่าไปยงั String Object แล้ว จะไม่สามารถเปลีย่นแปลงค่าใน String Object ได้โดยตรง แต่สามารถให้ค่าอ้างองิใหม่ได้
String message = new String("Hello");
String message = "Hello";
หรือ
![Page 19: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/19.jpg)
• การประกาศตัวแปร String ในภาษาจาวา
String Declaration (1)
1 String empty = new String("");2 String message = "Hello";3 String repeat = message;
""
xxx
yyy
zzz
aaa
bbbString
""
empty
stored at xxxstored at aaa
After
Line 1
aaaString
""stored at aaa
Conceptual View Memory Address View
![Page 20: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/20.jpg)
![Page 21: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/21.jpg)
![Page 22: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/22.jpg)
String Declaration (2)
1 String empty = new String("");2 String message = "Hello";3 String repeat = message;
" Hello"
message
stored at yyybbb
String
”Hello"stored at bbb
stored at bbb
""
xxx
yyy
zzz
aaa
bbb
String
""
empty
stored at xxxstored at aaa
After
Line 2aaa
String
""stored at aaa
Conceptual ViewMemory Address
View
String
”Hello"
""
xxx
yyy
zzz
aaa
bbbString
""
empty
stored at xxxstored at aaa
After
Line 1
aaaString
""stored at aaa
Conceptual View Memory Address View
• การประกาศตัวแปร String ในภาษาจาวา
![Page 23: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/23.jpg)
String Declaration (3)
1 String empty = new String("");2 String message = "Hello";3 String repeat = message;
Repeat
stored at zzz
" Hello"message
stored at yyybbb
String
”Hello"stored at bbb
stored at bbb
""
xxx
yyy
zzz
aaa
bbb
String
""
empty
stored at xxxstored at aaa
After
Line 3aaa
String
""stored at aaa
Conceptual ViewMemory Address
View
String
”Hello" bbb
" Hello"
message
stored at yyybbb
String
”Hello"stored at bbb
stored at bbb
""
xxx
yyy
zzz
aaa
bbb
String
""
empty
stored at xxxstored at aaa
After
Line 2aaa
String
""stored at aaa
Conceptual ViewMemory Address
View
String
”Hello"
• การประกาศตัวแปร String ในภาษาจาวา
![Page 24: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/24.jpg)
The “String” Class• String Classค่าใน String Object ไม่สามารถเปลีย่นแปลงได้ แต่สามารถ
ให้ค่าอ้างองิจากตวัแปร String ใหม่ ได้• Methods ของ String Class
Create New Stringconcat, replace, subString, toLowerCase, toUpperCase
Searchendswith, startswith, indexOf, lastIndexOf
Comparisonequals, equalsIgnoreCase, CompareTo
otherscharAt, length
![Page 25: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/25.jpg)
String Comparison• การเปรียบเทียบ String ในภาษาจาวา
เปรียบเทยีบค่าใน String Object ว่าเท่ากนัหรือไม่ใช้เมทธอด boolean equals(String s)
เปรียบเทียบว่าตัวแปร String อ้างองิถึง String Object เดียวกนัหรือไม่
ใช้โอเปอร์เรเตอร์ (Operator) “==”เปรียบเทียบค่าใน String Object เรียงตามล าดับตัวอกัษร
ใช้เมทธอด int compareTo(String s)return ค่า 0 เม่ือเป็นค่าเดียวกนั, ค่าจ านวนเต็มบวกเม่ือ String
Object นีม้ากกว่า s และ ค่าจ านวนเต็มลบ เม่ือ String Object นี้น้อยกว่า s
![Page 26: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/26.jpg)
String greeting = new String("Hello" );String message = "Hello";if (greeting.equals(message)) { System.out.println("equal content!"); }else { System.out.println("content NOT equal!"); }
Comparing String Contents
• ตัวอย่าง
"Hello"
message
stored at yyybbb
String
"Hello"stored at bbb
stored at bbb
"Hello"
xxx
yyy
zzz
aaa
bbb
String
"Hello"
greeting
stored at xxxstored at aaa
aaa
String
"Hello"
stored at aaa
Conceptual ViewMemory Address
View
String
"Hello"
![Page 27: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/27.jpg)
![Page 28: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/28.jpg)
.equals()
![Page 29: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/29.jpg)
![Page 30: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/30.jpg)
![Page 31: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/31.jpg)
String greeting = new String("Hello" );String message = "HEllo";if (greeting.equals(message)) { System.out.println("equal content!"); }else { System.out.println("content NOT equal!"); }
![Page 32: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/32.jpg)
Comparing String Reference
String greeting = new String("Hello" );String message = "Hello";if (greeting == message) { System.out.println("equal reference!"); }else { System.out.println(”reference NOT equal!"); }
"Hello"
message
stored at yyybbb
String
"Hello"stored at bbb
stored at bbb
"Hello"
xxx
yyy
zzz
aaa
bbb
String
"Hello"
greeting
stored at xxxstored at aaa
aaa
String
"Hello"
stored at aaa
Conceptual ViewMemory Address
View
String
"Hello"
• ตัวอย่าง
![Page 33: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/33.jpg)
Comparing String Lexicographical Order
String greeting = new String("Hello" );String message = ”World";System.out.println(greeting.compareTo(message));
• การเปรียบเทยีบค่า String ตามล าดับตัวอกัษรใช้เมทธอดint compareTo(String s)return ค่า 0 เม่ือเป็นค่าเดียวกนัreturn ค่าจ านวนเต็มบวกเม่ือ String Object นีม้ากกว่า s return ค่าจ านวนเต็มลบ เม่ือ String Object นีน้้อยกว่า s
![Page 34: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/34.jpg)
String Concatenation
String greetings = new String("Hello”);int ThisYear = 2001;String name = " World " + 2001;String message = greetings + name;
• การน า String มาเช่ือมต่อกนัใช้โอเปอร์เรเตอร์ Concatenate (+) แต่ไม่สามารถเปรียบเทียบ String โดยใช้โอเปอร์เรเตอร์แบบ
Relational (>, <, >=, <=) และโอเปอร์เรเตอร์แบบ Equality ( ==, !=) ได้
• หมายเหตุใช้โอเปอร์เตอร์ (+) กบั String ได้เม่ือมีพจน์ใดพจน์หน่ึงเป็น String
![Page 35: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/35.jpg)
String
• วัตถุ String สามารถน าเสนอข้อมูลที่เป็นสายอักขระได้ การใช้งานสตริงมีขั้นตอนดังต่อไปนี้
1. การประกาศตัวแปร โดยเขียน ค าว่า String แล้วตามด้วยชื่อตัวแปรString name;
2. การก าหนดค่า ให้กับตัวแปร name ให้ใช้เครื่องหมาย = และสร้างวัตถุ String ด้วยค าสั่ง new
name = new String(“Nattapong Songneam”)
3. แสดงผลด้วยค าสั่ง System.out.println(name);
![Page 36: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/36.jpg)
การส่ังงาน String
• วัตถุ String ไม่เพียงแค่ใช้เก็บบันทกึสายอักขระและแสดงผลออกมาเท่านั้น แต่ยังมีความสามารถพิเศษ อื่นอีกดังนี้
1. การนับความยาวของสายอักขระ จะใช้ lenght()name.lenght();
2. แสดงตัวอักษรในต าแหน่งที่ก าหนด จะใช้ charAt()name.charAt(1);
3. แสดงต าแหน่งของสายอักขระในสตริง จะใช้ indexof()name.indexof(“a”);
3. หาสตริงในช่วงที่ก าหนด จะใช้ substring()name.substring(1,3);
![Page 37: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/37.jpg)
จงเขียนค าสัง่ เพ่ือหาวา่ ....ก มีในช่ือ นศ. หรือไม่ ถา้มี อยูล่ าดบัท่ีเท่าไร
• .....................................................................................................................................................................................................................................................................................................................
*** ไม่นับช่องว่าง
![Page 38: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/38.jpg)
จงเขียนโปรแกรม ค าสัง่ ตวัอกัษรท่ี 4 ของช่ือ นศ.
• .................................
![Page 39: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/39.jpg)
การสัง่งาน String
public class TestString01 {
public static void main(String args[]) {
String Name =“Nattapong Songneam”;
System.out.println(name.lenght());
System.out.println(name.charAt(3));
System.out.println(name.indexof(“S”));
System.out.println(name. substring(1,9));
}
}
![Page 40: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/40.jpg)
การเปรียบเทียบ String
public class TestString02 {
public static void main(String args[]) {
String Name1 =“Nattapong Songneam”;
String Name2 =“Supaporn Jarnsuk”;
if(Name1 == Name2) {
System.out.println(“name is as once”);
} else {
System.out.println(“name is as once”);
}
}
}
![Page 41: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/41.jpg)
การเปรียบเทียบ String
public class TestString01 {
public static void main(String args[]) {
String Name1 =“Nattapong Songneam”;
String Name2 =“Supaporn Jarnsuk”;
if(Name1.equal(Name2)) {
System.out.println(“name is as once”);
} else {
System.out.println(“name is as once”);
}
}
}
![Page 42: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/42.jpg)
การประยกุตใ์ชง้าน String กบัการเขา้รหสัขอ้มูล
![Page 43: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/43.jpg)
package encrypt;/*** @author Nattapong Songneam* http://www.siam2dev.com* [email protected] */public class Main {
public static void main(String[] args) {String KEY = new String("zxcvbnmasdfghjklqwertyuiop");char KeyTable[][]= new char[26][2];
for(int i=0;i<26;i++) {KeyTable[i][0] =(char)('a' + i); KeyTable[i][1] = (KEY.charAt(i));
}String PlainText = "Nattapong Songneam";String CipherText="";int Len = PlainText.length();for(int k=0;k<Len;k++) {
for(int i=0;i<26;i++) {char a = KeyTable[i][0];char b = PlainText.charAt(k);if(a==b) {
CipherText +=Character.toString(KeyTable[i][1]);}}
}System.out.println(CipherText); }
}
![Page 44: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/44.jpg)
คลาส Math
• ชนิดข้อมูลพื้นฐานที่เปน็ตัวเลข เชน่ int หรือ double นั้น สามารถน ามาค านวณได้ ภาษาจาวามีค าสั่งส าหรบัการค านวณงา่ย ๆ เช่น การบวก ลบ คูณ หาร ซึ่งส าหรับการค านวณที่ซับซ้อนขึ้น เช่น การค านวณ ตรีโกณมิติ ลอกการิทึม นั้น ภาษาจาวา ก็ท าได้เช่นกันโดย ภาษาจาวาได้ จัดเตรียมคลาส Math ไว้ช่วยในการค านวณให้เรยีบร้อยแล้วดังนี้
![Page 45: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/45.jpg)
เมธอดต่าง ๆ ใน คลาส Math
sqrt() cbrt() pow() abs() ceil() floor() round() min() max()
![Page 46: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/46.jpg)
โปรแกรมค านวณค่า พ.ท. วงกลม
public class TestMath01 {
public static void main(String args[]) {
double r = 10.0d; // r = radius
double circleArea= Math.PI*r*r
System.out.println(circleArea)
}
}
![Page 47: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/47.jpg)
โปรแกรมค านวณค่า พ.ท. วงกลม แบบท่ี 2
public class TestString01 {
public static void main(String args[]) {
double r = 10.0d; // r = radius
double circleArea= Math.pi*Math.pow(r,2);
System.out.println(circleArea)
}
}
![Page 48: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/48.jpg)
แบบฝึกหดั 5.1 จงเขียนโปรแกรมเพ่ือหาค่า
![Page 49: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/49.jpg)
โปรแกรมค านวณค่า เสน้รอบ วงกลม
public class TestString01 {
public static void main(String args[]) {
double r = 10.0d; // r = radius
double circular = 2*Math.pi*r;
System.out.println(circular)
}
}
![Page 50: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/50.jpg)
public static void main(String[] args) {// TODO code application logic hereint x=2;long y= (long)(2*Math.pow(x,8) + 5*Math.pow(x,6)
+ 3*Math.pow(x,3) + 2*x + 7);System.out.println(y);
}
![Page 51: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/51.jpg)
โปรแกรมค านวณค่า โปรแกรมสุ่มตัวเลข 1-100
public class TestMath03 {public static void main(String args[]) {
for(int i=1;i<100;i++) {int k = (int)(Math.random()*100);System.out.println(k);
}}}
![Page 52: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/52.jpg)
การรับขอ้มูลจากผูใ้ชง้าน ทางคียบ์อร์ด
java.util.Scanner sc;
sc = new java.util.Scanner(System.in);
int y = sc.nextInt(); // รับข้อมูลที่เป็น ตัวเลขจ ำนวนเตม็ int
double y = sc.nextDouble(); // รับข้อมูลที่เป็น ตัวเลขทศนิยม double
String y = sc.next() // รับข้อมูลที่เป็นข้อควำม String
![Page 53: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/53.jpg)
Exercise 5_1
• จงเขียนโปรแกรม รับ ค่า ความกว้าง , ความสูง จาก คีย์บอร์ดแล้ว ค านวณ ค่า พ.ท. สี่เหลี่ยมผืนผ้า
• จงเขียนโปรแกรม รับ ค่า ความกว้าง , ฐาน จาก คีย์บอร์ดแล้ว ค านวณ ค่า พ.ท. สามเหลี่ยม
• จงเขียนโปรแกรม ค านวณ ค่า พ.ท. สี่เหลี่ยมคางหมู โดย รับ ข้อมูลต่าง ๆ จากคีย์บอร์ด
![Page 54: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/54.jpg)
คลาสในกลุ่ม Format
import java.text.DecimalFormat;
double d = sc.nextDouble();DecimalFormat cF = new DecimalFormat("0.00");
System.out.println(cF.format(d));
DecimalFormat cF = new DecimalFormat(“#,###.00");
System.out.println(cF.format(d));
แทรกค าสั่ง ก่อนpublic class Main {
![Page 55: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/55.jpg)
Java Programming
[Class library]By
Nattapong Songneam
http://www.siam2dev.com
![Page 56: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/56.jpg)
Java Class library• java เป็นภาษาขนาดเลก็ เพราะมีเพียงกลไกพืน้ฐานส าหรับการโปรแกรมทัว่ไปและท่ีเก่ียวกบัการโปรแกรมเชิงวตัถเุท่านัน้ แตไ่ด้กลไกเฉพาะอยา่งถกูสร้างขึน้เป็นคลาสเก็บไว้ใน standard libraryของภาษา คือไฟล์ classes.zip ท่ีมากบั jdk ซึง่คลาสจ านวนมากจะเก็บไว้ใน package มาตรฐานของภาษา มีช่ือวา่ java ซึง่จะถกูแบง่เป็น sub-package ยอ่ย ๆ ลงไปส าหรับแตล่ะงาน เช่น java.io. เป็นท่ีเก็บคลาสเก่ียวกบั stream เป็นต้น
![Page 57: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/57.jpg)
java.lang• มีคลาสท่ีส าคญั ๆ เช่น
String,math,System,Object,Runtime,Process,Class,Compiler,SecurityManager– คลาส String มี constructors หลายตวัดงันี ้
• public String();
• public String(String value);
• public String(char[] value);
• public String(char[] value,int offset,int count);• public String(StringBuffer buffer);
![Page 58: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/58.jpg)
//string
class StringDef {
public static void main(String args[]) {
String a = new String(“sawatdee”);
String b = new String();
String c = “sawatdee”;
char d[] = {‘s’,’a’,’w’,’a’,’t’,’d’,’e’,’e’};
String e = new String(d);
String f = new String(d,0,4);
byte g[] = {‘s’,’a’,’w’,’a’,’t’,’d’,’e’,’e’};
String h = new String(g);
}
}*คลาส string ยงัม ีmethod ทีจ่ าเป็นส าหรับใช้งานมากมาย เช่น length(),charAt(),substring(), trim(),valueOf()
![Page 59: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/59.jpg)
java.util.*• ประกอบด้วยคลาสที่ส าคัญ ๆ ดังนี้
– Enumeration /เก็บกลุ่มข้อมูล เรียกมาดูทีละตัว– Vector / เก็บกลุ่มข้อมูลที่ไม่ทราบล่วงหน้าว่ามีจ านวนเท่าใด– Stack / ใช้เป็น polymorphism คือ สมาชิกใน stack อาจเป็น instance
ของคลาสใดก็ได้– BitSet / สร้าง bit vector คือ vector ขนาดไม่จ ากัด แต่สมาชิกเป็น 1 bit
เก็บค่า boolean– Dictionary / ส าหรับสร้างคลาสเพื่อเป็นแหล่งเก็บข้อมูลของคู่ล าดับ ใน
ลักษณะ <key, value>– Hashtable /ขยายจาก dictionary โดยใช้ hash code ของ key เป็น
index และ value อาจเป็น instance ของคลาสใด ๆ– Properties / ขยายจาก hashtable เพ่ือเป็นแหล่งเก็บข้อมูลคู่ล าดับของ
string กับ string
![Page 60: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/60.jpg)
•StringTokenizer / ส าหรับตัด string หนึ่งออกเป็นล าดับของ tokens
•Date / เก็บข้อมูลเกี่ยวกับ เวลา และวันที่
•Random / คลาสมีฟังก์ชันส าหรับสร้างล าดับของเลข random
•java.util.zip Package
•GZIPOutputStream /filter stream ส าหรับบีบอัดข้อมูล
•GZIPInputStream / filter stream ส าหรับขยายข้อมูล
•ZipOutputStream /filter stream ส าหรับบีบอัดข้อมูลเพื่อส่งออก
output stream ที่น ามาต่อไว้
•ZipInputStream / filter stream ส าหรับขยายข้อมูลเพ่ือส่งเข้า
input stream ที่น ามาต่อไว้
![Page 61: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/61.jpg)
//mydate.javapublic class mydate {
public static void main(String args[]) {Date d = new Date();System.out.println(d);System.out.println(d.getTime());
Date d1 = new Date(1000000L);System.out.println(d1);System.out.println(d1.getTime());System.out.println(d.after(d1));System.out.println(d.before(d1));System.out.println(d.equals(d1));
}}
![Page 62: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/62.jpg)
java.io.*• package ที่สนับสนุนการอ่าน-เขียนไฟล์ string sockets
– File /มีไว้เพื่อให้ทราบข้อมูลและจัดการไฟล์หรือไดเรกทอรี คลาสนี้ไม่มี method ส าหรับสร้างไฟล์ใหม่ขึ้นมา แต่มี renameTo() ส าหรับเปลี่ยนชื่อไฟล์ และ delete()ส าหรับลบไฟล์
![Page 63: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/63.jpg)
//myfile.javaimport java.io.*;class myfile {
public static void main(String args[]) throws IOException{
File f =new File("myfile.java");System.out.println("File name :" +f.getName());System.out.println("Path :" +f.getPath());System.out.println("Parent:" +f.getParent());System.out.println("AbsolutePath :" +f.getAbsolutePath());System.out.println("isAbsolute :" +f.isAbsolute());System.out.println("exists :" +f.exists());System.out.println("isFile :" +f.isFile());System.out.println("isDirectory :"+f.isDirectory());System.out.println("Writeable :" +f.canWrite());System.out.println("Readable :" +f.canRead());System.out.println("Length :" +f.length()); }
}
![Page 64: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/64.jpg)
• RandomAccessFile//myRandomfile.javaimport java.io.*;class myRandomFile {
public static void main(String args[]) throws IOException
{RandomAccessFile f = new RandomAccessFile("myRandomFile.java","r");
f.seek(15);System.out.println(f.readLine());f.seek(3);System.out.println(f.readLine());
}}
![Page 65: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน](https://reader033.vdocuments.pub/reader033/viewer/2022041622/5e4014013485063df3290490/html5/thumbnails/65.jpg)
• FileInputStream / FileOutputStream ส าหรับอ่านและสง่ byte stream ออกไปท่ีไฟล์ ซึง่ถ้ามีอยู่แล้วจะเขียนทบัของเดิม แต่ถ้าไมม่ีจะเป็นการสร้างใหม ่โดยใช้ read() & write() method
//myfileStream.java
import java.io.*;
class myfileStream {
public static void main(String args[]) throws IOException
{
int n = 0;
byte b[] = new byte[128];
FileInputStream inf =new FileInputStream("myRandomFile.java");
FileOutputStream outf =new FileOutputStream("mytmpFile.java");
while ((n =inf.read(b))!= -1)
outf.write(b,0,n);
inf.close();
outf.close(); }}