Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 194 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
194
Dung lượng
7,4 MB
Nội dung
BỘ GIÁO TRÌNH TIN HỌC c SỞ C hủ biên: Hồ Sĩ Đ àm Quyên LẬP TRÌNH Cơ BẢN VỚI JAVA Tác giả: L ẻ A n h C n g, Phạm Bảo S n NHÀ XUÁT BẢN ĐẠI HỌC QUỐC GIA HÀ NỘI MỤC LỤC Lời nci đầu 11 CHƯỔNG 1: M Ở Đ Ả U 15 1 hưong trình máy tính g ì? 15 lập trình gì? 16 khái niệm ngôn ngừ lặp trình 17 5ơ lược phát triển đặc điểm cùa ngơn ngừ lặp trình Java 21 Mơi trường lặp trìiih bicn dịch trẽn Java 23 lỗi tim l ỗ i 26 Lhái niệm lập trình hướng đối tượng 27 Chương trình Java đẩu tiên 29 ỉ Cấu trúc cùa chương trình đơn giản 30 ị.2 Phân tích thực thi chương trình Java đầu ticn 31 >.3 Ví dụ tính tổng hai số nguyên 34 Hài tập 38 CHIJCWG 2: CÁC KHÁI NIỆM VÀ PHÉP TOÁN c SỞ 39 lỊp ký tự từ tố 39 B ê n 40 s l Củ pháp khai báo biến 42 1.2 Sử dụng biến 42 :.3 H àng .42 1.4 Khối chương trình phạm vi cùa biến 43 Kiểu ỉ i ệ u 44 T)án tử 48 Bài ập 57 CHUW G 3:CÁC CÂU TRÚC ĐIÈU KHIẾN 59 Ciu trúc rỗ nhánh 59 1 Cấu trúc lệnh i f 59 12 Cấu trúc lệnh i f e lse 60 13 Cấu trúc lệnh switch 62 CiU trúc lặp 64 21 Vòng lặp w h ile .65 22 Vòng lặp while 66 23 Vòng lặp for 66 24 Lệnh break 68 25 Lệnh continue .69 25 Vòng lặp vơ hạn 70 Xí lý ngoại lệ try catch 70 Bài tip 73 LÂP t r ìn h c y jk lA V A CHƯƠNG 4: LỚP VÀ ĐÓI TƯỢNG - 74 Khái n iệm 75 Lớp 76 2.1 Khai báo lớp 76 2.2 Biến quyền truy cậ p 78 2.3 Định nghĩa phương thức 80 2.4 Phưưng thức khởi tạo 83 Đối tượng 85 3.1 Tạo đối tượng 85 3.2 Sử dụng đối tượng 86 3.3 Từ khóa th is 87 3.4 Từ khóa sta tic 89 Giải phóng nhớ đ ộ n g 91 Tính đóng gói 91 Tính kế thừa 93 Tính đa hình 96 Các thuộc tính khác 98 8.1 Lớp trừu tượng 98 8.2 Giao d iện 99 Các G ói 100 8.4 Lớp Lồng 101 Bài tập 105 CHƯƠNG 5: HÀM - PHƯƠNG T H Ú C 109 Khái n i ệ m 109 Gọi phương thức truyền giá trị cho tham số 110 2.1 Gọi phương thức 110 2.2 Truyền tham số cho phương thức 112 Phạm vi Biến 115 Phương thức tĩnh 1 Phương thức chồng 118 Phương thức đệ q u i 120 Bài tập • 124 CHƯƠNG 6: VÀO/RA c B Ả N 127 Luồng vào/ra Java 127 Lớp bao đ ệ m 129 Luồng vào/ra chuẩn 131 Ghi dừ liệu h ìn h 133 Nhập dừ liệu từ bàn phím 137 Luồng vào với lớp Scanner 140 Bài tập 144 CHƯƠNG 7: MÀNG 147 Khái n iệm 147 Khai báo tạo m n g 147 Các thao tác với màng 150 3.1 Duyệt m ảng 150 M UCUC _ _ \ Sử dụng tham số kiểu mảng phương thức 151 J.3 Phương thức trà kiểu mảng 152 >.4 Sao chép màng .152 Màng đa chiều 153 Màng rời rạc .155 Truyền tham số dòng lệnh 156 Bài tập 158 CH ƯƠMG 8: XÂU KÝ T ự 161 Ciới thiệu 161 Nàng ký tự 161 L-Jp String 162 Các phương thức: length, charAt getChars 163 So sánh x â u 164 Tìm kiếm xâu .166 ' Trích rút xâu 168 '.5 Ghép xâu 168 ' Phương thức chuyển sang đối tượng String 169 27 Một số phương thức khác 170 L/p tách từ tố 172 Bài ạp 174 CIIUƠSỈG9: THAO TÁC TRỂN TỆP TIN 177 Gới thiệu 177 Lrp F ile 179 Đ)C dừ liệu theo kiểu ký tự 181 Gũ dừ liệu theo kiểu ký tự 183 ĐỉC dừ liệu theo kiểu nhị p h ân 185 Lớp InputStream 185 52 FilelnputStream 186 Gìi dử liệu theo kiểu nhị phân 187 61 OutputStream 187 62 FileOutputStream 188 Tộ) truy cập ngẫu nhiẻn 189 Bùi tip 193 Tài lộu tham khảo 195 PI1Ự L Ị C 197 Daih sách từ khóa 197 Cả; hàm toán học 199 Cá: lớp vào Java 201 DANH SÁCH CÁC BẢNG Bàng 1.1: Danh sách từ khóa Java 40 Bàng 1.2: Danh sách kiểu dừ liệu nguycn thủy 45 Báng 2.3: Danh sách kiêu dừ liệu tham chiếu 45 Bàng 24: Các toán từ số h ọ c 49 Bàng 25: Các toán từ Bit 51 Bàng 26: Các toán tử quan h ệ .52 Bàng 27: Các tốn tử lơ-gic 53 Bàng 28: Thứ tự ưu tiên toán tử 54 Bàng 1: Một số lớp ngoại lệ Java .72 Bâng 1: M ô tả quyền truy cập Java 80 Bàng 42: Các gói J a v a 101 Bảng 1: Các đặc tả khuôn dạng hàm printf 134 Bảng 62: Một số ví dụ minh họa cách thay đổi độ rộng số nguyên in r a 134 Bàng 6.3: Căn lề trái số nguyên in 134 Bảng í: Thêm số vào trước số nguyên trường hợp độ rộng lớn độ dài cùa số n g u y c n 135 Bàng 6.5: Một số ví dụ in số nguyên theo định dạng 135 Bủng >: Các phương thức sừ dụng Scanner 142 Bàng : M ò tả cấu trúc mảng a với 10 phần t 149 Bảng 7.2: Minh họa cấu trúc mảng b kích thước x 154 Bảng 7.5: Biểu diễn mảng ary nhớ 154 Bảng : Các phương thức khởi tạo lớp String 162 Bảng : Các phương thức thao tác với tệp tin lớp PileReader 182 LẬP TRÌNH Cơ BẢN VỚI JAVA Báng 9.2: Các phương thức thao tác với tệp tin lớp F ile W riter 184 Bàng 9.3: Các phương thức cùa lớp InputStream 186 Bàng 9.4: Các phương thức cùa lớp O u tpu tS tream .187 Bàng P Danh sách từ khóa Java 199 Bàng P.2 Tóm tắt số phương thức tính tốn số học thơng dụng J a v a 201 Bàng P.3: Liệt kê lớp xử lý v o /r a 202 DANH SÁCH CÁC HÌNH VẼ Hình 1.1: Các bước lập trình 16 Hinh 1.2: Minh họa mã m y 18 n in h 1.3: Ví dụ m ă A s s e m b ly 19 Hinlỉ 1.4: Ví dụ m ngơn ngừ c 20 Hình 1.5: Các bước phát triển thực thi chương trình J a v a 24 Hình 1.6: Các bước xử lý chương trình đơn g iả n 30 Hình 1.7: Khai báo tổng quát chương trinh đơn g iả n 31 Hình 6.1: Minh họa luồng o /ra 128 Hình 9.1: S đồ m inh họa tệp tin với n b y te 178 Hình 9.2: Sơ đồ phan cấp lớp giao diện cùa gỏi java.io 179 LỜI NÓI ĐÀU Lập trình cơng việc viết chương trình máy tính để giải tốn hay thực cơng việc dó máy tính Chưcmg trình dược viết ngơn ngừ lập trình sau dịch mã đích (mã máy) mà máy tính hiểu thực thi Hai khía cạnh cần thiết đổ lộp trình tìm giải thuật cho hài tốn hiếu ngơn ngữ lập trinh để có thê chuyên từ giải thuật sang mã chưưng trình Đối với người lập trình thường làm việc với toán đơn giàn giải thuật, chù yếu mang tính minh họa cho việc thể bàng ngơn ngữ lập trình Cuốn sách có mục tiêu giới thiệu ngơn ngừ lộp trình Java cho người bát đầu học lập trình Java ngơn ngừ lập trình thơng dụng Một đặc điểm bột cùa ngơn ngừ Java chương trình viết bang Java chạy nhiều tàng khác nhau, vi có mặt hầu hết mơi trường máy tính với loại ứng dụng khác hệ thống nhúng, phần mềm thict bị di động, phần mềm trcn Web, Hơn nữa, Java ngơn ngữ có thư viện đồ sộ, cập nhật nhũng công nghệ tối ưu cho việc lập trình Vì nhu cầu tìm hiểu, học ngơn ngừ Java ngày lớn, khơng cộng đong lập trình chuycn nghiệp mà cho nhiều đói tượng khác Thơng thường Java không dược chọn làm ngôn ngừ cho nguời bắt đầu học lập trình Việc dạy ngơn ngừ Java cho người bắt đâu lập trình cách tư phù hợp với tốc độ phát triển nhanh chóng cùa cơng nghệ thơng tin ngày nay, cho phép người học có ihể tiếp cận ngơn ngữ đại, tắt đón đầu cơng nghệ LÂP TRÌNH Cơ BẢN VỚI JAVA 12 Việc thiết kế nội dung ngôn ngữ Java cho người lập trinh công việc không dơn giản Ngơn ngừ Java ngơn ngữ hồn tồn hướng đối tượng, tức từ ví dụ đơn giản nhât dă phải tiếp xúc với khái niệm khó lớp , đổi lượng, phương thức Vì vậy, sách này, từ chương đến chương giới thiệu cho khái niệm ngơn ngừ lập trình bậc cao kiểu dừ liệu, biến, biểu thức cúc toán tử, cấu trúc điều kiện lặp Một số kiến thức khác có sứ dụng khái niệm lớp vào/ra , xây dựng mã chương trình lớp người học tạm chấp nhận để hiểu ví dụ thực hành tập Tiếp theo từ chương giới thiệu cách hệ thống khái niệm lập trình hướng đối tượng Java, từ dó nắm cấu trúc phức tạp lứp vào/ra, màng, lớp xù lý xâu, lớp thao tác tệp Với tiếp cận vậy, chúng tơi chia nội dung giáo trình thành chương, mồi chương trình bày lý thuyết loại cú pháp ngôn ngữ, ý nghĩa, cách sử dụng ví dụ minh hợa Cuối chương tập dể người hục tổng kết lại nội dung học vận dụng giải toán thực tế Cấu trúc cùa giáo trình sau: ♦ Chương giới thiệu tổng quan khái niệm lập trình, ngơn ngừ lập trình, mơi trường lập trinh Các đặc điểm lịch sử phát triển ngôn ngừ Java dưực giới thiệu Cuối chương số ví dụ đơn giản để có hình dung ban đầu chương trình viết bàng ngơn ngừ Java ♦ Chương trình bày khái niệm cùa ngơn ngữ lập trình phép tốn bản, cụ thể ngôn ngữ Java: tập ký tự, từ tố, biến, hàng, từ khóa, kiểu dừ liệu tốn từ ♦ Chương trình bày cấu trúc rẽ nhánh cấu trúc lặp ngơn ngừ lập trình Java Đây cú pháp thiếu ngôn ngữ lập trình bậc cao, giúp người sử dụng xây dựng chương trinh có cấu trúc, giải toán phức tạp Chương XÂU KÝ TỤ Giói thiệu Ngồi kiểu dừ liệu số nguyên, số thực, ký tự, kiểu dừ liệu khác mà chương trình Java hay SI dụng kiểu xâu ký tự Thư viện chuân Java cung cấp lớp String giúp thao tác với xâu ký tự Mỗi xâu ký tự, ví dụ “abc” đoi tưọrng thuộc lóp String Lớp String hỗ trợ phương thức kiểm tra tồn cùa ký tự xâu, nối hai xâu, so sánh xâu, tìm kiỉm xâu, trích chọn xâu con, tạo cùa xâu với ký lự đưrc chuyển sang kiểu chữ hoa hay kiểu chừ thường Lớp String Java hỗ trợ hon 50 phương thức giúp hỗ trợ hiệu việc xử lý xiu ký tự Java Phần bên trình bày chi tiết lớp String Java Mảng ký tự Chú ý, mồi xâu ký tự hình dung màng (array) có phần từ dạng sở char Tuy nhiên điểm khác biệt cc bủn xâu ký tự mảng char thêm/bớt ký tự cho xâu (thông qua phương thức cùa lớp String), tức thay đói độ dài xâu ký tự, thay đổi độ dài ;ùa màng char (sau mảng đưực dịnh nghĩa) hgồi ra, lớp String Java hồ trợ phương thức hữu ích để !àm việc với xâu ký tự, mảng char người dùng si phải tự viết phương thức để thao tác Lớp String Java cúng hỗ trợ phương thức để chuyển đổi xâu ký tự màng char Vì vậy, thực tế, thao tác xâu, người ta thường dùng lớp String LÂP TRÌNH Cơ BẢN VỚI JAVA 162 Một lưu ý mảng char, dùng thuộc tính length để xác định độ dài xâu, điều khác C/C++ mộtt xâu ký tự có ký hiệu kết thúc xâu Lóp String Lớp String đại diện cho xâu ký tự Java Chúng ta c ó thể tạo khởi tạo String theo cách sau: Phương thức khởi tạo Mô tà String s1 = new StringO; Khởi tạo s1 xâu rỗng String s2 = new String(“Java Programming"); Khởi tạo s2 xâu “Java Programming" char chQ = {‘AVBVCVDVE’}; String S3 = new String(ch); Khởi tạo s3 từ mảng ký tự “ABCDE” char chO = {‘A’/B '/C ’/D ’/E ’}; String s4 = new String(ch,0,2); Khởi tạo s4 phần mảng c;ác ký tự Bảng 8.1 Các phương thức khởi tạo lớp String Ví dụ 8.1 Sử dụng phương thức khởi tạo lớp String public class StringConstructors { public static void main(String a r g s []) { char charArrayn = { 'b ', 'i', 'd\ *a 1, V lu 'r ', 't 1, 'h', ' ", string s = new S t r i n g ("hello"); // dùng phương thức khởi tạo String s = new S t r i n g O ; String s2 = new String(s); String s = new s t r i n g (charArray); String s4 = new s t r i n g (charArray, 6, 3); System.out.printf("si = %s\ns2 = %s\ns3 = %s\ns4 = %s\n", sl, } } s2, s 3, s )/ CIƯƠNG XAU KÝ Tự 163 Kết chạy chương trình: sl = s2 = hello s3 38 birth day s4 = day Lớp String cung cấp phương thức cho phép thực thio tác với xâu Phần bên trình bày phương thức thường ding, dược phân loại theo chức 3.' Các phương thức: length, char A t getChars - Phương thức length : trả độ dài cùa xâu - Phương thức charAt: trả ký tự vị trí xác định xâu - Phương thức geíChars : trả mảng ký tự xâu Ví dụ 8.2 Sừ dụng phương thức length , charAt geíChars public class S t ringMiscellaneous { public static void main(String args[]) { String si = "hello there"; char charArrayt] = new chart ]; System.out.p r i n t f ("si: %s", si) ; // kiềm tra độ dài xâu, dùng phưong thức length System.o u t p r i n t f ("\nLength of s i : s i l ength()); %d", System.out.p r i n t ("\nThe string reversed is: for (int count = si.length count ) "); - 1; count >= 0; // xác định ký tự vị tri count System.out.printf ("%s ", s l charAt(count)); // sử dụng phưong thức getchars s 1.g e t c h a r s (0, 5, charArray, 0) ; System.o u t p r i n t ("\nThe character array is: for (char character: charArray) System.out.print(character); Sys t e m o u t p r i n t I n (); } } "); LẤP 164 t r ìn h c b n v i j a v a Kết quà chạy chương trình: sl: hello there Length of si: 11 The string reversed is: e r e h t o l l e h The character array is: hello Giống mảng, xâu tự biết độ dài chúng Đe biết độ dài cùa xâu, ta phải truy cập phương thức length Ví dụ sử dụng phương thức getChars để copy ký tự xâu màng ký tự Tham số chi số bắt đầu xâu copy Tham số thứ chi số ký tự cuối copy xâu Tham số thứ xác định mảng ký tự mà ký tự xâu copy sang Tham số cuối chi số mảng ký tự mà ký tự xâu chuyển đến 3.2 So sánh xâu Mục đích cùa việc so sánh xâu lớp String để xác định xâu có giống khơng thơng qua phương thức equals equalsIgnoreCase Ngồi so sánh xâu dùng dể xác định xâu đứng trước/sau trường hợp phải xếp xâu theo thứ tự bảng chữ thông qua phương thức compareTo compareToIgtioreCase Các xàu sáp xếp dựũ trẽn thứ lự báng mã Unicode cùa ký lự cùa xàu Dể so sánh phần cùa xâu (xâu con) dùng phirang thức regionMatches Ví dụ 8.3 Sừ dụng phương thức: equals, equalsIgnorecase, compareTo regionMaíches public class StringCompare { public static void main(String args[]) { String si = new s t r i n g ("helloM ); String s2 = "goodbye"; String s3 = "Happy Birthday"; String s = "happy birthday”; 165 CHƯONì XẨU KỸ Tự S y s t e m o u t p r i n t f ("s1 = %s\ns2 - %s\ns3 = %s\ns4 = %s\n\n", sl, s2, s3, s4); // kiềm tra phương thúc equals if (s i e q u a l s ("hello”)) S y s t e m o u t print In (Msl equals \ " h e l l o V " ) ; else S y s t e m o u t println ("si does not equal \ ”hello\ ); // kiềm tra toán từ == if (si == "hello") S y s t e m o u t print In (Msl is the same object as V'hellcA ); else System.out.print In ("si is not the same object as \"hello\,,H) ; // kiểm tra phương thức equalsIgnoreCase if (s equalsIgnoreCase(s4 ) ) System.o u t printf ("%s equals %s with case ignored\n",s , s ); else S y s t e m o u t p r i n t I n ("s3 does not equal s M); // kiềm tra phương thức compareTo S y s t e m o u t p r i n t f ("\ns1.compareTo(s2 ) is %d", s l compareTo(s2)); S y s t e m o u t p r i n t f ("\ns2.compareTo(s 1) is %d", s compareT o (s l )); System.o u t p r i n t f ("\ns3.compareTo(s4 ) is %d", s compareTo(s ) ) ỉ System.o u t p r i n t f ("\ns4.compareTo(s3) is %d", s compareTo(s3 ))/ System.out.pr i n t f ("\ns3.compareToIgnoreCase (s4) is %d", s compareToIgnoreCase(s4)); // kiểm tra phuong thúc regionMatches if (s3.regionMatches(0, s4, 0, 5)) System.out.println("First characters of s3 and s4 match”); else System.out.p r i n t l n ("First characters of s3 and s4 not match"); LẤP 166 if (s3 regionMatches{true, t r ìn h c o b n v i j a v a 0, s4, 0, 5)) System.out.p r i n t l n ("First characters of s and s4 match with case ignored"); else System.out.p r i n t l n ("First characters of s and s4 not match with case ignored "); } > Kết chạy chương trình: s = hello s2 = goodbye s3 = Happy Birthday s = happy birthday si equals "hello” si is not the same object as "hello" Happy Birthday equals happy birthday with case ignored s 1.c o m p a r e T o (s ) is s c o m p a r e T o (s i ) is -1 s compareTo(s4) is -32 s c o m p a r e T o (s ) is 32 s compareToIgnoreCase(s ) is First characters of s and s not match First characters of s3 and s4 match with case ignored 3.3 Tim kiếm xâu Việc tìm kiếm xuất cùa ký tự tập hợp ký tự xâu thường sử dụng chương trinh xừ lý vãn Công việc thực thông qua phương thức indexOf lasílndexOf cùa lớp String Ví dụ 8.4 Sừ dụng phương thức tìm kiếm với xâu public class StringlndexMethods { public static void main(String args[]) C HƯ0N3 XAU KỸ Tự { String letters = "abcdefghijklmabcdefghijklm"; // tìm vị tri xuất ký tự xâu System.o u t p r i n t f ("'c is located at index %d\n", letters.indexOf('c ')); S y s t e m o u t p r i n t f ("’a ' is located at index %d\n", letters.indexOf('a ', 1)); S y s t e m o u t p r i n t f ("1$ is located at index 'td\n\n", letters indexOf ('$’)); // tìm vị tri xuất cuối ký tự xâu S y s t e m o u t p r i n t f ("Last 'c' is located at index %d\n", letters.lastIndexOf('c ')) ; S y s t e m o u t p r i n t f ("Last 'a' is located at index %d\n", letters.lastIndexOf('a 1, 25)); S y s t e m o u t p r i n t f ("Last '$' is located at index %d\n\n", letters.lastlndexOf('$')); // tìm vị tri x/h xâu xâu khác System.o u t p r i n t f (" \ "def\" is located at index %d\n", letters.indexOf("def") ) ; S y s t e m o u t p r i n t f ("\"def\" is located at index %d\n", letters.indexOf("def\ 7)) ; S y s t e m o u t p r i n t f ("\"hello\" is located at index %d\n\nM, letters indexOf ("hello1') ) ; // tìm vị tri x/h cuối xâu xâu khác S y s t e m o u t p r i n t f ("Last \”def\" is located at index %d\nM, letters.lastIndexOf("def")); System, o u t print f ("Last V' d e f V is located at index %d\n", letters.lastIndexOf("def", 25)); System.out printf (’’Last \Mhello\M is located at index %d\n", letters.lastIndexOf("hello”)); } } t chạy chương trình: 'c' is located at index 'a' is located at index 13 '$' is located at index -1 Last 'c' is located at index 15 Last 'a' is located at index 13 Last is located at index -1 LẬP TRÌNH CO BẢN VỚI JAVA 168 "def" is located at index "def" is located at index 16 "hello" is located at index “ Last "def" is located at index 16 Last "def" is located at index 16 Last "hello" is located at index -1 3.4 Trích rút xâu Lớp String cung cấp phương thức substring cho phcp trích rút xâu từ xâu Ví dụ 8.5 Sử dụng phương thức substring public class substring { public static void main(String a r g s []) { String letters = "abcdefghijklmabcdefghijklm"; // sử dụng phương thức substring System.o u t p r i n t f ("Substring from index 20 to end is \”%s\M\n", letters.s u b s t r i n g (20)); System.out.printf ("%s \''%s\"\nM, ’’Substring from index up to, but not including is", letters.substring(3, 6)); } } Ket quà chạy chương trình: Substring from index 20 to end is "hijklm" Substring from index up to, is "def" but not including 3.5 Ghép xâu Phương thức concat cho phép nối hai đối tượng String trà Về xâu chứa ký tự từ hai xâu gốc ban đầu Ví dụ 8.6 Sử dụng phương thức ghép/nối xâu 169 CHƯƠM3 XAU KÝ Tự public class StringConcatenation { public static void main(String args []) { String si = new S t r i n g ("Happy "); String s2 = new s t r i n g (MBirthday" ) ; S y s t e m o u t printf ("si = %s\ns2 = %s\n\n", si, s ) ; S y s t e m o u t p r i n t f ("Result of s 1.concat (s ) = %s\n",s 1.c o n c a t (s )); S y s t e m o u t printf ("s1 after concatenation = %s\n", si); } } Kết quà chạy chương trình: sl = Happy s2 = Birthday Result of s 1.c o n c a t (s ) = Happy Birthday si after concatenation = Happy 3.6 thương thức chuyển sang đối tượng String Môi đôi tượng ngơn ngừ lập trình Java đêu có phương thức toStrinỉ, cho phép biểu diễn đối tượng dạng xâu Tuy nhicn, kỹ thuit không sử dụng với kiểu liệu sở, chúng thơng có phương thức Lớp String hỗ trợ phương thức valueOf (pliưorg thức tĩnh) nhận tham số có kiểu cư sở chuyển đổi sang đci tưựng String Ví dụ 8.7 Sừ dụng phương thức valueOf public class Str ingValueOf { public static void main(String args[]) { char charArray[] = { 'a', 'bf, fc', }; boolean booleanValue = true; char characterValue = 'Z'; int integerValue = 7; 1d 1, 'e', *f • l a p t r ìn h c v ó 170 JAVA long longValue = 10000000000L; float floatValue = 2.5f; double doubleValue = 33.333/ Object objectRef = "hello"; System, o u t print f ("char array = % s \ n ,'/ S t r i n g v a l u e O f (charArray)); S yste m o u t p r i n t f ("part of char array = %s\n", S t r i n g v a l u e O f (charArray,3,3)); System.out.print f ("boolean=%s\nM, String valueOf (booleanValue) ); System.out.printf("char = %s\n", String.valueOf(characterValue)); System.out.printf("int = %s\n", String.valueOf(integerValue)); S y s t e m o u t p r i n t f ("long = %s\n", S t r i n g v a l u e O f (longValue)); System.out.printf("float = %s\n", String.valueOf(floatValue)); System.out.printf("double = %s\n", String.valueOf(doubleValue)); System, o u t printf (’’Object = %s", S t r i n g valueOf(objectRef)); } } Kết quà chạy chương trình: char array = abcdef part of char array = def boolean = true char = z int = long = 10000000000 float = 2.5 double = 33.333 Object = hello 3.7 Một số phương thức khác Ngồi số phương thức xử lý xâu thơng dụng trình bày trên, lớp s t r i n g cung cấp số phương thức khác thay {replace), đổi kiểu ký tự ( toLowerCase, toUpperCase), cắt bò CHƯƠN3 X A U K Ỹ TỰ 171 khoảng tráng {trim), chuyển xâu sang mảng ký tự ( toCh.irArray), kiểm tra ký tự đầu xâu (startsWith), kiểm tra ký tự cuối xâu (endsWith), kiểm tra ký tự xâu ( contains) v.v Ví dụ 8.8 Sừ dụng phương thức: replace, toLowerCase, toUpp.’rCase, trim, toCharArray, startsWith, endsWith, contains public class StringMiscellaneous2 { public static void main(String args[]) { String si =new S t r i n g ("hello"); String s2 =new S t r i n g ("GOODBYE" ) ; String s =new string (" spaces "); System.out.printf("si = %s\ns2 = %s\ns3 = %s\n\n", si, s2, S3); // sù dụng phưong thức thay System.o u t p r i n t f ("Replace (replace) '1' with 'L' in si: %s\n\n", s i r e p l a c e ('11, 'L ')); // sử dụng phưong thức đồi kiều chữ: hoa->thường vả ngưọc lại System, out printf (Hsl.toƯpperCase () = l s \ r ì ' , s1.toưpperCase()); System, out printf ("s2.toLowerCase = %s\n\n", s2.toLowerCase()); // sử dụng phương thúc trim System.out printf ("s3 after trim = \"%s\,,\n\n”/ s3.trim()); // sử dụng phương thức chuyến xâu sang mảng ký tự char charArrayt] = s l toCharArray() ; System.o u t p r i n t (nsl as a character array = "); for (char character: charArray) S y s t e m o u t print(character); S y s t e m o u t p r i n t I n () ; } } Kit chạy chương trình: sl = hello s2 = GOODBYE LẬP TRlNH CO BẢN VỚI JA VA 172 s3 = spaces Replace '1* with 'L' in si: heLLo s i toUpperCase() = HELLO s toLowerCase() = goodbye s after trim = "spaces" si as a character array = hello si = hello starts with s2 = GOOBYE ends with s3 = spaces contains 'he': 'BY': ' sp': true false true Lóp tách từ tố Rất nhiều thao tác xử lý văn yêu cầu chức chia nhỏ văn thành phần nhỏ hon gọi từ tố (token) dựa dấu phân tách cụ thể ký tự kết thúc Ký tự phân cách thường gặp dấu cách trắng Phương thức String.split(xâ u, biểu_thức_chính_quy) cho phép sử dụng biểu thức quy để định nghĩa dấu phân cách Java cung cấp số lớp hỗ trợ việc xử lý StringTokenizer cho xâu, StreamTokenizer cho file lớp Scanner cho file sử dụng biểu thức quy làm dấu phân cách Các đối tượng thuộc lớp StringTokenizer khởi tạo cách phụ thuộc vào tập tham số Tham số xâu vàn nguồn Cách khởi tạo thứ sử dụng tham số đàu tiên ký tự mặc định dấu cách trấng Nếu tham số thứ hai truyền vào, chương trình gán tập ký tự phân cách Lưu ý ta cần sử dụng ký tự \ xâu chứa ký tự “ ký tự phân cách không nhập vào từ bàn phím (ví dụ \t) Trong trường hợp tham số thứ truyền vào có giá trị true, dấu phân cách trả token Giá trị mặc định cùa tham số thứ ba có giá trị false Ví dụ 8.9 : Sử dụng lớp StringTokenizer import java.util.*; public class Test { public static void main(String args[]) 173 CHƯƠhG XAU KÝ T ự ( int idx=0; int tokenCount; String w o r d s []=new string [500]; String message="The text of the message to be s c a n n e d "; StringTokenizer st=new StringTokenizer(message); tokenCount=st.countTokens(); S y s t e m o u t print I n ("Number of tokens = " + tokenCount); while get ? (st.hasMoreTokens()) // is there stuff to { words[idx] - S t nextToken(); idx++; } for (idx=0;idx