65
Lec05_1 :: สายอักขระ String , String Builder and String Buffer การเขียนโปรแกรมจาวา (4121309) โดย อ. นัฐพงศ งเนียม http://www.siam2dev.net [email protected] [email protected]

Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Lec05_1 :: สายอกัขระ String , String Builder and String Buffer

การเขยีนโปรแกรมจาวา (4121309)

โดย อ. นัฐพงศ ์ สง่เนยีม

http://www.siam2dev.net

[email protected]

[email protected]

Page 2: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Reviews

Variable

Identifier ชือ่

Scope ระดบัของตวัแปร

Data Type

Casting

Control Statement ค าสัง่ควบคมุการท างาน

Decision

Loop

Page 3: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

Test_Var

• D:\Java_Prog

Page 5: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

โครงสร้าง code ท่ีไม่มี comment

ช่ือคลาส

ช่ือแพก็เกจ

ส่วนโปรแกรมหลกั

วงเลบ็ปิดของคลาส

Page 6: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

การประกาศตวัแปรในบริเวณใด (Scope)

• Global

• Local

– Class

– Method

– Block

ตัวแปร y เป็นระดบัโกลบอล global

ตัวแปร x เป็นระดบัโลคอล local

Page 7: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Test_Var

y : int

+ Main()

x:int

Page 8: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

ตัวแปร x เป็นระดบัโลคอล local

Page 9: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

ตัวแปร x เป็นระดบัโลคอล local

ก. 8ข. 10ค. 12ง. 13จ. ไม่มีขอ้ใดถูก

Page 10: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

ประเภทขอ้ผิดพลาด

• Syntax Error

• Runtime Error

• Logical Error

Page 11: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Syntax Error / Logical Error

• ใน main จะยงัไม่สามารถเรยีกใชง้าน add() ถา้ยงัไม่ก าหนดใหเ้ป็น static

• ดงันัน้ เมธอดทีจ่ะสามารถเรยีกใชง้านใน main ไดเ้ฉพาะ static method เทา่นัน้

• ดงันัน้ท าให ้add เป็น static กอ่น

Page 12: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน
Page 13: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

ตวัแปร i เป็นตวัแปรระดบั Block

Page 14: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Test_Var

y : int

+ Main()

x:int

Page 15: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

String , StringBuilder และ StringBuffer

• ชนิดข้อมูลพื้นฐานที่เป็นตัวอักษร char สารมารถน าเสนอตัวอักษรได้เพียงตัวเดียว ซึ่งไม่เพียงพอต่อการน าไปใช้งานทั่วไปได้ โปรแกรมส่วนใหญ่จึงต้องการน าเสนอข้อมูลที่เป็นค าหรือประโยค ก็คือสามารถน าตัวอักษรมาเรียงต่อกันเป็นสาย คล้ายกับสายอักษร แต่ นอกจากเก็บตัวอักษรได้แล้ว ยังสามารถเก็บตัวเลข และสัญลักษณ์อื่นได้ อีกด้วย จึงเรียกรวมกันว่าสายอักขระ ภาษาจาวามีชนิดข้อมูลที่เป็นสายอักขระได้ ซึ่งก็คือชนิดข้อมูล String , StringBuilder และ StringBuffer นั่นเอง

Page 16: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

สายอักขระ

จากโปรแกรม 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 สารมารถน

คลาสสตริง (String class)

• เนื่องจากสายอักขระมีประโยชน์มากมาย ภาษาจาวาจึงมีชนิดข้อมูลที่น าเสนอสายอักขระได้ แต่ชนิดข้อมูลที่น าเสนอสายอักขระนี้ไม่จัดเป็นข้อมูลชนิดพื้นฐาน แถมยังมีลักษณะพิเศษเพิ่มเติมเข้ามา เราจึงใช้ค าว่า คลาส (class) แทนค าว่าชนิดข้อมูล (data type)

Page 18: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

• การประกาศตัวแปร 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 สารมารถน
Page 21: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน
Page 22: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน
Page 28: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

.equals()

Page 29: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน
Page 30: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน
Page 31: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน

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 สารมารถน

การส่ังงาน 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 สารมารถน

จงเขียนค าสัง่ เพ่ือหาวา่ ....ก มีในช่ือ นศ. หรือไม่ ถา้มี อยูล่ าดบัท่ีเท่าไร

• .....................................................................................................................................................................................................................................................................................................................

*** ไม่นับช่องว่าง

Page 38: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

