1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng ngôn ngữ lập trình Java

179 567 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 179
Dung lượng 1,82 MB

Nội dung

Khi xây dựng một lớp, thực chất bạn đang tạo ra một m ột kiểu dữ liệu.. Biên so n: Nguy n Th Đi u Page 29 - char charAtint index Phương thức này trả về một ký tự tại vị trí index tron

Trang 1

Biên so n: Nguy n Th Đi u Page 1

M C L C

CH NG 1 GI I THI U T NG QUAN V NGÔN NG L P TRÌNH JAVA 6

1 L ch s ra đ i và phát triển c a Java 6

2 M t s đặc tr ng c a Java 6

2.1 Đ n gi n 7

2.2 H ng đ i t ng 7

2.3 Đ c l p v i h n n 7

2.4 M nh m 7

2.5 H tr l p trình đa tuy n 8

2.6 Phân tán 8

2.7 H tr Internet 8

2.8 Thông d ch 8

3 Các kiểu ng dụng Java 8

3.1 ng dụng Applets 8

3.2 ng dụng dòng l nh (console) 9

3.3 ng dụng đ họa(Window form) 9

3.4 JSP/Servlet 9

3.5 ng dụng c s d li u 9

3.6 ng dụng m ng 9

3.7 ng dụng nhi u tầng(multi-tier) 9

3.8 ng dụng cho các thi t b di đ ng 9

4 Máy o Java (JVM-Java Virtual Machine) 9

5 B công cụ phát triển JDK (Java Development Kit) 10

6 Java Core API 12

7 Ch ng trình Java đầu tiên 13

7.1 C u trúc ch ng trình Java 13

7.2 Ch ng trình Java đầu tiên 15

7.3 Biên d ch và ch y ch ng trình 15

CH NG 2 L P TRỊNH H NG Đ I T NG TRONG JAVA 17

BÀI 1 N N T NG L P TRÌNH JAVA 17

1 T khóa c a Java 17

2 Đ nh danh trong Java (tên) 19

3 Chú thích trong ch ng trình 20

4 Kiểu d li u 20

4.1 D li u kiểu nguyên thuỷ 20

4.2 Kiểu d li u tham chi u (reference) 21

4.3 Ép kiểu (Type casting) 21

5 Bi n, m ng và hằng trong Java 22

5.1 Khai báo bi n 22

5.2 Khai báo m ng 22

Trang 2

Biên so n: Nguy n Th Đi u Page 2

5.2.1 M ng m t chi u 22

5.2.2 M ng nhi u chi u 26

5.3 Xâu ký tự 28

5.3.1 L p String 28

5.3.2 L p StringBuffer 31

5.3.3 L p StringTokenizer 34

BÀI 2 CÁC C U TRÚC L P TRÌNH 37

1 C u trúc r nhánh 37

1.1 Phát biểu if 37

1.2 Biểu th c đi u ki n 37

1.3 C u trúc switch 38

2 C u trúc lặp while và do-while 39

2.1 Lặp kiểm tra đi u ki n tr c 39

2.2 Lặp kiểm tra đi u ki n sau 40

3 C u trúc for 41

4 L nh break và continue 43

BÀI 3 L P TRỊNH H NG Đ I T NG TRONG JAVA 46

1 Đ nh nghĩa l p 47

1.1 Khai báo l p 47

1.1.1 Khai báo thu c tính 49

1.1.2 Khai báo ph ng th c 50

1.2 Chi ti t v khai báo m t ph ng th c 51

1.2.1 T ng quát m t ph ng th c đ c khai báo nh sau 51

1.2.2 Nh n giá tr tr v t ph ng th c 52

1.2.3 Truy n tham s cho ph ng th c 52

1.2.4 Thân c a ph ng th c 54

2 S dụng l p 54

2.1 Khai báo m t bi n, m ng đ i t ng 54

2.2 Truy xu t t i các thành phần c a l p 55

3 Ph ng th c t o dựng (constructor) 55

3.1 Công dụng 55

3.2 Cách vi t hàm t o 55

3.2.1 Đặc điểm c a ph ng th c t o dựng 55

3.2.2 Hàm t o mặc đ nh 56

3.2.3 Gọi hàm t o t hàm t o 57

3.3 Kh i kh i đầu vô danh và kh i kh i đầu tĩnh 58

3.3.1 Kh i vô danh 58

3.3.2 Kh i kh i đầu tĩnh 59

4 Dọn dẹp: k t thúc và thu rác 60

4.1 Ph ng th c finalize 60

Trang 3

Biên so n: Nguy n Th Đi u Page 3

4.2 C ch gom rác c a java 61

5 T khóa this 61

6 Đi u khiển vi c truy c p đ n các thành viên c a m t l p 61

6.1 Các thành phần private 62

6.2 Các thành thành phần protected 62

6.3 Các thành phần public 63

6.4 Các thành phần có m c truy xu t gói 63

7 N p ch ng ph ng th c 63

7.1 Khái ni m v ph ng th c b i t i 63

7.2 Yêu cầu c a các ph ng th c b i t i 64

BÀI 4 K TH A (INHERITANCE), ĐA HỊNH 65

1 L p c s và l p d n xu t 65

2 Cách xây dựng l p d n xu t 65

3 Th a k các thu c tính 65

4 Th a k ph ng th c 65

5 Ph ng th c kh i t o c a l p c s 65

5.1 Tr t tự kh i đầu 68

5.2 Tr t tự dọn dẹp 68

6 Ghi đè ph ng th c (Override) 68

7 T khoá final 69

7.1 Thu c tính final 69

7.2 Đ i s final 70

7.3 Ph ng th c final 70

7.4 L p final 70

8 L p c s tr u t ng 71

9 Đa hình thái 71

BÀI 5 GIAO DI N, L P TRONG, GÓI 73

1 Giao di n (Interface) 73

1.1 Phần khai báo c a giao di n 73

1.2 Phần thân 74

1.3 Triển khai giao di n 74

2 L p trong 75

CH NG 3 L P TRỊNH ĐA TUY N(MULTITHREAD) 77

L P TRÌNH SOCKET 77

BÀI 1 L P TRỊNH ĐA TUY N 77

1 Các ki n th c liên quan 77

1.1 Ti n trình ( process) 77

1.2 Tiểu trình ( thread ) 77

1.3 H đi u hƠnh đ n nhi m, đa nhi m 77

1.4 Các tr ng thái c a ti n trình 78

Trang 4

Biên so n: Nguy n Th Đi u Page 4

1.5 Mi n găng ( Critical Section ) 78

1.6 Khoá ch t (deadlock) 78

2 L p trình đa tuy n trong Java 79

2.1 L p Thread 79

2.2 Vòng đ i c a Thread 82

2.3 Lu ng ch y ngầm (deamon) 82

2.4 Giao di n Runnable 82

2.5 Thi t l p đ u tiên cho tuy n 83

2.6 Nhóm tuy n (Thread Group) 84

2.7 Đ ng b các tuy n thi hành 84

BÀI 2 L P TRÌNH SOCKET 86

1 Các ki n th c liên quan 86

