Lec05 :: สสสสสสสสส String , String Builder and String Buffer Lec06 :: Lec06 :: คคคค คคคค Math Math คคคค คคคค Format Format สสสสสสสสสสสสสสสสสสสสสสสส สสส ส. สสสสสสส สสสสสสสส http://www.siam2dev.com [email protected]
Jan 13, 2016
Lec05 :: สายอั�กขระ String , String Builder and String Buffer
Lec06 :: Lec06 :: คลาส คลาส MathMath คลาส คลาส FormatFormat
การเข�ยนโปรแกรมเชิ�งวั�ตถุ�โดย อั. น�ฐพงศ์� ส�งเน�ยม
http://www.siam2dev.com
String , StringBuilder และ StringBuffer
• ชิน�ดข อัม!ลพ"#นฐานที่�%เป&นต�วัอั�กษร char สารมารถุน(าเสนอัต�วัอั�กษรได เพ�ยงต�วัเด�ยวั ซึ่+%งไม�เพ�ยงพอัต�อัการน(าไปใชิ งานที่�%วัไปได โปรแกรมส�วันใหญ่�จึ+งต อังการน(าเสนอัข อัม!ลที่�%เป&นคำ(าหร"อัประโยคำ ก1คำ"อัสามารถุน(าต�วัอั�กษรมาเร�ยงต�อัก�นเป&นสาย คำล ายก�บสายอั�กษร แต� นอักจึากเก1บต�วัอั�กษรได แล วั ย�งสามารถุเก1บต�วัเลข และส�ญ่ล�กษณ์�อั"%นได อั�กด วัย จึ+งเร�ยกรวัมก�นวั�าสายอั�กขระ ภาษาจึาวัาม�ชิน�ดข อัม!ลที่�%เป&นสายอั�กขระได ซึ่+%งก1คำ"อัชิน�ดข อัม!ล String , StringBuilder และ StringBuffer น�%นเอัง
สายอั�กขระ• จึากโปรแกรม HelloWorld!
• จึะเห1นวั�า คำ(าที่�%พ�มพ�อัอักมาน�#นประกอับไปด วัย H,e,l,l,o,... เร�ยงต�อัก�น เราจึ+งเร�ยกวั�า สายอั�กขระ สายอั�กขระ (String)(String)
public class hello_world { public static void main(String args[]) { System.out.println(“Hello World!”); }}
คำลาสสตร�ง (String class)
• เน"%อังจึากสายอั�กขระม�ประโยชิน�มากมาย ภาษาจึาวัาจึ+งม�ชิน�ดข อัม!ลที่�%น(าเสนอัสายอั�กขระได แต�ชิน�ดข อัม!ลที่�%น(าเสนอัสายอั�กขระน�#ไม�จึ�ดเป&นข อัม!ลชิน�ดพ"#นฐาน แถุมย�งม�ล�กษณ์ะพ�เศ์ษเพ�%มเต�มเข ามา เราจึ+งใชิ คำ(าวั�า คลาส (class) แที่นคำ(าวั�าชิน�ดข อัม!ล (data type)
Java StringJava String• สายอั�กษร (String) ในภาษาจาวา
ไม่�ใช่�เป็�นเพี�ยงเน��อัที่� ในหน�วยความ่จ"าที่� จอังไว#ส"าหร�บป็ระเภที่ข#อัม่%ล แต่�เป็�นว�ต่ถุ) (Object )
• ต่�วแป็ร String ในภาษาจาวา เก*บค�าอั#างอั+งขอัง String Object เม่� อัม่�การอั#างอั+งค�าไป็ย�ง String Object แล#ว จะไม่�สาม่ารถุเป็ล� ยนแป็ลงค�าใน String Object ได้#โด้ยต่รง แต่�สาม่ารถุให#ค�าอั#างอั+งใหม่�ได้#
String message = new String("Hello");
String message = "Hello";
หร�อั
• การป็ระกาศต่�วแป็ร String ในภาษาจาวา
String Declaration (1)String Declaration (1)
1 String empty = new String("");2 String message = "Hello";3 String repeat = message;
""
xxx
yyy
zzz
aaa
bbbString
""
emptystored at xxx
stored at aaa
AfterLine 1
aaaString""
stored at aaa
Conceptual View Memory Address View
String Declaration (2)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""
emptystored at xxx
stored at aaa
AfterLine 2
aaa
String""
stored at aaa
Conceptual ViewMemory Address
View
String”Hello"
""
xxx
yyy
zzz
aaa
bbbString
""
emptystored at xxx
stored at aaa
AfterLine 1
aaaString""
stored at aaa
Conceptual View Memory Address View
• การป็ระกาศต่�วแป็ร String ในภาษาจาวา
String Declaration (3)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""
emptystored at xxx
stored at aaa
AfterLine 3
aaa
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""
emptystored at xxx
stored at aaa
AfterLine 2
aaa
String""
stored at aaa
Conceptual ViewMemory Address
View
String”Hello"
• การป็ระกาศต่�วแป็ร String ในภาษาจาวา
The “String” ClassThe “String” Class• String Class ค�าใน String Object ไม่�สาม่ารถุเป็ล� ยนแป็ลงได้# แต่�สาม่ารถุให#ค�าอั#างอั+งจากต่�วแป็ร String ใหม่� ได้#
• Methods ขอัง String Class Create New String
concat, replace, subString, toLowerCase, toUpperCase
Search endswith, startswith, indexOf,lastIndexOf
Comparison equals, equalsIgnoreCase,CompareTo
others charAt, length
String ComparisonString Comparison• การเป็ร�ยบเที่�ยบ String ในภาษาจาวา
เป็ร�ยบเที่�ยบค�าใน String Object ว�าเที่�าก�นหร�อัไม่�
ใช่#เม่ที่ธอัด้ booleanequals(String s)
เป็ร�ยบเที่�ยบว�าต่�วแป็ร String อั#างอั+งถุ0ง String Object เด้�ยวก�นหร�อัไม่�
ใช่#โอัเป็อัร1เรเต่อัร1 (Operator) “==”
เป็ร�ยบเที่�ยบค�าใน String Object เร�ยงต่าม่ล"าด้�บต่�วอั�กษร
ใช่#เม่ที่ธอัด้ intcompareTo(String s) return ค�า 0 เม่� อัเป็�นค�าเด้�ยวก�น ,ค�าจ"านวนเต่*ม่บวกเม่� อั String Object น��ม่ากกว�า s และ ค�าจ"านวนเต่*ม่ลบ เม่� อั String Object น��น#อัยกว�า s
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 Comparing String ContentsContents• ต่�วอัย�าง
"Hello"
message
stored at yyy bbb
String"Hello"stored at bbb
stored at bbb
"Hello"
xxx
yyy
zzz
aaa
bbb
String"Hello"
greetingstored at xxx
stored at aaa
aaa
String "Hello"
stored at aaa
Conceptual ViewMemory Address
View
String"Hello"
Comparing String Comparing String ReferenceReference
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 yyy bbb
String"Hello"stored at bbb
stored at bbb
"Hello"
xxx
yyy
zzz
aaa
bbb
String"Hello"
greetingstored at xxx
stored at aaa
aaa
String "Hello"
stored at aaa
Conceptual ViewMemory Address
View
String"Hello"
• ต่�วอัย�าง
Comparing String Comparing String Lexicographical OrderLexicographical 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
String ConcatenationString Concatenation
String greetings = new String("Hello”); int ThisYear = 2001; String name = " World " + 2001; String message = greetings + name;
• การน"า String ม่าเช่� อัม่ต่�อัก�น ใช่#โอัเป็อัร1เรเต่อัร1 Concatenate (+) แต่�ไม่�สาม่ารถุเป็ร�ยบเที่�ยบ String โด้ยใช่#โอัเป็อัร1เรเต่อัร1แบบ Relational (>, <, >=, <=) และโอัเป็อัร1เรเต่อัร1แบบEquality ( ==, !=) ได้#
• หม่ายเหต่) ใช่#โอัเป็อัร1เต่อัร1 (+) ก�บ String ได้#เม่� อัม่�พีจน1ใด้พีจน1หน0 งเป็�น String
String
• วั�ตถุ� String สามารถุน(าเสนอัข อัม!ลที่�%เป&นสายอั�กขระได การใชิ งานสตร�งม�ข� #นตอันด�งต�อัไปน�#
1. การประกาศ์ต�วัแปร โดยเข�ยน คำ(าวั�า String แล วัตามด วัยชิ"%อัต�วัแปร
String name;2. การก(าหนดคำ�า ให ก�บต�วัแปร name ให ใชิ เคำร"%อังหมาย = และสร างวั�ตถุ� String ด วัยคำ(าส�%ง new
name = new String(“Nattapong Songneam”)
3. แสดงผลด วัยคำ(าส�%ง System.out.println(name);
การส�%งงาน String
• วั�ตถุ� String ไม�เพ�ยงแคำ�ใชิ เก1บบ�นที่+กสายอั�กขระและแสดงผลอัอักมาเที่�าน�#น แต�ย�งม�คำวัามสามารถุพ�เศ์ษ อั"%นอั�กด�งน�#
1. การน�บคำวัามยาวัขอังสายอั�กขระ จึะใชิ lenght()name.lenght();
2. แสดงต�วัอั�กษรในต(าแหน�งที่�%ก(าหนด จึะใชิ charAt()name.charAt(1);
3. แสดงต(าแหน�งขอังสายอั�กขระในสตร�ง จึะใชิ indexof()name.indexof(“a”);
3. หาสตร�งในชิ�วังที่�%ก(าหนด จึะใชิ substring()name.substring(1,3);
การส�%งงาน 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));
}
}
การเปร�ยบเที่�ยบ 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”);
}}
}
การเปร�ยบเที่�ยบ 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”);
}}
}
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); } }
คำลาส Math
• ชิน�ดข อัม!ลพ"#นฐานที่�%เป&นต�วัเลข เชิ�น int หร"อั double น�#น สามารถุน(ามาคำ(านวัณ์ได ภาษาจึาวัาม�คำ(าส�%งส(าหร�บการคำ(านวัณ์ง�าย ๆ เชิ�น การบวัก ลบ คำ!ณ์ หาร ซึ่+%งส(าหร�บการคำ(านวัณ์ที่�%ซึ่�บซึ่ อันข+#น เชิ�น การคำ(านวัณ์ ตร�โกณ์ม�ต� ลอักการ�ที่+ม น�#น ภาษาจึาวัา ก1ที่(าได เชิ�นก�นโดย ภาษาจึาวัาได จึ�ดเตร�ยมคำลาส Math ไวั ชิ�วัยในการคำ(านวัณ์ให เร�ยบร อัยแล วัด�งน�#
เมธอัดต�าง ๆ ใน คำลาส Math
• sqrt()sqrt()• cbrt()cbrt()• pow()pow()• abs()abs()• ceil()ceil()• floor()floor()• round()round()• min()min()• max()max()
โปรแกรมคำ(านวัณ์คำ�า พ.ที่. วังกลมpublic class TestMath01 {
public static void main(String args[]) {
double r = 10.0d; // r = radiusdouble circleArea= Math.pi*r*rdouble circleArea= Math.pi*r*rSystem.out.println(circleArea)System.out.println(circleArea)
}
}
โปรแกรมคำ(านวัณ์คำ�า พ.ที่. วังกลม แบบที่�% 2
public class TestString01 {public static void main(String args[]) {
double r = 10.0d; // r = radiusdouble circleArea= Math.pi*Math.pow(r,2);double circleArea= Math.pi*Math.pow(r,2);
System.out.println(circleArea)System.out.println(circleArea)
}
}
โปรแกรมคำ(านวัณ์คำ�า เส นรอับ วังกลมpublic class TestString01 {
public static void main(String args[]) {
double r = 10.0d; // r = radiusdouble circular = 2*Math.pi*r;double circular = 2*Math.pi*r;
System.out.println(System.out.println(circularcircular))
}
}
• public static void main(String[] args) {• // TODO code application logic here• int 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);• • }
โปรแกรมคำ(านวัณ์คำ�า โปรแกรมส��ม ต�วัเลข 1-100
public class TestMath03 {public static void main(String args[]) {
for(int i=1;i<100;i++) {for(int i=1;i<100;i++) {int k = (int)(Math.random()*100);int k = (int)(Math.random()*100);System.out.println(k);System.out.println(k);
}}}}
การร�บข อัม!ลจึากผ! ใชิ งาน ที่างคำ�ย�บอัร�ด
javajava..utilutil..Scanner sc;Scanner sc;sc sc = = new javanew java..utilutil..ScannerScanner((SystemSystem..inin));;
• int y int y = = scsc..nextIntnextInt()(); //; // ร�บข#อัม่%ลที่� เป็�น ต่�วเลขร�บข#อัม่%ลที่� เป็�น ต่�วเลขจ"านวนเต่*ม่ จ"านวนเต่*ม่ intint
• double y double y = = scsc..nextDoublenextDouble()(); //; // ร�บข#อัม่%ลที่� เป็�น ร�บข#อัม่%ลที่� เป็�น ต่�วเลขที่ศน+ยม่ ต่�วเลขที่ศน+ยม่ doubledouble
• String y = sc.next() //String y = sc.next() // ร�บข#อัม่%ลที่� เป็�นข#อัความ่ ร�บข#อัม่%ลที่� เป็�นข#อัความ่ StringString
Excercise 6_1
• จึงเข�ยนโปรแกรม ร�บ คำ�า คำวัามกวั าง , คำวัามส!ง จึาก คำ�ย�บอัร�ดแล วั คำ(านวัณ์ คำ�า พ.ที่. ส�%เหล�%ยมผ"นผ า
• จึงเข�ยนโปรแกรม ร�บ คำ�า คำวัามกวั าง , ฐาน จึาก คำ�ย�บอัร�ดแล วั คำ(านวัณ์ คำ�า พ.ที่. สามเหล�%ยม
• จึงเข�ยนโปรแกรม คำ(านวัณ์ คำ�า พ.ที่. ส�%เหล�%ยมคำางหม! โดย ร�บ ข อัม!ลต�าง ๆ จึากคำ�ย�บอัร�ด
คลาสในกล)�ม่ คลาสในกล)�ม่ FormatFormat
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 {public class Main {
Java Programming Java Programming [Class library][Class library]
ByBy
Nattapong SongneamNattapong Songneam
http://www.siam2dev.comhttp://www.siam2dev.com
Java Class library• java เป&นภาษาขนาดเล1ก เพราะม�เพ�ยงกลไกพ"#น
ฐานส(าหร�บการโปรแกรมที่�%วัไปและที่�%เก�%ยวัก�บการโปรแกรมเชิ�งวั�ตถุ�เที่�าน�#น แต�ได กลไกเฉพาะอัย�างถุ!กสร างข+#นเป&นคำลาสเก1บไวั ใน standard library ขอังภาษา คำ"อัไฟล� classes.zip ที่�%มาก�บ jdk ซึ่+%งคำลาสจึ(านวันมากจึะเก1บไวั ใน package มาตรฐานขอังภาษา ม�ชิ"%อัวั�า java ซึ่+%งจึะถุ!กแบ�งเป&น sub-package ย�อัย ๆ ลงไปส(าหร�บแต�ละงาน เชิ�น java.io. เป&นที่�%เก1บคำลาสเก�%ยวัก�บ stream เป&นต น
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);
//stringclass 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()
java.util.*• ประกอับด วัยคำลาสที่�%ส(าคำ�ญ่ ๆ ด�งน�#
– Enumeration /เก1บกล��มข อัม!ล เร�ยกมาด!ที่�ละต�วั– Vector / เก1บกล��มข อัม!ลที่�%ไม�ที่ราบล�วังหน าวั�าม�จึ(านวันเที่�าใด– Stack / ใชิ เป&น polymorphism คำ"อั สมาชิ�กใน stack อัาจึ
เป&น instance ขอังคำลาสใดก1ได – BitSet / สร าง bit vector คำ"อั vector ขนาดไม�จึ(าก�ด แต�
สมาชิ�กเป&น 1 bit เก1บคำ�า boolean– Dictionary / ส(าหร�บสร างคำลาสเพ"%อัเป&นแหล�งเก1บข อัม!ล
ขอังคำ!�ล(าด�บ ในล�กษณ์ะ <key, value>– Hashtable /ขยายจึาก dictionary โดยใชิ hash code ขอัง
key เป&น index และ value อัาจึเป&น instance ขอังคำลาสใด ๆ
– Properties / ขยายจึาก hashtable เพ"%อัเป&นแหล�งเก1บข อัม!ลคำ!�ล(าด�บขอัง string ก�บ string
•StringTokenizer / ส"าหร�บต่�ด้ string หน0 งอัอักเป็�นล"าด้�บขอัง tokens•Date / เก*บข#อัม่%ลเก� ยวก�บ เวลา และว�นที่� •Random / คลาสม่�ฟั3งก1ช่�นส"าหร�บสร#างล"าด้�บขอังเลข random•java.util.zip Package
•GZIPOutputStream /filter stream ส"าหร�บบ�บอั�ด้ข#อัม่%ล•GZIPInputStream / filter stream ส"าหร�บขยายข#อัม่%ล•ZipOutputStream /filter stream ส"าหร�บบ�บอั�ด้ข#อัม่%ลเพี� อัส�งอัอัก output stream ที่� น"าม่าต่�อัไว#•ZipInputStream / filter stream ส"าหร�บขยายข#อัม่%ลเพี� อัส�งเข#า input stream ที่� น"าม่าต่�อัไว#
//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));
}}
java.io.*• package ที่�%สน�บสน�นการอั�าน-เข�ยน
ไฟล� string sockets
–File /ม�ไวั เพ"%อัให ที่ราบข อัม!ลและจึ�ดการไฟล�หร"อัไดเรกที่อัร� คำลาสน�#ไม�ม� method ส(าหร�บสร างไฟล�ใหม�ข+#นมา แต�ม� renameTo() ส(าหร�บเปล�%ยนชิ"%อัไฟล� และ delete() ส(าหร�บลบไฟล�
//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()); }
}
• 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());
}}
• FileInputStream / FileOutputStream ส(าหร�บอั�านและส�ง byte stream อัอักไปที่�%ไฟล� ซึ่+%งถุ าม�อัย!�แล วัจึะเข�ยนที่�บขอังเด�ม แต�ถุ าไม�ม�จึะเป&นการสร างใหม� โดยใชิ read() & write() method
//myfileStream.javaimport 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(); }
}