จงเขียนโปรแกรม ค าสัง่ ตวัอกัษรท่ี 4 ของช่ือ นศ.

• .................................

Page 39: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

การสัง่งาน 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 สารมารถน

การเปรียบเทียบ 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 สารมารถน

การเปรียบเทียบ 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 สารมารถน

การประยกุตใ์ชง้าน String กบัการเขา้รหสัขอ้มูล

Page 43: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

คลาส Math

• ชนิดข้อมูลพื้นฐานที่เปน็ตัวเลข เชน่ int หรือ double นั้น สามารถน ามาค านวณได้ ภาษาจาวามีค าสั่งส าหรบัการค านวณงา่ย ๆ เช่น การบวก ลบ คูณ หาร ซึ่งส าหรับการค านวณที่ซับซ้อนขึ้น เช่น การค านวณ ตรีโกณมิติ ลอกการิทึม นั้น ภาษาจาวา ก็ท าได้เช่นกันโดย ภาษาจาวาได้ จัดเตรียมคลาส Math ไว้ช่วยในการค านวณให้เรยีบร้อยแล้วดังนี้

Page 45: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

เมธอดต่าง ๆ ใน คลาส Math

sqrt() cbrt() pow() abs() ceil() floor() round() min() max()

Page 46: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

โปรแกรมค านวณค่า พ.ท. วงกลม

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 สารมารถน

โปรแกรมค านวณค่า พ.ท. วงกลม แบบท่ี 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 สารมารถน

แบบฝึกหดั 5.1 จงเขียนโปรแกรมเพ่ือหาค่า

Page 49: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

โปรแกรมค านวณค่า เสน้รอบ วงกลม

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 สารมารถน

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 สารมารถน

โปรแกรมค านวณค่า โปรแกรมสุ่มตัวเลข 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 สารมารถน

การรับขอ้มูลจากผูใ้ชง้าน ทางคียบ์อร์ด

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 สารมารถน

Exercise 5_1

• จงเขียนโปรแกรม รับ ค่า ความกว้าง , ความสูง จาก คีย์บอร์ดแล้ว ค านวณ ค่า พ.ท. สี่เหลี่ยมผืนผ้า

• จงเขียนโปรแกรม รับ ค่า ความกว้าง , ฐาน จาก คีย์บอร์ดแล้ว ค านวณ ค่า พ.ท. สามเหลี่ยม

• จงเขียนโปรแกรม ค านวณ ค่า พ.ท. สี่เหลี่ยมคางหมู โดย รับ ข้อมูลต่าง ๆ จากคีย์บอร์ด

Page 54: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

คลาสในกลุ่ม 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 สารมารถน

Java Programming

[Class library]By

Nattapong Songneam

http://www.siam2dev.com

Page 56: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

Java Class library• java เป็นภาษาขนาดเลก็ เพราะมีเพียงกลไกพืน้ฐานส าหรับการโปรแกรมทัว่ไปและท่ีเก่ียวกบัการโปรแกรมเชิงวตัถเุท่านัน้ แตไ่ด้กลไกเฉพาะอยา่งถกูสร้างขึน้เป็นคลาสเก็บไว้ใน standard libraryของภาษา คือไฟล์ classes.zip ท่ีมากบั jdk ซึง่คลาสจ านวนมากจะเก็บไว้ใน package มาตรฐานของภาษา มีช่ือวา่ java ซึง่จะถกูแบง่เป็น sub-package ยอ่ย ๆ ลงไปส าหรับแตล่ะงาน เช่น java.io. เป็นท่ีเก็บคลาสเก่ียวกบั stream เป็นต้น

Page 57: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

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 สารมารถน

//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 สารมารถน

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 สารมารถน

•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 สารมารถน

//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 สารมารถน

java.io.*• package ที่สนับสนุนการอ่าน-เขียนไฟล์ string sockets

– File /มีไว้เพื่อให้ทราบข้อมูลและจัดการไฟล์หรือไดเรกทอรี คลาสนี้ไม่มี method ส าหรับสร้างไฟล์ใหม่ขึ้นมา แต่มี renameTo() ส าหรับเปลี่ยนชื่อไฟล์ และ delete()ส าหรับลบไฟล์

Page 63: Lec05 1 :: สายอักขระ...String , StringBuilder และ StringBuffer• ชน ดข อม ลพ นฐานท เป นต วอ กษร char สารมารถน

//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 สารมารถน

• 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 สารมารถน

• 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(); }}