1.1 Gi i thi u Socket 86

1.2 L p trình Socket trong java 87

2 Kh o sát m t s l p trong gói java.net 87

2.1 L p InetAddress 87

2.2 L p URL và URI 93

2.3 L p Socket 101

2.3.1 M t s hàm t o c a l p Socket 102

2.3.2 L y v thông tin gắn v i Socket 103

2.3.3 Đóng Socket 106

2.3.4 Truy n trong ch đ haft duplex 107

2.4 L p ServerSocket 108

2.4.1 M t s hàm t o c a l p ServerSocket 108

2.4.2 Ch p nh n vƠ đóng k t n i 111

2.5 L p DatagramSocket 113

2.6 L p DatagramPacket 113

3 TCP Socket 113

CH NG 4 CÔNG NGH JSP/SERVLET VÀ L P TRÌNH K T N I C S D LI U TRONG JAVA 133

1 Công ngh Jsp/Servlet 133

1.1 Gi i thi u 133

1.2 So sánh JSP/Servlet và CGI, ASP, ISAPI 133

1.3 Servlet là gì 134

1.3.1 Gi i pháp v i Servlet 135

1.3.2 Môi tr ng runtime c a servlet 135

1.3.3 Giao ti p vƠ vòng đ i c a servlet 136

1.3.4 Các đ i t ng request và response 137

1.3.5 D li u chia sẻ và c đ nh (Persistent and shared data) 141

1.3.6 Các thu c tính ServletContext 143

Trang 5

Biên so n: Nguy n Th Đi u Page 5

1.3.7 Các thu c tính và tài nguyên yêu cầu (Request attributes and resources) 144

1.3.8 Đa tuy n (Multithreading) 145

2 Truy c p c s d li u trong java 146

2.1 T ng quan 146

2.2 Các l p trong JDBC API dùng để truy c p CSDL 146

2.2.1 M t s giao di n và l p trong gói java.sql 146

2.2.2 M t s giao di n và l p trong gói javax.sql 147

2.3 K t n i CSDL v i JDBC 147

2.4 T ng tác v i CSDL 152

2.4.1 T o ra m t JDBC Statements 152

2.4.2 S dụng đ i t ng Prepared Statements 161

2.5 Gọi th tục l u tr bằng JDBC 162

2.6 Qu n lý giao d ch 162

CH NG 5 L P TRÌNH THI T B DI Đ NG V I J2ME 163

1 Gi i thi u v J2ME và l p trình cho thi t b di đ ng 163

2 Ki n trúc c a J2ME 164

2.1 Gi i thi u các thành phần trong n n t ng J2ME 164

2.2 Đ nh nghĩa v Profile 165

3 L p trình v i J2ME 166

3.1 MIDlet ậ Vòng đ i c a m t MIDlet 166

3.2 Đ i t ng Display 169

3.3 Đ i t ng Displayable 169

3.4 Giao di n ng i dùng c p cao 169

3.4.1 Đ i t ng Display, Displayable và Screens 169

3.4.2 Thành phần Form và Items 170

3.4.3 Thành phần List, Textbox, Alert, và Ticker 171

4 Ch ng trình J2ME đầu tiên 171

4.1 Thi t l p môi tr ng l p trình 171

4.2 T o project 172

4.2.1 T o ng dụng MIDP Using Source Editor 172

4.2.2 T o ng dụng MIDP Using the Visual Mobile Designer 173

4.3 Đóng gói vƠ t i ng dụng j2me vƠo đi n tho i 174

4.3.1 Đóng gói ng dụng 174

4.3.2 T i ng dụng vào thi t b di đ ng qua Internet 177

TÀI LI U THAM KH O 179

Trang 6

Biên so n: Nguy n Th Đi u Page 6

 Java Core API

 Ch ng trình Java đầu tiên

1 L ch s ra đ i và phát triển của Java

Năm 1991, m t nhóm kỹ s c a Sun Microsystems mu n l p trình để điểu khiển các thi t b điển t nh tivi, t l nh, máy giặt, lò n ng,… Ban đầu họ đ nh dùng C/C++ nh ng trình biên d ch c a C/C++ l i phụ thu c vào t ng lo i CPU Do đó họ bắt tay vào xây dựng m t ngôn ng ch y nhanh, gọn, hi u qu , đ c l p v i thi t b và ngôn

ng có tên là OAK (Oak- là cây s i mọc phía sau văn phòng c a nhà thi t k chính ông Jame Gosling sau này ông th y rằng đư có ngôn ng l p trình tên Oak r i, do v y nhóm thi t k quy t đ nh đ i tên, “Java” lƠ cái tên đ c chọn, Java là tên c a m t quán cafe mà nhóm thi t k java hay đ n đó u ng)

Ngôn ng l p trình Java đ c Sun Microsystems đ a ra gi i thi u vào tháng 6 năm 1995 vƠ đư nhanh chóng tr thành m t ngôn ng l p trình c a các l p trình viên chuyên nghi p Java đ c xây dựng dựa trên n n t ng c a C vƠ C++, nghĩa lƠ Java s

dụng cú pháp c a C vƠ đặc tr ng h ng đ i t ng c a C++ Java là ngôn ng v a biên

d ch v a thông d ch

Ngày nay, Java đ c s dụng r ng rãi, không ch để vi t các ng dụng trên máy

cục b hay trên m ng để xây dựng các trình đi u khiển thi t b di đ ng

Trang 7

Biên so n: Nguy n Th Đi u Page 7

 H tr Internet

 Thông d ch

2.1 Đơn giản

Nh ng ng i thi t k mong mu n phát triển m t ngôn ng d học và quen thu c

v i đa s ng i l p trình Java tựa nh C++, nh ng đư l c b đi các đặc tr ng ph c t p, không cần thi t c a C vƠ C++ nh : thao tác con tr , thao tác đ nh nghĩa ch ng toán t

(operator overloading),… Java không s dụng l nh “goto” cũng nh file header (.h) C u trúc “struct” vƠ “union” cũng đ c lo i b kh i Java Nên có ng i b o Java lƠ “C++ “,

ngụ ý b o java lƠ C++ nh ng đư b đi nh ng th ph c t p, không cần thi t

2.2 Hướng đối tượng

Có thể nói java là ngôn ng l p trình hoƠn toƠn h ng đ i t ng, t t c trong java

đ u là sự v t, đơu đơu cũng lƠ sự v t

2.3 Độc lập với hệ nền

Mục tiêu chính c a các nhà thi t k Java lƠ đ c l p v i h n n hay còn gọi lƠ đ c

l p phần c ng và h đi u hƠnh Đơy lƠ kh năng m t ch ng trình đ c vi t t i m t máy

nh ng có thể ch y đ c b t kỳ đơu

Tính đ c l p v i phần c ng đ c hiểu theo nghĩa m t ch ng trình Java n u ch y đúng trên phần c ng c a m t họ máy nƠo đó thì nó cũng ch y đúng trên t t c các họ máy khác M t ch ng trình ch ch y đúng trên m t s họ máy cụ thể đ c gọi là phụ thu c vào phần c ng

