Object-Oriented Programming with Java Burapha University, 2001 Java Array and String Week #3 Jarungjit Parnjai
Object-Oriented Programming with Java Burapha University, 2001 Java Array
Object-Oriented Programming with Java Burapha University, 2001 Java Array แอร์เรย์ (Array) หมายถึง กลุ่ม (group) ของ ข้อมูลที่เป็นประเภทเดียวกัน Array ในภาษาจาวา ไม่ใช่เป็นเพียงเนื้อที่ใน หน่วยความจำที่จองไว้สำหรับ ประเภทข้อมูล แต่เป็นวัตถุ (Object) เป็นกลุ่ม (group) ของข้อมูล ที่เป็นประเภทเดียวกัน ( ทั้ง ประเภท Primitive Data Type และ Reference Type)
Object-Oriented Programming with Java Burapha University, 2001 Examples of Java Array ElementIndex Length=3 [0] [1] [2] xxx ‘a ’ ‘b ’ ‘c ’ xxx yyy Memory Address zzz Memory Address aaa Declare A as an Array of Character A
Object-Oriented Programming with Java Burapha University, 2001 Declaring Array in Java การประกาศ Array ในภาษาจาวา ทำได้โดย type[ ] variable; หรือ type variable[ ]; ประกาศตัวแปร Array เพื่อเป็น ตัวอ้างอิงไปยัง Array เป็นการจองเนื้อที่สำหรับตัวแปร อ้างอิง (Reference Variable) ไม่ระบุขนาดของ Array ค่า Default value เป็น null Array เป็น Object???
Object-Oriented Programming with Java Burapha University, 2001 Examples of Declaring Array ตัวอย่าง การประกาศ Array int[ ] i; หรือ int i[ ]; int[ ] i,j; หรือ int i[ ], j[ ]; double[ ] d; หรือ double d[ ]; char[ ] A; หรือ char A[ ]; BankAccount[ ] ba; หรือ BankAccount ba[ ]; Point[ ] pt; หรือ Point pt[ ];
Object-Oriented Programming with Java Burapha University, 2001 Creating Array in Java 1 char[ ] c; 2 c = new char[26]; 3 for (int i=0; i<26; i++) { 4c[i] = (char)('a'+i); 5 } YYY Memory Address XXX Declare C as an Array of Character c After Line 1 null YYY ตัวอย่างการสร้าง Array ของ Primitive Data Type
Object-Oriented Programming with Java Burapha University, 2001 Creating Array in Java 1 char[ ] c; 2 c = new char[26]; 3 for (int i=0; i<26; i++) { 4c[i] = (char)('a'+i); 5 } YYY Memory Address XXX C Executing Line 2 null Declare C as an Array of Character YYY aaa Memory Address XXX C ElementIndex Length=26 [0] [1] [2] YY Y aaa bbb Memory Address zzz ccc [25] Executing Line 2 null Declare C as an Array of Character YYY aaa Memory Address XXX C ElementIndex Length=26 [0] [1] [2] YY Y aaa bbb Memory Address zzz ccc [25] After Line 2 null Declare C as an Array of Character YYY ตัวอย่างการสร้าง Array ของ Primitive Data Type
Object-Oriented Programming with Java Burapha University, 2001 Creating Array in Java 1 char[ ] c; 2 c = new char[26]; 3 for (int i=0; i<26; i++) { 4c[i] = (char)('a'+i); 5 } aaa Memory Address XXX C ElementIndex Length=26 [0] [1] [2] ‘b’ aaa bbb Memory Address zzz ccc [25] After Line 3 and 4 null Declare C as an Array of Character YYY ‘z’ ‘c’ ‘a’ Memory Address aaa Memory Address XXX C ElementIndex Length=26 [0] [1] [2] YY Y aaa bbb zzz ccc [25] Executing Line 3 and 4 null Declare C as an Array of Character YYY ‘a’ ตัวอย่างการสร้าง Array ของ Primitive Data Type
Object-Oriented Programming with Java Burapha University, 2001 Creating Array in Java 1 char[ ] c; 2 c = new char[26]; 3 for (int i=0; i<26; i++) { 4c[i] = (char)('a'+i); 5 } aaa Memory Address XXX C ElementIndex Length=26 [0] [1] [2] ‘b’ aaa bbb Memory Address zzz ccc [25] After Line 5 null Declare C as an Array of Character YYY ‘z’ ‘c’ ‘a’ ตัวอย่างการสร้าง Array ของ Primitive Data Type
Object-Oriented Programming with Java Burapha University, 2001 Initializing an Array การสร้าง Array โดยให้ค่าเริ่มต้น BankAccount account[ ]; account = new BankAccount[3]; account[0] = new BankAccount(1000); account[1] = new BankAccount(0); account[2] = new BankAccount (23052); Array Bounds int data[ ]; data = new int[5]; for (int i=10; I < data.length; i--) data[i] = i % 2; int a[ ] = { 2, 4, 6, 8, 10 };
Object-Oriented Programming with Java Burapha University, 2001 MyDate.java A Point Class Class Diagram Point - xPos : int - yPos : int + Point(initX : int, initY: int) + getX( ) : int + getY( ) : int + setPostion(X : int, Y: int) Class Diagram Point setPostion(x, y) getX() yPos xPos Object Diagram getY()
Object-Oriented Programming with Java Burapha University, Point[ ] pt; 2 pt = new Point[10]; 3 for (int i=0; i<pt.length; i++) { 4pt[i] = (Point)('a'+i); 5 } YYY Memory Address XXX Declare pt as an Array of Point Object pt After Line 1 null YYY ตัวอย่างการสร้าง Array ของ Primitive Data Type Creating Array in Java
Object-Oriented Programming with Java Burapha University, Point[ ] pt; 2 pt = new Point[10]; 3 for (int i=0; i<pt.length; i++) { 4pt[i] = new Point(i, i+1); 5 } aaa Memory Address XXX pt ElementIndex Length=10 [0] [1] [2] YY Y aaa bbb Memory Address zzz ccc [9] After Line 2 null Declare pt as an Array of Character YYY aaa Memory Address XXX pt ElementIndex Length=10 [0] [1] [2] YY Y aaa bbb Memory Address zzz ccc [9] Executing Line 2 null Declare pt as an Array of Character YYY ตัวอย่างการสร้าง Array ของ Primitive Data Type Creating Array in Java
Object-Oriented Programming with Java Burapha University, Point[ ] pt; 2 pt = new Point[10]; 3 for (int i=0; i<pt.length; i++) { 4 pt[i] = new Point(i, i+1); 5 } aaa Memory Address XXX pt ElementIndex Length = 10 [0] [1] [2] (1, 2) aaa bbb Memory Address zzz ccc [9] After Line 5 null Declare pt as an Array of Character YYY (9, 10) (2, 3) (0, 1) aaa Memory Address XXX pt ElementIndex Length = 10 [0] [1] [2] (1, 2) aaa bbb Memory Address zzz ccc [9] After Line 5 null Declare pt as an Array of Character YYY (9, 10) (2, 3) (0, 1) 0 1 X Y Point ตัวอย่างการสร้าง Array ของ Primitive Data Type Creating Array in Java
Object-Oriented Programming with Java Burapha University, 2001 MyDate.java A Line class Class Diagram ตัวอย่างการสร้าง Array ของคลาส Line Line - startPt : Point - endPt : Point + Line(start :Point, start : Point) + getStartPoint ( ) : Point + getEndPoint( ) : Point + setStartPoint (pt :Point) + setEndPoint (pt :Point) Class Diagram 1 Line[ ] line; 2 line = new Line[3]; 3 for (int i=0; i<line.length; i++) { 4 Point pt1 = new Point(i); 5 Point pt2 = new Point(i+1); 6 line[i] = new Line(pt1,pt2); 7 }
Object-Oriented Programming with Java Burapha University, 2001 Array Resizing in Java ในภาษาจาวา ไม่สามารถ resize Array ได้ แต่สามารถตัวแปรอ้างอิงเดิมเก็บ ค่าอ้างอิงไปยัง Array ใหม่ได้ ตัวอย่าง 1 int myArray [ ] = new int[4]; 2 myArray = new int[6]; aaa XXX myArray null aaa bbb ddd ccc [0] [1] [2] [3] After Line 1 null 1 int myArray [ ] = new int[4]; 2 myArray = new int[6]; aaa XXX myArray null aaa bbb ddd ccc [0] [1] [2] [3] Executing Line 2 null [0] [1] [2] null jjj kkk nnn mmm [3] null ooo ppp [4] [5] 1 int myArray [ ] = new int[4]; 2 myArray = new int[6]; jjj XXX myArray null aaa bbb ddd ccc [0] [1] [2] [3] After Line 2 null [0] [1] [2] null jjj kkk nnn mmm [3] null ooo ppp [4] [5]
Object-Oriented Programming with Java Burapha University, 2001 Copying Array in Java ในภาษาจาวา ทำได้โดย เรียกใช้เมทธอด System.arrraycopy( ); ตัวอย่าง 1 int elements [ ] = { 1,2,3,4 }; // original array 2 int hold [ ] = { 10,9,8,7,6,5 }; // new larger array 3 System.arraycopy(elements, 0, hold, 0, elements.length); aaa XXX elements [0] [1] [2] 2 aaa bbb ddd ccc [3] After Line jjj XXX hold [0] [1] [2] 9 jjj kkk nnn mmm [3] ooo ppp [4] [5] Length of copy OriginTarget
Object-Oriented Programming with Java Burapha University, 2001 Copying Array in Java ตัวอย่าง 1 int elements [ ] = { 1,2,3,4 }; // original array 2 int hold [ ] = { 10,9,8,7,6,5 }; // new larger array 3 System.arraycopy(elements, 0, hold, 0, elements.length); aaa XXX elements [0] [1] [2] 2 aaa bbb ddd ccc [3] Executing Line jjj XXX hold [0] [1] [2] 9 jjj kkk nnn mmm [3] ooo ppp [4] [5] aaa XXX elements [0] [1] [2] 2 aaa bbb ddd ccc [3] After Line jjj XXX hold [0] [1] [2] 2 jjj kkk nnn mmm [3] ooo ppp [4] [5]
Object-Oriented Programming with Java Burapha University, 2001 Multidimensional Array in Java Multidimensional Array ในภาษา จาวา Array ที่มีจำนวนแถว และจำนวน คอลัมน์ ไม่คงที่เท่ากัน Array ที่มีจำนวนแถว และ จำนวน คอลัมน์ คงที่เท่ากัน int elements [ ][ ] = new int[4][5]; // 4 rows, 5 cols each int[][] twoDim; twoDim [ 0] = new int[2]; // row#0, 2 cols twoDim [ 1] = new int[4]; // row#1, 4 cols twoDim [ 2] = new int[6]; // row#2, 6 cols twoDim [ 3] = new int[8]; // row#3, 8 cols
Object-Oriented Programming with Java Burapha University, 2001 Initializing Multidimensional Array การสร้าง Multidimensional Array โดยให้ค่าเริ่มต้น int[ ][ ] array_2d = { { 2, 4, 6, 8, 10 }, { 0, 1}, {20, 21, 22} }; long elements[ ][ ]; elements = new long[2][3]; for (int i=0; i<elements.length; i++) for (int j=0; j<elements[i].length; j++) elements[i][j] = 0L;
Object-Oriented Programming with Java Burapha University, 2001 Java String
Object-Oriented Programming with Java Burapha University, 2001 Java String สายอักษร (String) ในภาษาจาวา ไม่ใช่เป็นเพียงเนื้อที่ใน หน่วยความจำที่จองไว้สำหรับ ประเภทข้อมูล แต่เป็นวัตถุ (Object) ตัวแปร String ในภาษาจาวา เก็บค่าอ้างอิงของ String Object เมื่อมีการอ้างอิงค่าไปยัง String Object แล้ว จะไม่สามารถ เปลี่ยนแปลงค่าใน String Object ได้โดยตรง แต่สามารถให้ค่าอ้างอิง ใหม่ได้ String message = new String("Hello"); String message = "Hello"; หรื อ
Object-Oriented Programming with Java Burapha University, 2001 การประกาศตัวแปร String ใน ภาษาจาวา String Declaration (1) 1 String empty = new String(""); 2 String message = "Hello"; 3 String repeat = message; "" xxx yyy zzz aaa bbb String "" empty stored at xxx stored at aaa After Line 1 aaa String "" stored at aaa Conceptual ViewMemory Address View
Object-Oriented Programming with Java Burapha University, 2001 String Declaration (2) 1 String empty = new String(""); 2 String message = "Hello"; 3 String repeat = message; " Hello" message stored at yyy bbb String ”Hello" stored at bbb "" xxx yyy zzz aaa bbb String "" empty stored at xxx stored at aaa After Line 2 aaa String "" stored at aaa Conceptual View Memory Address View String ”Hello" "" xxx yyy zzz aaa bbb String "" empty stored at xxx stored at aaa After Line 1 aaa String "" stored at aaa Conceptual ViewMemory Address View การประกาศตัวแปร String ในภาษาจาวา
Object-Oriented Programming with Java Burapha University, 2001 String Declaration (3) 1 String empty = new String(""); 2 String message = "Hello"; 3 String repeat = message; Repeat stored at zzz " Hello" message stored at yyy bbb String ”Hello" stored at bbb "" xxx yyy zzz aaa bbb String "" empty stored at xxx stored at aaa After Line 3 aaa String "" stored at aaa Conceptual View Memory Address View String ”Hello" bbb " Hello" message stored at yyy bbb String ”Hello" stored at bbb "" xxx yyy zzz aaa bbb String "" empty stored at xxx stored at aaa After Line 2 aaa String "" stored at aaa Conceptual View Memory Address View String ”Hello" การประกาศตัวแปร String ในภาษาจาวา
Object-Oriented Programming with Java Burapha University, 2001 The “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
Object-Oriented Programming with Java Burapha University, 2001 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
Object-Oriented Programming with Java Burapha University, 2001 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 yyy bbb String "Hello" stored at bbb "Hello" xxx yyy zzz aaa bbb String "Hello" greeting stored at xxx stored at aaa aaa String "Hello" stored at aaa Conceptual View Memory Address View String "Hello"
Object-Oriented Programming with Java Burapha University, 2001 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 yyy bbb String "Hello" stored at bbb "Hello" xxx yyy zzz aaa bbb String "Hello" greeting stored at xxx stored at aaa aaa String "Hello" stored at aaa Conceptual View Memory Address View String "Hello" ตัวอย่าง
Object-Oriented Programming with Java Burapha University, 2001 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
Object-Oriented Programming with Java Burapha University, 2001 String Concatenation String greetings = new String("Hello”); int ThisYear = 2001; String name = " World " ; String message = greetings + name; การนำ String มาเชื่อมต่อกัน ใช้โอเปอร์เรเตอร์ Concatenate (+) แต่ไม่สามารถเปรียบเทียบ String โดย ใช้โอเปอร์เรเตอร์แบบ Relational (>, =, <=) และโอเปอร์เรเตอร์แบบ Equality ( ==, !=) ได้ หมายเหตุ ใช้โอเปอร์เตอร์ (+) กับ String ได้เมื่อมี พจน์ใดพจน์หนึ่งเป็น String
Object-Oriented Programming with Java Burapha University, 2001 Summary รู้จัก Java Array รู้จัก Java String