Tính đ c l p v i h đi u hƠnh đ c hiểu theo nghĩa m t ch ng trình Java có thể

ch y đ c trên t t c các h đi u hành M t ch ng trình ch ch y đ c trên m t s h

đi u hƠnh đ c gọi là phụ thu c vào h đi u hành

Các ch ng trình vi t bằng java có thể ch y trên hầu h t các h n n mà không cần

ph i thay đ i gì, đi u nƠy đư đ c nh ng ng i l p trình đặt cho nó m t khẩu hi u ‘viết một lần, chạy mọi nơi’, đi u này là không thể có v i các ngôn ng l p trình khác

Đ i v i các ch ng trình vi t bằng C, C++ hoặc m t ngôn ng nào khác, trình biên d ch s chuyển t p l nh thành mã máy (machine code), hay l nh c a b vi x lý

Nh ng l nh này phụ thu c vào CPU hi n t i trên máy b n Nên khi mu n ch y trên lo i CPU khác, chúng ta ph i biên d ch l i ch ng trình

2.4 Mạnh mẽ

Java là ngôn ng yêu cầu chặt ch v kiểu d li u, vi c ép kiểu tự đ ng b a bãi

c a C, C++ nay đ c h n ch trong Java, đi u nƠy lƠm ch ng trình rõ rƠng, sáng và ít

l i h n Java kiểm tra lúc biên d ch và c trong th i gian thông d ch vì v y Java lo i b

Trang 8

Biên so n: Nguy n Th Đi u Page 8

m t m t s lo i l i l p trình nh t đ nh Java không s dụng con tr và các phép toán con

tr Java kiểm tra t t c các truy nh p đ n m ng, chu i khi thực thi để đ m b o rằng các truy nh p đó không ra ngoƠi gi i h n kích th c

Trong các môi tr ng l p trình truy n th ng, l p trình viên ph i tự mình c p phát

b nh Tr c khi ch ng trình k t thúc thì ph i tự gi i phóng b nh đư c p V n đ n y sinh khi l p trình viên quên gi i phóng b nh đư xin c p tr c đó Trong ch ng trình Java, l p trình viên không ph i b n tơm đ n vi c c p phát b nh Quá trình c p phát, gi i phóng đ c thực hi n tự đ ng, nh d ch vụ thu nhặt nh ng đ i t ng không còn s dụng

m t cách d dƠng, h n th n a vi c đ ng b tƠi nguyên dùng chung trong Java cũng r t

đ ng gi n Đi u này là không thể có đ i v i m t s ngôn ng l p trình khác nh C/C++, pascal …

2.8 Thông dịch

Các ch ng trình Java cần đ c thông d ch tr c khi ch y, m t ch ng trình Java

đ c biên d ch thƠnh mư byte code mư đ c l p v i h n n, ch ng trình thông d ch Java

s ánh x mã byte code này lên m i n n cụ thể, đi u này khi n Java ch m ch p đi phần nào

3 Các ki ểu ng d ng Java

V i Java ta có thể xây dựng các kiểu ng dụng sau:

3.1 ng dụng Applets

Trang 9

Biên so n: Nguy n Th Đi u Page 9

Applet lƠ ch ng trình Java đ c t o ra để s dụng trên Internet thông qua các trình duy t h tr Java nh IE hay Netscape Applet đ c nhúng bên trong trang Web Khi trang Web hiển th trong trình duy t, Applet s đ c t i v và thực thi t i trình duy t

Java thích h p để phát triển ng dụng nhi u l p Applet lƠ ch ng trình đ họa

ch y trên trình duy t t i máy tr m các ng dụng Web, máy tr m g i yêu cầu t i máy

ch Máy ch x lý và g i k t qu tr l i máy tr m Các Java API ch y trên máy ch ch u trách nhi m x lý t i máy ch và tr l i các yêu cầu c a máy tr m Các Java API ch y trên máy ch này m r ng kh năng c a các ng dụng Java API chuẩn Các ng dụng trên máy ch nƠy đ c gọi là các JSP/Servlet hoặc Applet t i máy ch X lý Form c a HTML là cách s dụng đ n gi n nh t c a JSP/Servlet Chúng còn có thể đ c dùng để

x lý d li u, thực thi các giao d ch vƠ th ng đ c thực thi thông qua máy ch Web

3.5 ng d ụng cơ sở dữ liệu

Các ng dụng này s dụng JDBC API để k t n i t i c s d li u Chúng có thể là Applet hay ng dụng, nh ng Applet b gi i h n b i tính b o m t

3.6 ng d ụng mạng

Java là m t ngôn ng r t thích h p cho vi c xây dựng các ng dụng m ng V i th

vi n Socket b n có thể l p trình v i hai giao th c: UDP và TCP

4 Máy o Java (JVM-Java Virtual Machine)

Trang 10

Biên so n: Nguy n Th Đi u Page 10

Máy o là m t phần m m mô ph ng m t máy tính th t (máy tính o) Nó có t p

h p các l nh logic để xác đ nh các ho t đ ng c a máy tính và có m t h đi u hành o

Ng i ta có thể xem nó nh m t máy tính th t (máy tính có phần c ng o, h đi u hành o) Nó thi t l p các l p tr u t ng cho: Phần c ng bên d i, h đi u hƠnh, mư đư biên

Vi c không nh t quán c a phần c ng làm cho máy o ph i s dụng ngăn x p để

l u tr các thông tin sau:

 Các “Frame” ch a các tr ng thái c a các ph ng th c

 Các toán h ng c a mã bytecode

 Các tham s truy n cho ph ng th c

 Các bi n cục b

Khi JVM thực thi mã, m t thanh ghi cục b có tên “Program Counter” đ c s

dụng Thanh ghi này tr t i l nh đang thực hi n Khi cần thi t, có thể thay đ i n i dung thanh ghi để đ i h ng thực thi c a ch ng trình Trong tr ng h p thông th ng thì

t ng l nh m t n i ti p nhau s đ c thực thi

M t khái ni m thông dụng khác trong Java là trình biên d ch “Just In Time-JIT” Các trình duy t thông dụng nh Netscape, IE, NetBeans, Jcreator đ u có JIT bên trong để tăng t c đ thực thi ch ng trình Java Mục đích chính c a JIT là chuyển t p l nh bytecode thành mã máy cụ thể cho t ng lo i CPU Các l nh này s đ c l u tr và s

dụng m i khi gọi đ n

5 B công c phát tri ển JDK (Java Development Kit)

Sun Microsystem đ a ra ngôn ng l p trình Java qua s n phẩm có tên là Java Development Kit (JDK) Ba phiên b n chính là:

 Java 1.0 - S dụng lần đầu vƠo năm 1995

 Java 1.1 ậ ợ a ra năm 1997 v I nhi u u điểm h n phiên b n tr c

o JDK 1.1.4 (Sparkler) 12 tháng 9, 1997

o JDK 1.1.5 (Pumpkin) 3 tháng 12, 1997

Trang 11

Biên so n: Nguy n Th Đi u Page 11

javap [options] classname

d) Công c ụ sinh tài liệu, 'javadoc'

Trang 12

Biên so n: Nguy n Th Đi u Page 12

Ti n ích này cho phép ta t o ra t p HTML dựa trên các l i gi i thích trong mã

ch ng trình (phần nằm trong cặp d u /* */)

Cú pháp:

javadoc [options] sourcecodename.java

e) Chương trình tìm lỗi - Debug, 'jdb’

Cú pháp:

jdb [options] sourcecodename.java

hay

jdb -host -password [options] sourcecodename.java

f) Chương trình xem Applet , 'appletviewer‘

Cú pháp:

appletviewer [options] url

6 Java Core API

Nhơn Java API đ c thay th b i phiên b n JFC 1.1 M t s package thông dụng

Trang 13

Biên so n: Nguy n Th Đi u Page 13

Package này ch a Java DataBase Connectivity (JDBC), dùng để truy xu t c s

d li u quan h nh Oracle, SQL Server,

7 Ch ng trình Java đầu tiên

7.1 Cấu trúc chương trình Java

- M i ng dụng Java bao g m m t hoặc nhi u đ n v biên d ch (m i đ n v biên

d ch là m t t p tin có phần m r ng java)

- M i đ n v biên d ch bao g m m t hoặc nhi u l p

- M i ng dụng đ c l p ph i có duy nh t m t ph ng th c main (điểm bắt đầu c a

Trang 14

Biên so n: Nguy n Th Đi u Page 14

- Bên trong thân c a m i l p ta khai báo các thu c tính, ph ng th c c a l p đó, Java là ngôn ng h ng đ i t ng, do v y mã l nh ph i nằm trong l p nƠo đó M i l nh

đ u đ c k t thúc bằng d u ch m ph y “;”

- Trong ngôn ng Java, l p là m t đ n v m u có ch a d li u và mã l nh liên

quan đ n m t thực thể nƠo đó Khi xây dựng một lớp, thực chất bạn đang tạo ra một

m ột kiểu dữ liệu Kiểu d li u m i nƠy đ c s dụng để xác đ nh các bi n mƠ ta th ng

gọi lƠ “đ i t ng” Đối tượng là các thể hiện (instance) c a lớp T t c các đ i t ng

đ u thu c v m t l p có chung đặc tính và hành vi M i l p xác đ nh m t thực thể, trong khi đó m i đ i t ng là m t thể hi n thực sự

- Khi b n khai báo m t l p, b n cần xác đ nh d li u vƠ các ph ng th c c a l p

đó V c b n m t l p đ c khai báo nh sau:

… public static void main(String args[]){

//điểm bắt đầu của chương trình }

Trang 15

Biên so n: Nguy n Th Đi u Page 15

l p trong đó lƠ l p trong tĩnh “static” vƠ l p trong không tĩnh “non static”

 L p trong tĩnh (static)VISUAL BASIC

L p trong tĩnh đ c đ nh nghĩa v i t khoá “static” L p trong tĩnh có thể truy

nh p vào các thành phần tĩnh c a l p ph nó

 L p trong không tĩnh (non static)

L p bên trong (không ph i là l p trong tĩnh) có thể truy nh p t t c các thành phần

c a l p bao nó, song không thể ng c l i

7.2 Chương trình Java đầu tiên

7.3 Biên d ịch và chạy chương trình

Chu ẩn bị môi trường:

- JRE (Java Runtime Enviroment) môi tr ng thực thi c a java, nó bao g m: JVM (Java Virtual Machine) máy o java vì các ch ng trình java đ c thông d ch và ch y trên máy o java và t p các th vi n cần thi t để ch y các ng dụng java

- B công cụ biên d ch và thông d ch JDK c a Sun Microsystem

Định nghĩa lớp có tên HelloWorld

B ắt đầu đoạn lệnh

Ph ương thức main

Xu ất ra màn hình

K ết thúc đoạn lệnh

Trang 16

Biên so n: Nguy n Th Đi u Page 16

Sau khi cƠi đặt JDK (gi s th mục cƠi đặt là C:\Program files\Java) ta s nh n

Trang 17

Biên so n: Nguy n Th Đi u Page 17

 Đ nh nghĩa tính Đa hình (Polymorphism)

 Giao di n (Interface), l p trong

BÀI 1 N N T NG L P TRÌNH JAVA

1 T khóa c ủa Java

M i ngôn ng l p trình có m t t p các t khoá, ng i l p trình ph i s dụng t khoá theo đúng nghĩa mƠ ng i thi t k ngôn ng đư đ ra, ta không thể đ nh nghĩa l i nghĩa c a các t khoá, nh s dụng nó để đặt tên bi n, hƠm

Sau đây là một số từ khoá thường gặp:

T khóa Mô t

abstract S dụng để khai báo l p, ph ng th c tr u t ng

boolean Kiểu d li u logic

break Đ c s dụng để k t thúc vòng lặp hoặc c u trúc switch

byte kiểu d li u s nguyên

case đ c s dụng trong l n switch

cast Ch a đ c s dụng (để dƠnh cho t ng lai)

catch đ c s dụng trong x lý ngo i l

char kiểu d li u ký tự

Trang 18

Biên so n: Nguy n Th Đi u Page 18

class Dùng để khai báo l p

const Ch a đ c dùng

continue đ c dùng trong vòng lặp để bắt đầu m t vòng lặp m i

default đ c s dụng trong l nh switch

do đ c dùng trong vòng lặp đi u ki n sau

double kiểu d li u s thực

else kh năng lựa chọn th hai trong câu l nh if

extends ch rằng m t l p đự c k th a t m t l p khác

false Gía tr logic

final Dùng để khai báo hằng s , ph ng th c không thể ghi đè, hoặc l p không

implements ch rằng m t l p triển khai t m t giao di n

import Khai báo s dụng th vi n

instanceof kiểm tra m t đ i t ng có ph i là m t thể hi n c a l p hay không

interface s dụng để khai báo giao di n

long kiểu s nguyên

native Khai báo ph ng th c đ c vi t bằng ngôn ng biên d ch C++

Trang 19

Biên so n: Nguy n Th Đi u Page 19

return Quay t ph ng th c v ch gọi nó

short kiểu s nguyên

static Dùng để khai báo bi n, thu c tính tĩnh

super Truy xu t đ n l p cha

switch l nh lựa chọn

synchronized m t ph ng th c đ c quy n truy xu t trên m t đ i t ng

this Ám ch chính l p đó

throw Ném ra ngo i l

throws Khai báo ph ng th c ném ra ngo i l

true Giá tr logic

try s dụng để bắt ngo i l

void Dùng để khai báo m t ph ng th c không tr v giá tr

while Dùng trong c u trúc lặp

B ảng 2.1 Danh mục các từ khóa trong java

2 Đ nh danh trong Java (tên)

Tên dùng để xác đ nh duy nh t m t đ i l ng trong ch ng trình Trong java tên

đ c đặt theo quy tắc sau:

- Tên nên đặt sao cho có thể mô t đ c đ i t ng trong thực t

- Gi ng nh C/C++, java có phơn bi t ch hoa ch th ng

- Trong java ta có thể đặt tên v i đ dài tuỳ ý

- Ta có thể s dụng các kí tự ti ng vi t để đặt tên

Quy ước về đặt tên trong java

Ta nên đặt tên bi n, hằng, l p, ph ng th c sao cho nghĩa c a chúng rõ rƠng, d hiểu, khoa học vƠ mang tính c l qu c t Do java có phơn bi t ch hoa, ch th ng nên ta ph i cẩn th n vƠ chú ý

Trang 20

Biên so n: Nguy n Th Đi u Page 20

Sau đơy lƠ quy c đặt tên trong java (chú ý đơy ch lƠ quy c do v y không

bắt bu c ph i tuơn theo quy c nƠy):

- Đ i v i bi n và ph ng th c thì tên bao gi cũng bắt đầu bằng ký tự th ng, n u tên có nhi u t thì ghép l i thì: ghép t t c các t thành m t, ghi t đầu tiên ch

th ng, vi t hoa kí tự đầu tiên c a m i t theo sau trong tên, ví dụ area, radius, readInteger…

- Đ i v i tên l p, giao di n ta vi t hoa các kí tự đầu tiên c a m i t trong tên, ví dụ

Chú ý: trong java ta có thể đặt chú thích đơu?, cơu tr l i là: đơu có thể đặt

đ c m t d u cách thì đó có thể đặt chú thích

4 Ki ểu d li u

Các ng dụng luôn x lý d li u đầu vƠo vƠ xu t d li u k t qu đầu ra Đầu vƠo, đầu ra, vƠ k t qu c a các quá trình tính toán đ u liên quan đ n d li u Trong môi

tr ng tính toán, d li u đ c phơn l p theo các tiêu chí khác nhau phụ thu c vƠo b n

ch t c a nó m i tiêu chí, d li u có m t tính ch t xác đ nh vƠ có m t kiểu thể hi n riêng bi t

Java cung c p m t vƠi kiểu d li u Chúng đ c h tr trên t t c các n n Ví dụ,

d li u lo i int (integer) c a Java đ c thể hi n bằng 4 bytes trong b nh c a t t c các

lo i máy b t lu n đơu ch y ch ng trình Java B i v y các ch ng trình Java không cần ph i thay đ i khi ch y trên các n n khác nhau

Trong Java kiểu d li u đ c chia thƠnh hai lo i:

 Các kiểu d li u nguyên th y (primitive)

 Các kiểu d li u tham chi u (reference)

4.1 D ữ liệu kiểu nguyên thuỷ

Trang 21

Biên so n: Nguy n Th Đi u Page 21

(ki ểu s nguyên)

short s nguyên 2 byte 16 bit -215 215-1 Short

char kiểu kí tự 2 byte 16 bit Unicode 0 Unicode 216-1 Character

Bảng 2.2 Kiểu dữ liệu nguyên thuỷ

4.2 Ki ểu dữ liệu tham chiếu (reference)

M ng (Array) T p h p các d li u cùng kiểu Ví dụ : tên sinh viên

L p (Class) T p h p các bi n vƠ các ph ng th c.Ví dụ : l p “Sinhviên” ch a

toƠn b các chi ti t c a m t sinh viên vƠ các ph ng th c thực thi trên các chi ti t đó

Giao di n

(Interface)

Là m t l p tr u t ng đ c t o ra cho phép cƠi đặt đa th a k trong Java

Bảng 2.3 Kiểu dữ liệu tham chiếu

4.3 Ép kiểu (Type casting)

Có thể b n s gặp tình hu ng khi c ng m t bi n có d ng integer v i m t bi n có

d ng float Để x lý tình hu ng nƠy, Java s dụng tính năng ép kiểu (type casting) c a

các phần m m tr c đó C, C++ Lúc nƠy m t kiểu d li u s chuyển đ i sang kiểu khác Khi s dụng tính ch t nƠy, b n cần th n trọng vì khi đi u ch nh d li u có thể b sai giá

tr

Đo n mư sau đơy thực hi n phép c ng m t giá tr d u phẩy đ ng (float) v i m t giá tr nguyên (integer)

Trang 22

Biên so n: Nguy n Th Đi u Page 22

float c=34.896751f;

int b = (int)c +10;

Đầu tiên giá tr d u ph y đ ng c đ c đ i thƠnh giá tr nguyên 34 Sau đó nó đ c

c ng v i 10 vƠ k t qu lƠ giá tr 44 đ c l u vƠo b

Sự n i r ng (widening) ậ quá trình lƠm tròn s theo h ng n i r ng không lƠm

m t thông tin v đ l n c a m i giá tr Bi n đ i theo h ng n i r ng chuyển m t giá tr sang m t d ng khác có đ r ng phù h p h n so v i nguyên b n Bi n đ i theo h ng l i thu nh l i (narrowwing) lƠm m t thông tin v đ l n c a giá tr đ c chuyển đ i Chúng không đ c thực hi n khi thực hi n phép gán ví dụ trên giá tr th p phơn sau d u ph y

đ ng trong ph m vi kh i đó, không có ý nghĩa vƠ không đ c phép truy nh p t bên ngoƠi kh i

Vi c khai báo m t bi n bao g m 3 thƠnh phần: kiểu bi n, tên c a nó vƠ giá tr ban đầu đ c gán cho bi n (không bắt bu c) Để khai báo nhi u bi n ta s dụng d u phẩy để phơn cách các bi n, Khi khai báo bi n, luôn nh rằng Java phơn bi t ch th ng vƠ ch

in hoa (case -sensitive)

Cú pháp:

Datatype indentifier [=value] [, indentifier[=value]… ];

Để khai báo m t bi n nguyên (int) có tên lƠ counter dùng để l u giá tr ban đầu lƠ

1, ta có thể thực hi n phát biểu sau đơy:

int counter = 1;

Java có nh ng yêu cầu h n ch đặt tên bi n mƠ b n có thể gán giá tr vƠo Nh ng

h n ch nƠy cũng gi ng các h n ch khi đặt tên cho các đ nh danh mƠ ta đư th o lu n các phần tr c c a ch ng nƠy

5.2 Khai báo mảng

5.2.1 M ảng một chiều

a) Khai báo

Trang 23

Biên so n: Nguy n Th Đi u Page 23

- Khi m ng đ c t o ra thì m i phần t c a m ng s nh n m t giá tr mặc đ nh, quy

tắc kh i t o giá tr cho các phần t c a m ng cũng chính lƠ quy tắc kh i đầu giá tr cho các thu c tính c a đ i t ng, t c là m i phần t c a m ng s nh n giá tr :

int mangInt[]=new int[100];

Ví d 2: Gi s ta có l p SinhVien đư đ c đ nh nghĩa, hưy khai báo m t m ng g m 100

đ i t ng c a l p SinhVien

SinhVien arraySinhVien[]=new SinhVien[100];

Chú ý: Lúc này m i phần t c a m ng arraySinhVien là m t con tr c a l p SinhVien và

hi n gi m i phần t c a m ng đang tr đ n giá tr null Để kh i t o t ng phần t c a

m ng ta ph i lƠm nh sau:

Trang 24

Biên so n: Nguy n Th Đi u Page 24

arraySinhVien[0]=new SinhVien(“sv01”, “Nguyễn Văn An”, “Hưng Yên”);

arraySinhVien[1]=new SinhVien(“sv02”, “Nguyễn Thị Bình”, “Bắc Giang”);

arraySinhVien[99]=new SinhVien(“sv100”, “Đào Thị Mến”, “Hà Nam”);

Ngoài cách khai báo trên Java còn cho phép ta k t h p c khai báo và kh i gán các phần t c a m ng theo cách sau:

int a[]=new int [3];//Khai báo và t ạo ra mảng gồm 3 phần tử

Lúc này các phần t c a m ng lần l t đ c truy xu t nh sau:

- Phần t đầu tiên c a m ng là a[0]

Trang 25

Biên so n: Nguy n Th Đi u Page 25

Tên_m ng.length

Ví d 1: Nh p vào m t m ng và in ra màn hình

class ArrayDemo{

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.print("Nhập số phần tử của mảng:");

int n=sc.nextInt();

//Khai báo m ảng với số phần tử bằng n

int a[]=new int[n];

public static void main(String[] args) {

Scanner sc= new Scanner(System.in);

//Nh ập số phần tử của mảng

System.out.print("Nh ập số phần tử của mảng:");

int n=sc.nextInt();

//Khai báo m ảng với số phần tử bằng n

int a[]=new int[n];

Trang 26

Biên so n: Nguy n Th Đi u Page 26

- Khai báo m t con tr c a m ng 2 chi u

int[][] a; hoặc int a[][];

- Khai báo và t o ra m ng 2 chi u:

int[][] a = new int[2][3]; // Ma tr n g m 2 hàng, 3 c t

- Khai báo và kh i gán giá tr cho các phần t c a m ng 2 chi u:

int a[][]={

{1, 2, 5} //Các phần tử trên hàng thứ nhất {2, 4, 7, 9} //Các phần tử trên hàng thứ hai {1, 7} //Các ph ần tử trên hàng thứ ba

Trang 27

Biên so n: Nguy n Th Đi u Page 27

a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2], a[1][3], a[2][0], a[2][1]

b) Truy xu t đ n phần t m ng nhi u chi u

tên_m ng[ind1][ind2]

Ví d 1: Nh p vào m t ma tr n và in ra màn hình

class MaTran {

public static void main(String[] args) {

Scanner cs = new Scanner(System.in);

//Khai báo m ảng hai chiều gồm sh hàng và sc cột

float a[][] = new float[sh][sc];

//Nhập dữ liệu cho mảng hai chiều

for (int i = 0; i < a.length; i++)

for (int j = 0; j < a[i].length; j++) {

System.out.print("a[" + i + "," + j + "]=");

//Nhập liệu cho phần tử hàng i, cột j

a[i][j] = cs.nextInt();

}

//In mảng hai chiều ra màn hình

for (int i = 0; i < a.length; i++) {

for (int j = 0; j < a[i].length; j++)

Trang 28

Biên so n: Nguy n Th Đi u Page 28

5.3 Xâu ký tự

Vi c x lý các xâu ký tự trong Java đ c h tr b i hai l p String và StringBuffer L ớp String dùng cho những xâu ký tự bất biến, nghĩa là nh ng xâu ch

đọc vƠ sau khi đ c kh i t o giá tr thì n i dung bên trong xâu không thể thay đ i đ c

L p StringBuffer đ c s dụng đ i v i nh ng xâu ký tự đ ng, t c là có thể thay đ i

đ c n i dung bên trong c a xâu

5.3.1 L ớp String

Chu i lƠ m t dưy các ký tự L p String cung c p các ph ng th c để thao tác v i

các chu i Nó cung c p các ph ng th c kh i t o (constructor) khác nhau:

String str1 = new String( );

String str4 = new String(ch,0,2);

//str4 ch a “AB” vì 0- tính t ký tự bắt đầu, 2- là s l ng ký tự kể t ký tự bắt đầu

Toán t “+” đ c s dụng để c ng chu i khác vƠo chu i đang t n t i Toán t “+” nƠy đ c gọi nh lƠ “n i chu i” đơy, n i chu i đ c thực hi n thông qua l p

“StringBuffer” Chúng ta s th o lu n v l p nƠy trong phần sau Ph ng th c “concat( )” c a l p String cũng có thể thực hi n vi c n i chu i Không gi ng nh toán t “+”,

ph ng th c nƠy không th ng xuyên n i hai chu i t i v trí cu i cùng c a chu i đầu tiên Thay vƠo đó, ph ng th c nƠy tr v m t chu i m i, chu i m i đó s ch a giá tr

c a c hai Đi u nƠy có thể đ c gán cho chu i đang t n t i Ví dụ:

String strFirst, strSecond, strFinal;

Trang 29

Biên so n: Nguy n Th Đi u Page 29

- char charAt(int index ) Phương thức này trả về một ký tự tại vị trí index trong chuỗi

Ví dụ:

String name = new String(“Java Language”);

char ch = name.charAt(5);

Bi n “ch” ch a giá tr “L”, t đó v trí các s bắt đầu t 0

- boolean startsWith(String s ) Phương thức này trả về giá trị kiểu logic (Boolean), phụ

thuộc vào chuỗi có bắt đầu với một chuỗi con cụ thể nào đó không

Ví dụ:

String strname = “Java Language”;

boolean flag = strname.startsWith(“Java”);

Bi n “flag” ch a giá tr true

- boolean endsWith(String s ) Phương thức này trả về một giá trị kiểu logic (boolean), phụ thuộc vào chuỗi kết thúc bằng một chuỗi con nào đó không

Ví dụ:

String strname = “Java Language”;

boolean flag = strname.endsWith(“Java”);

Bi n “flag” ch a giá tr false

- String copyValueOf( )

Ph ng th c nƠy tr v m t chu i đ c rút ra t m t m ng ký tự đ c truy n nh

m t đ i s Ph ng th c nƠy cũng l y hai tham s nguyên Tham s đầu tiên ch đ nh v trí t n i các ký tự ph i đ c rút ra, vƠ tham s th hai ch đ nh s ký tự đ c rút ra t

m ng Ví dụ:

char name[] = {‘L’,’a’,’n’,’g’,’u’,’a’,’g’,’e’};

String subname = String copyValueOf(name,5,2);

Bơy gi bi n “subname” ch a chu i “ag”

- char [] toCharArray( )

Ph ng th c nƠy chuyển chu i thƠnh m t m ng ký tự Ví dụ:

String text = new String(“Hello World”);

char textArray[] = text.toCharArray( );

- int indexOf(String sunString )

Ph ng th c nƠy tr v th tự c a m t ký tự nƠo đó, hoặc m t chu i trong ph m vi

m t chu i Các cơu l nh sau biểu di n các cách khác nhau c a vi c s dụng hƠm

String day = new String(“Sunday”);

Trang 30

Biên so n: Nguy n Th Đi u Page 30

int index1 = day.indexOf(‘n’);

//chứa 2

int index2 = day.indexOf(‘z’,2);

//chứa –1 nếu “z” không tìm thấy tại vị trí 2

int index3 = day.indexOf(“Sun”);

//chứa mục 0

- String toUpperCase( )

Ph ng th c nƠy tr v ch hoa c a chu i

String lower = new String(“good morning”);

Ph ng th c nƠy cắt b kho ng trắng hai đầu chu i Hưy th đo n mư sau để th y

sự khác nhau tr c vƠ sau khi cắt b kho ng trắng

String space = new String(“ Spaces “);

System.out.println(space);

System.out.println(space.trim()); //Sau khi cắt bỏ khoảng trắng

- boolean equals(String s)

Ph ng th c nƠy so sánh n i dung c a hai đ i t ng chu i

String name1 = “Java”, name2 = “JAVA”;

boolean flag = name1.equals(name2);

Bi n “flag” ch a giá tr false

- Các phương th c valueOf đ c n p ch ng để cho phép chuyển m t giá tr thƠnh xơu

static String valueOf(Object obj)//Chuy ển một đối tượng thành xâu, bẳng cách gọi đến phương thức toString của đối tượng obj

static String valueOf(char[] characters)//Chuyển m ng các ký tự thành xâu

static String valueOf(boolean b)//Chuy ển một giá trị logic thành xâu, xâu nhận được là

“true” hoặc “false” tương ứng với giá trị true hoặc false của b

static String valueOf(char c)//Chuy ển kí tự thành xâu

static String valueOf(int i)//chuy ển một số nguyên thành xâu

Trang 31

Biên so n: Nguy n Th Đi u Page 31

static String valueOf(long l)//Chuy ển một giá trị long thành xâu

static String valueOf(float f)//chuy ển một giá trị float thành xâu

static String valueOf(double d)//chuy ển một giá trị double thành xâu

5.3.2 L ớp StringBuffer

L p StringBuffer cung c p các ph ng th c khác nhau để thao tác m t đ i t ng

d ng chu i Các đ i t ng c a l p nƠy r t m m dẻo, đó lƠ các ký tự vƠ các chu i có thể

đ c chèn vƠo gi a đ i t ng StringBuffer, hoặc n i thêm d li u vƠo t i v trí cu i L p nƠy cung c p nhi u ph ng th c kh i t o Ch ng trình sau minh ho cách s dụng các

ph ng th c kh i t o khác nhau để t o ra các đ i t ng c a l p nƠy

class StringBufferCons{

public static void main(String args[]){

StringBuffer s1 = new StringBuffer();

StringBuffer s2 = new StringBuffer(20);

StringBuffer s3 = new StringBuffer(“StringBuffer”);

System.out.println(“s3 = “+ s3);

System.out.println(s2.length()); //chứa 0 System.out.println(s3.length()); //chứa 12 System.out.println(s1.capacity()); //chứa 16 System.out.println(s2.capacity()); //chứa 20

Dung l ng c a StringBuffer có thể thay đ i v i ph ng th c “ensureCapacity()”

Đ i s int đư đ c truy n đ n ph ng th c nƠy, vƠ dung l ng m i đ c tính toán nh sau:

NewCapacity = OldCapacity * 2 + 2(CONG THUC)

Tr c khi dung l ng c a StringBuffer đ c đặt l i, đi u ki n sau s đ c kiểm tra:

 N u dung l ng(NewCapacity) m i l n h n đ i s đ c truy n cho ph ng th c

“ensureCapacity()”, thì dung l ng m i (NewCapacity) đ c đặt

 N u dung l ng m i nh h n đ i s đ c truy n cho ph ng th c

“ensureCapacity()”, thì dung l ng đ c đặt bằng giá tr tham s truy n vƠo

Trang 32

Biên so n: Nguy n Th Đi u Page 32

Ch ng trình sau minh ho dung l ng đ c tính toán vƠ đ c đặt nh th nƠo

class Test{

public static void main(String args[]){

StringBuffer s1 = new StringBuffer(5);

System.out.println(“Dung lượng của bộ nhớ đệm = “+s1.capacity());

Thi t l p dung l ng c a s1 đ n 12 =(5*2+2) b i vì dung l ng truy n vƠo lƠ 8

nh h n dung l ng đ c tính toán lƠ 12

Ph ng th c nƠy có hai tham s Tham s đầu tiên lƠ v trí chèn Tham s th hai

có thể lƠ m t chu i, m t ký tự (char), m t giá tr nguyên (int), hay m t giá tr s thực

Trang 33

Biên so n: Nguy n Th Đi u Page 33

(float) đ c chèn vƠo V trí chèn s l n h n hay bằng 0, vƠ nh h n hay bằng chi u dƠi

c a đ i t ng StringBuffer B t kỳ đ i s nƠo, tr ký tự hoặc chu i, đ c chuyển sang chu i vƠ sau đó m i đ c chèn vƠo Ví dụ:

StringBuffer str = new StringBuffer(“Java sion”);

StringBuffer str = new StringBuffer(“James Gosling”);

char letter = str.charAt(6); //chứa “G”

- void setCharAt(int index, char value)

Ph ng th c nƠy đ c s dụng để thay th ký tự trong m t StringBuffer bằng m t

Trang 34

Biên so n: Nguy n Th Đi u Page 34

StringBuffer str = new StringBuffer(“Leopard”);

char ch[] = new char[10];

StringBuffer str = new StringBuffer(“devil”);

StringBuffer strrev = str.reverse();

Bi n “strrev” ch a “lived”

5.3.3 L ớp StringTokenizer

M t l p StringTokenizer có thể s dụng để tách m t chu i thƠnh các phần t (token) nh h n Ví dụ, m i t trong m t cơu có thể coi nh lƠ m t token Tuy nhiên, l p StringTokenizer đư đi xa h n vi c phơn tách các t trong cơu Để tách ra các thƠnh token

ta có thể tuỳ bi n ch ra m t t p d u phơn cách các token khi kh i t o đ i t ng StringTokenizer N u ta không ch ra t p d u phơn cách thì mặc đ nh lƠ d u trắng (space, tab, ) Ta cũng có thể s dụng t p các toán t toán học (+, *, /, vƠ -) trong khi phân tích

m t biểu th c

StringTokenizer(String) T o ra m t đ i t ng StringTokenizer m i dựa

trên chu i đ c ch đ nh

StringTokenizer(String, String) T o ra m t đ i t ng StringTokenizer m i dựa

trên (String, String) chu i đ c ch đ nh và m t

đ c tr v nh các token hay không

Bảng 2.4 Tóm tắt 3 phương thức tạo dựng của lớp StringTokenizer

Các ph ng th c t o dựng trên đ c minh họa trong các ví dụ sau:

StringTokenizer st1 = new StringTokenizer(“A Stream of words”);

StringTokenizer st2 = new StringTokenizer(“4*3/2-1+4”, “+-*/”, true);

StringTokenizer st3 = new StringTokenizer(“aaa,bbbb,ccc”, “,”);

Trang 35

Biên so n: Nguy n Th Đi u Page 35

Trong cơu l nh đầu tiên, StringTokenizer c a “st1” s đ c xơy dựng bằng cách

s dụng các chu i đ c cung c p vƠ d u phơn cách mặc đ nh D u phơn cách mặc đ nh lƠ kho ng trắng, tab, các ký tự xu ng dòng Các d u phơn cách nƠy thì ch s dụng khi phơn tách văn b n, nh v i “st1”

Cơu l nh th hai trong ví dụ trên xơy dựng m t đ i t ng StringTokenizer cho các biểu th c toán học bằng cách s dụng các ký hi u *, +, /, vƠ -

Cơu l nh th 3, StringTokenizer c a “st3” s dụng d u phẩy nh m t d u phơn cách

L p StringTokenizer cƠi đặt giao di n Enumeration Vì th , nó bao g m các

ph ng th c hasMoreElements() vƠ nextElement() Các ph ng th c có thể s dụng c a

l p StringTokenizer đ c tóm tắt trong b ng sau:

nextToken(String) Thay đ i b d u phân cách bằng chu i đ c ch đ nh, và sau

đó tr v token k ti p trong chu i

Bảng 2.5 Tóm tắt ác phương thức có thể sử dụng của lớp StringTokenizer

Hưy xem xét ch ng trình đư cho bên d i Trong ví dụ nƠy, hai đ i t ng StringTokenizer đư đ c t o ra Đầu tiên, “st1” đ c s dụng để phơn tách m t biểu th c toán học Th hai, “st2” phơn tách m t dòng c a các tr ng đ c phơn cách b i d u phẩy C hai tokenizer, ph ng th c hasMoreTokens() vƠ nextToken() đ c s dụng đ duy t qua t p các token, vƠ hiển th các token

import java.util.*;

public class StringTokenizerImplementer{

public static void main(String args[]){

// đặt một biểu thức toán học và tạo một tokenizer cho chuỗi đó

Trang 36

Biên so n: Nguy n Th Đi u Page 36

String mathExpr = “4*3+2/4”;

StringTo kenizer st1 = new StringTokenizer(mathExpr,”*+/-“, true);

//trong khi vẫn còn các token, hiển thị

System.out.println(“Tokens of mathExpr: “);

while(st1.hasMoreTokens())

System.out.println(st1.nextToken());

//tạo một chuỗi của các trường được phân cách bởi dấu phẩy và tạo

//một tokenizer cho chuỗi

String commas = “field1,field2,field3,and field4”;

StringTokenizer st2 = new StringTokenizer(commas,”,”,false);

//trong khi vẫn còn token, hiển thị

Trang 37

Biên so n: Nguy n Th Đi u Page 37

BÀI 2 CÁC C U TRÚC L P TRÌNH

Ch ng trình lƠ m t dưy các l nh đ c b trí thực hi n theo m t trình tự nƠo đó,

nh ng đôi khi ta mu n đi u khiển lu ng thực hi n c a ch ng trình tuỳ thu c vƠo đi u

ki n gì đó Ngôn ng l p trình java cung c p m t s phát biểu cho phép ta đi u khiển

lu ng thực hi n c a ch ng trình, chúng đ c li t kê trong b ng sau:

Ki ểu l nh T khoá

Lặp while, do-while, for

Quy t đ nh if-else, switch-case

1.2 Bi ểu th c điều kiện

Toán t đi u ki n lƠ m t lo i toán t đặc bi t vì nó g m ba thƠnh phần c u thƠnh biểu th c đi u ki n hay nói cách khác toán t đi u ki n lƠ toán t 3 ngôi

đúng sai

Statement2

Trang 38

Biên so n: Nguy n Th Đi u Page 38

Trong đó:

- biểu th c 1: Biểu th c 1 lƠ m t biểu th c logic T c lƠ nó tr tr v giá tr True

hoặc False

- biểu th c 2: Giá tr tr v n u biểu th c 1 nh n giá True

- biểu th c 3: Giá tr tr v n u biểu th c 1 nh n giá tr False

Chú ý: Kiểu giá tr c a biểu th c 2 vƠ biểu th c 3 ph i t ng thích v i nhau

Ví dụ: Đo n biểu th c đi u ki n sau tr v giá tr “a lƠ s chẵn” n u nh giá tr c a bi n a

lƠ s chẵn, ng c l i tr v giá tr “a lƠ s lẻ” n u nh giá tr c a bi n a lƠ s lẻ

String result=a%2==0 ? “a là số chẵn” : “a là số lẻ”;

Trang 39

Biên so n: Nguy n Th Đi u Page 39

- biểu_th c ph i là m t biểu th c có kiểu char, byte, short, int nh ng không thể là

kiểu long, n u biểu_th c có kiểu khác v i các kiểu li t kê trên thì java s đ a ra m t thông báo l i

- N u biểu_th c bằng giá tr c a gt_i thì các l nh t l nh i cho đ n l nh n n u không có default (l nh n+1 n u có default) s đ c thực hi n

- Câu l nh break thoát ra kh i c u trúc switch

S đ kh i mô t sự ho t đ ng c a c u trúc switch trong tr ng h p có l nh break:

2 C u trúc l ặp while và do-while

2.1 Lặp kiểm tra điều kiện trước

Ta có thể s dụng c u trúc while để thực thi lặp đi lặp l i m t l nh hoặc m t kh i

l nh trong khi đi u ki n đúng

Trang 40

Biên so n: Nguy n Th Đi u Page 40

Tr c tiên phát biểu while s tính giá tr c a biểu th c logic, n u giá tr c a biểu th c logic lƠ đúng thì cơu l nh trong thân c a while s đ c thực hi n, sau khi thực hi n xong

nó tính l i giá tr c a biểu th c logic, n u giá tr đúng nó l i ti p tục thực hi n l nh trong thơn while cho đ n khi giá tr c a biểu th c sai

Ví d :

public class WhileDemo {

public static void main(String[] args) {

String copyFromMe = "Copy this string until you " +

"encounter the letter 'g'.";

StringBuffer copyToMe = new StringBuffer();

int i = 0;

char c = copyFromMe.charAt(i);

while (c! = 'g') { copyToMe.append(c);

c = copyFromMe.charAt(++i);

} System.out.println(copyToMe);

} }

Chú ý:

- Biểu th c bên trong cặp ngoặc tròn ph i là m t biểu th c logic ( biểu th c tr v giá tr true hoặc false)

- Biểu th c đi u ki n ph i nằm trong cặp ngoặc tròn

- Sau t khoá while ta ch có thể đặt đ c duy nh t m t l nh, do v y để có thể thực hi n nhi u tác vụ sau while ta ph i bao chúng trong m t kh i l nh

- Bên trong thân c a vòng lặp while ta nên có l nh lƠm thay đ i giá tr c a biểu th c logic, n u không chúng ta s r i vƠo vòng lặp vô h n

- Câu l nh trong thân c u trúc while có thể không đ c thực hi n lần nào (do biểu th c lôgic ban đầu có giá tr false )

2.2 L ặp kiểm tra điều kiện sau

L nh

sai

Ngày đăng: 08/05/2014, 17:51

TỪ KHÓA LIÊN QUAN

w