Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 1
MC LC
CHNG 1. GII THIU TNG QUAN V NGÔN NG LP TRÌNH JAVA 6
1. Lch s ra đi và phát triển ca Java 6
2. Mt s đặc trng ca Java 6
2.1. Đn gin 7
2.2. Hng đi tng 7
2.3. Đc lp vi h nn 7
2.4. Mnh m 7
2.5. H tr lp trình đa tuyn 8
2.6. Phân tán 8
2.7. H tr Internet 8
2.8. Thông dch 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 lnh (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 liu 9
3.6. ng dụng mng 9
3.7. ng dụng nhiu tầng(multi-tier) 9
3.8. ng dụng cho các thit 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. Chng trình Java đầu tiên 13
7.1 Cu trúc chng trình Java 13
7.2 Chng trình Java đầu tiên 15
7.3 Biên dch và chy chng trình 15
CHNG 2. LP TRỊNH HNG ĐI TNG TRONG JAVA 17
BÀI 1. NN TNG LP TRÌNH JAVA 17
1. T khóa ca Java 17
2. Đnh danh trong Java (tên) 19
3. Chú thích trong chng trình 20
4. Kiểu d liu 20
4.1. D liu kiểu nguyên thuỷ 20
4.2. Kiểu d liu tham chiu (reference) 21
4.3. Ép kiểu (Type casting) 21
5. Bin, mng và hằng trong Java 22
5.1 Khai báo bin 22
5.2. Khai báo mng 22
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 2
5.2.1 Mng mt chiu 22
5.2.2 Mng nhiu chiu 26
5.3. Xâu ký tự 28
5.3.1. Lp String 28
5.3.2. Lp StringBuffer 31
5.3.3. Lp StringTokenizer 34
BÀI 2. CÁC CU TRÚC LP TRÌNH 37
1. Cu trúc r nhánh 37
1.1. Phát biểu if 37
1.2. Biểu thc điu kin 37
1.3. Cu trúc switch 38
2. Cu trúc lặp while và do-while 39
2.1. Lặp kiểm tra điu kin trc 39
2.2. Lặp kiểm tra điu kin sau 40
3. Cu trúc for 41
4. Lnh break và continue 43
BÀI 3. LP TRỊNH HNG ĐI TNG TRONG JAVA 46
1. Đnh nghĩa lp 47
1.1. Khai báo lp 47
1.1.1 Khai báo thuc tính 49
1.1.2 Khai báo phng thc 50
1.2 Chi tit v khai báo mt phng thc 51
1.2.1. Tng quát mt phng thc đc khai báo nh sau 51
1.2.2 Nhn giá tr tr v t phng thc 52
1.2.3 Truyn tham s cho phng thc 52
1.2.4. Thân ca phng thc 54
2. S dụng lp 54
2.1 Khai báo mt bin, mng đi tng 54
2.2 Truy xut ti các thành phần ca lp 55
3. Phng thc to dựng (constructor) 55
3.1. Công dụng 55
3.2. Cách vit hàm to 55
3.2.1 Đặc điểm ca phng thc to dựng 55
3.2.2. Hàm to mặc đnh 56
3.2.3. Gọi hàm to t hàm to 57
3.3. Khi khi đầu vô danh và khi khi đầu tĩnh 58
3.3.1. Khi vô danh 58
3.3.2. Khi khi đầu tĩnh 59
4. Dọn dẹp: kt thúc và thu rác 60
4.1. Phng thc finalize 60
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 3
4.2. C ch gom rác ca java 61
5. T khóa this 61
6. Điu khiển vic truy cp đn các thành viên ca mt lp 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ó mc truy xut gói 63
7. Np chng phng thc 63
7.1. Khái nim v phng thc bi ti 63
7.2. Yêu cầu ca các phng thc bi ti 64
BÀI 4 K THA (INHERITANCE), ĐA HỊNH 65
1. Lp c s và lp dn xut 65
2. Cách xây dựng lp dn xut 65
3. Tha k các thuc tính 65
4. Tha k phng thc 65
5. Phng thc khi to ca lp c s 65
5.1. Trt tự khi đầu 68
5.2. Trt tự dọn dẹp 68
6. Ghi đè phng thc (Override) 68
7. T khoá final 69
7.1. Thuc tính final 69
7.2. Đi s final 70
7.3. Phng thc final 70
7.4. Lp final 70
8. Lp c s tru tng 71
9. Đa hình thái 71
BÀI 5. GIAO DIN, LP TRONG, GÓI 73
1. Giao din (Interface) 73
1.1. Phần khai báo ca giao din 73
1.2. Phần thân 74
1.3. Triển khai giao din 74
2. Lp trong 75
CHNG 3. LP TRỊNH ĐA TUYN(MULTITHREAD) 77
LP TRÌNH SOCKET 77
BÀI 1. LP TRỊNH ĐA TUYN 77
1. Các kin thc liên quan 77
1.1. Tin trình ( process) 77
1.2. Tiểu trình ( thread ) 77
1.3. H điu hƠnh đn nhim, đa nhim 77
1.4. Các trng thái ca tin trình 78
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 4
1.5. Min găng ( Critical Section ) 78
1.6. Khoá cht (deadlock) 78
2. Lp trình đa tuyn trong Java 79
2.1. Lp Thread 79
2.2. Vòng đi ca Thread 82
2.3. Lung chy ngầm (deamon) 82
2.4. Giao din Runnable 82
2.5. Thit lp đ u tiên cho tuyn 83
2.6. Nhóm tuyn (Thread Group) 84
2.7. Đng b các tuyn thi hành 84
BÀI 2. LP TRÌNH SOCKET 86
1. Các kin thc liên quan 86
1.1. Gii thiu Socket 86
1.2. Lp trình Socket trong java 87
2. Kho sát mt s lp trong gói java.net 87
2.1. Lp InetAddress 87
2.2. Lp URL và URI 93
2.3. Lp Socket 101
2.3.1 Mt s hàm to ca lp Socket 102
2.3.2. Ly v thông tin gắn vi Socket 103
2.3.3. Đóng Socket 106
2.3.4. Truyn trong ch đ haft duplex 107
2.4. Lp ServerSocket 108
2.4.1. Mt s hàm to ca lp ServerSocket 108
2.4.2. Chp nhn vƠ đóng kt ni 111
2.5. Lp DatagramSocket 113
2.6. Lp DatagramPacket 113
3. TCP Socket 113
CHNG 4 CÔNG NGH JSP/SERVLET VÀ LP TRÌNH KT NI C S D
LIU TRONG JAVA 133
1. Công ngh Jsp/Servlet 133
1.1. Gii thiu 133
1.2. So sánh JSP/Servlet và CGI, ASP, ISAPI 133
1.3. Servlet là gì 134
1.3.1 Gii pháp vi Servlet 135
1.3.2 Môi trng runtime ca servlet 135
1.3.3 Giao tip vƠ vòng đi ca servlet 136
1.3.4 Các đi tng request và response 137
1.3.5 D liu chia sẻ và c đnh (Persistent and shared data) 141
1.3.6 Các thuc tính ServletContext 143
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 5
1.3.7 Các thuc tính và tài nguyên yêu cầu (Request attributes and resources) 144
1.3.8 Đa tuyn (Multithreading) 145
2. Truy cp c s d liu trong java 146
2.1. Tng quan 146
2.2. Các lp trong JDBC API dùng để truy cp CSDL 146
2.2.1. Mt s giao din và lp trong gói java.sql 146
2.2.2. Mt s giao din và lp trong gói javax.sql 147
2.3. Kt ni CSDL vi JDBC 147
2.4 Tng tác vi CSDL 152
2.4.1. To ra mt JDBC Statements 152
2.4.2. S dụng đi tng Prepared Statements 161
2.5. Gọi th tục lu tr bằng JDBC 162
2.6. Qun lý giao dch 162
CHNG 5. LP TRÌNH THIT B DI ĐNG VI J2ME 163
1. Gii thiu v J2ME và lp trình cho thit b di đng 163
2. Kin trúc ca J2ME 164
2.1. Gii thiu các thành phần trong nn tng J2ME 164
2.2. Đnh nghĩa v Profile 165
3. Lp trình vi J2ME 166
3.1. MIDlet ậ Vòng đi ca mt MIDlet 166
3.2. Đi tng Display 169
3.3. Đi tng Displayable 169
3.4. Giao din ngi dùng cp cao 169
3.4.1. Đi tng 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. Chng trình J2ME đầu tiên 171
4.1. Thit lp môi trng lp trình 171
4.2. To project 172
4.2.1. To ng dụng MIDP Using Source Editor 172
4.2.2. To ng dụng MIDP Using the Visual Mobile Designer 173
4.3. Đóng gói vƠ ti ng dụng j2me vƠo đin thoi 174
4.3.1. Đóng gói ng dụng 174
4.3.2. Ti ng dụng vào thit b di đng qua Internet 177
TÀI LIU THAM KHO 179
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 6
CHNG 1. GII THIU TNG QUAN V NGÔN NG LP
TRÌNH JAVA
Ni dung ca chng nƠy tp trung trình bày các vn đ sau:
Lch s ra đi và phát triển ca Java
Mt s đặc trng ca Java
Các kiểu ng dụng Java
Máy o Java
B công cụ phát triển JDK
Java Core API
Chng trình Java đầu tiên
1. Lch s ra đi và phát triển của Java
Năm 1991, mt nhóm kỹ s ca Sun Microsystems mun lp trình để điểu
khiển các thit b điển t nh tivi, t lnh, máy giặt, lò nng,… Ban đầu họ đnh dùng
C/C++ nhng trình biên dch ca C/C++ li phụ thuc vào tng loi CPU. Do đó họ bắt
tay vào xây dựng mt ngôn ng chy nhanh, gọn, hiu qu, đc lp vi thit b và ngôn
ng có tên là OAK (Oak- là cây si mọc phía sau văn phòng ca nhà thit k chính ông
Jame Gosling sau này ông thy rằng đư có ngôn ng lp trình tên Oak ri, do vy nhóm
thit k quyt đnh đi tên, “Java” lƠ cái tên đc chọn, Java là tên ca mt quán cafe mà
nhóm thit k java hay đn đó ung).
Ngôn ng lp trình Java đc Sun Microsystems đa ra gii thiu vào tháng 6
năm 1995 vƠ đư nhanh chóng tr thành mt ngôn ng lp trình ca các lp trình viên
chuyên nghip. Java đc xây dựng dựa trên nn tng ca C vƠ C++, nghĩa lƠ Java s
dụng cú pháp ca C vƠ đặc trng hng đi tng ca C++. Java là ngôn ng va biên
dch va thông dch.
Ngày nay, Java đc s dụng rng rãi, không ch để vit các ng dụng trên máy
cục b hay trên mng để xây dựng các trình điu khiển thit b di đng.
2. Mt s đặc trng của Java
Ngôn ng lp trình Java có các đặc trng c bn sau:
Đn gin
Hng đi tng
Đc lp vi h nn
Mnh m
H tr lp trình đa tuyn
Lp trình phân tán
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 7
H tr Internet
Thông dch
2.1. Đơn giản
Nhng ngi thit k mong mun phát triển mt ngôn ng d học và quen thuc
vi đa s ngi lp trình. Java tựa nh C++, nhng đư lc b đi các đặc trng phc tp,
không cần thit ca C vƠ C++ nh: thao tác con tr, thao tác đnh nghĩa chng toán t
(operator overloading),… Java không s dụng lnh “goto” cũng nh file header (.h). Cu
trúc “struct” vƠ “union” cũng đc loi b khi Java. Nên có ngi bo Java lƠ “C++ “,
ngụ ý bo java lƠ C++ nhng đư b đi nhng th phc tp, không cần thit.
2.2. Hướng đối tượng
Có thể nói java là ngôn ng lp trình hoƠn toƠn hng đi tng, tt c trong java
đu là sự vt, đơu đơu cũng lƠ sự vt.
2.3. Độc lập với hệ nền
Mục tiêu chính ca các nhà thit k Java lƠ đc lp vi h nn hay còn gọi lƠ đc
lp phần cng và h điu hƠnh. Đơy lƠ kh năng mt chng trình đc vit ti mt máy
nhng có thể chy đc bt kỳ đơu
Tính đc lp vi phần cng đc hiểu theo nghĩa mt chng trình Java nu chy
đúng trên phần cng ca mt họ máy nƠo đó thì nó cũng chy đúng trên tt c các họ máy
khác. Mt chng trình ch chy đúng trên mt s họ máy cụ thể đc gọi là phụ thuc
vào phần cng.
Tính đc lp vi h điu hƠnh đc hiểu theo nghĩa mt chng trình Java có thể
chy đc trên tt c các h điu hành. Mt chng trình ch chy đc trên mt s h
điu hƠnh đc gọi là phụ thuc vào h điu hành.
Các chng trình vit bằng java có thể chy trên hầu ht các h nn mà không cần
phi thay đi gì, điu nƠy đư đc nhng ngi lp trình đặt cho nó mt khẩu hiu ‘viết
một lần, chạy mọi nơi’, điu này là không thể có vi các ngôn ng lp trình khác.
Đi vi các chng trình vit bằng C, C++ hoặc mt ngôn ng nào khác, trình
biên dch s chuyển tp lnh thành mã máy (machine code), hay lnh ca b vi x lý.
Nhng lnh này phụ thuc vào CPU hin ti trên máy bn. Nên khi mun chy trên loi
CPU khác, chúng ta phi biên dch li chng trình.
2.4. Mạnh mẽ
Java là ngôn ng yêu cầu chặt ch v kiểu d liu, vic ép kiểu tự đng ba bãi
ca C, C++ nay đc hn ch trong Java, điu nƠy lƠm chng trình rõ rƠng, sáng và ít
li hn. Java kiểm tra lúc biên dch và c trong thi gian thông dch vì vy Java loi b
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 8
mt mt s loi li lp trình nht đnh. Java không s dụng con tr và các phép toán con
tr. Java kiểm tra tt c các truy nhp đn mng, chui khi thực thi để đm bo rằng các
truy nhp đó không ra ngoƠi gii hn kích thc.
Trong các môi trng lp trình truyn thng, lp trình viên phi tự mình cp phát
b nh. Trc khi chng trình kt thúc thì phi tự gii phóng b nh đư cp. Vn đ ny
sinh khi lp trình viên quên gii phóng b nh đư xin cp trc đó. Trong chng trình
Java, lp trình viên không phi bn tơm đn vic cp phát b nh. Quá trình cp phát, gii
phóng đc thực hin tự đng, nh dch vụ thu nhặt nhng đi tng không còn s dụng
na (garbage collection).
C ch by li ca Java giúp đn gin hóa qúa trình x lý li và hi phục sau li.
2.5. Hỗ trợ lập trình đa tuyến
Đơy lƠ tính năng cho phép vit mt chng trình có nhiu đon mã lnh đc chy
song song vi nhau. Vi Java ta có thể vit các chng trình có kh năng chy song song
mt cách d dƠng, hn th na vic đng b tƠi nguyên dùng chung trong Java cũng rt
đng gin. Điu này là không thể có đi vi mt s ngôn ng lp trình khác nh C/C++,
pascal …
2.6. Phân tán
Java h tr đầy đ các mô hình tính toán phân tán: mô hình client/server, gọi th
tục t xa…
2.7. Hỗ trợ Internet
Mục tiêu quan trọng ca các nhƠ thit k Java lƠ to điu kin cho các nhƠ phát
triển ng dụng có thể vit các chng trình ng dụng internet vƠ web mt cách d dƠng,
vi Java ta có thể vit các chng trình s dụng các giao thc TCP, UDP mt cách d
dàng, v lp trình web phía máy khách Java có công ngh Java applet, v lp trình web
phía máy ch Java có công ngh Servlet/JSP, v lp trình phơn tán Java có công ngh
RMI, CORBA, EJB, Web Service.
2.8. Thông dịch
Các chng trình Java cần đc thông dch trc khi chy, mt chng trình Java
đc biên dch thƠnh mư byte code mư đc lp vi h nn, chng trình thông dch Java
s ánh x mã byte code này lên mi nn cụ thể, điu này khin Java chm chp đi phần
nào.
3. Các kiểu ng dng Java
Vi Java ta có thể xây dựng các kiểu ng dụng sau:
3.1. ng dụng Applets
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 9
Applet lƠ chng trình Java đc to ra để s dụng trên Internet thông qua các
trình duyt 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 duyt, Applet s đc ti v và thực thi ti trình duyt.
3.2. ng dụng dòng lệnh (console)
Các chng trình nƠy chy t du nhắc lnh và không s dụng giao din đ họa.
Các thông tin nhp xut đc thể hin ti du nhắc lnh.
3.3. ng dụng đồ họa(Window form)
Đơy lƠ các chng trình Java chy đc lp cho phép ngi dùng tng tác qua
giao din đ họa.
3.4 JSP/Servlet
Java thích hp để phát triển ng dụng nhiu lp. Applet lƠ chng trình đ họa
chy trên trình duyt ti máy trm. các ng dụng Web, máy trm gi yêu cầu ti máy
ch. Máy ch x lý và gi kt qu tr li máy trm. Các Java API chy trên máy ch chu
trách nhim x lý ti máy ch và tr li các yêu cầu ca máy trm. Các Java API chy
trên máy ch này m rng kh năng ca 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 ti máy ch. X lý Form ca
HTML là cách s dụng đn gin nht ca JSP/Servlet. Chúng còn có thể đc dùng để
x lý d liu, thực thi các giao dch vƠ thng đ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 để kt ni ti c s d liu. Chúng có thể là
Applet hay ng dụng, nhng Applet b gii hn bi tính bo mt.
3.6. ng dụng mạng
Java là mt ngôn ng rt thích hp cho vic xây dựng các ng dụng mng. Vi th
vin Socket bn có thể lp trình vi hai giao thc: UDP và TCP.
3.7. ng dụng nhiều tầng(multi-tier)
Vi Java bn có thể xây dựng phân tán nhiu tầng vi nhiu h tr khác nhau nh:
RMI, CORBA, EJB, Web Service
3.8. ng dụng cho các thiết bị di động
Hin nay phần ln các thit b di đng nh: Đin thoi di đng, máy tr giúp cá
nhơn… đu h tr Java. Th nên bn có thể xây dựng các ng dụng chy trên các thit b
di đng nƠy. Đơy lƠ mt kiểu ng dụng khá hp dãn, bi vì các thit b di đng này ngày
càng ph bin và nhu cầu có các ng dụng chy trên đó, đặc bit là các ng dụng mang
tính cht gii trí nh game…
4. Máy o Java (JVM-Java Virtual Machine)
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 10
Máy o là mt phần mm mô phng mt máy tính tht (máy tính o). Nó có tp
hp các lnh logic để xác đnh các hot đng ca máy tính và có mt h điu hành o.
Ngi ta có thể xem nó nh mt máy tính tht (máy tính có phần cng o, h điu hành
o). Nó thit lp các lp tru tng cho: Phần cng bên di, h điu hƠnh, mư đư biên
dch.
Trình biên dch chuyển mã ngun thành tp các lnh ca máy o mà không phụ
thuc vào phần cng và h điu hành cụ thể. Trình thông dch trên mi máy s chuyển
tp lnh nƠy thƠnh chng trình thực thi. Máy o to ra mt môi trng bên trong để thực
thi các lnh bằng cách:
Np các file .class
Qun lý b nh
Dọn “rác”
Vic không nht quán ca phần cng làm cho máy o phi s dụng ngăn xp để
lu tr các thông tin sau:
Các “Frame” cha các trng thái ca các phng thc.
Các toán hng ca mã bytecode.
Các tham s truyn cho phng thc.
Các bin cục b.
Khi JVM thực thi mã, mt thanh ghi cục b có tên “Program Counter” đc s
dụng. Thanh ghi này tr ti lnh đang thực hin. Khi cần thit, có thể thay đi ni dung
thanh ghi để đi hng thực thi ca chng trình. Trong trng hp thông thng thì
tng lnh mt ni tip nhau s đc thực thi.
Mt khái nim thông dụng khác trong Java là trình biên dch “Just In Time-JIT”.
Các trình duyt thông dụng nh Netscape, IE, NetBeans, Jcreator đu có JIT bên trong để
tăng tc đ thực thi chng trình Java. Mục đích chính ca JIT là chuyển tp lnh
bytecode thành mã máy cụ thể cho tng loi CPU. Các lnh này s đc lu tr và s
dụng mi khi gọi đn.
5. B công c phát triển JDK (Java Development Kit)
Sun Microsystem đa ra ngôn ng lp trình Java qua sn phẩm có tên là Java
Development Kit (JDK). Ba phiên bn 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 vI nhiu u điểm hn phiên bn trc.
o JDK 1.1.4 (Sparkler) 12 tháng 9, 1997
o JDK 1.1.5 (Pumpkin) 3 tháng 12, 1997
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 11
o JDK 1.1.6 (Abigail) 24 tháng 4, 1998
o JDK 1.1.7 (Brutus) 28 tháng 9, 1998
o JDK 1.1.8 (Chelsea) 8 tháng 4, 1999
Java 2:
o J2SE 1.2 (Playground) 4 tháng 12, 1998
o J2SE 1.2.1 (không có) 30 tháng 3, 1999
o J2SE 1.2.2 (Cricket) 8 tháng 7, 1999
o J2SE 1.3 (Kestrel) 8 tháng 5, 2000
o J2SE 1.3.1 (Ladybird) 17 tháng 5, 2001
o J2SE 1.4.0 (Merlin) 13 tháng 2, 2002
o J2SE 1.4.1 (Hopper) 16 tháng 9, 2002
o J2SE 1.4.2 (Mantis) 26 tháng 6, 2003
o J2SE 5 (1.5.0) (Tiger) 29 tháng 9, 2004
o Java SE 6 (còn gọi lƠ Mustang), đc công b 11 tháng 12 năm 2006
o JDK 6.18,2010
o Java SE 7 (còn gọi lƠ Dolphin), đc bắt đầu t tháng 8 năm 2006 vƠ công
b vƠo năm 2010.
JDK bao gm Java Plug-In, chúng cho phép chy trực tip Java Applet hay
JavaBean bằng cách dùng JRE thay cho s dụng môi trng thực thi mặ c đnh ca trình
duyt.
JDK cha các công c sau:
a) Trình biên dịch, 'javac'
Cú pháp:
javac [options] sourcecodename.java
b) Trình thông dịch, 'java'
Cú pháp:
java [options] classname
c) Trình dịch ngược, 'javap'
javap dch ngc bytecode và in ra thông tin v các thuc tính (các trng), các
phng thc ca mt lp.
Cú pháp:
javap [options] classname
d) Công cụ sinh tài liệu, 'javadoc'
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 12
Tin ích này cho phép ta to ra tp HTML dựa trên các li gii thích trong mã
chng trình (phần nằm trong cặp du /* */).
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 bi phiên bn JFC 1.1. Mt s package thông dụng
đc:
a) java.lang
Cha các lp quan trọng nht ca ngôn ng Java. Chúng bao gm các kiểu d liu
c bn nh ký tự, s nguyên,… Chúng cũng cha các lp làm nhim vụ x lý li và các
lp vào ra chuẩn. Mt vài lp quan trọng khác nh String hay StringBuffer.
b) java.applet
Đơy là package nh nht cha mt mình lp Applet. Các Applet nhúng trong
trang Web hay chy trong appletviewer đu tha k t lp này.
c) java.awt
Package nƠy đc gọi là Abstract Window Toolkit (AWT). Chúng cha các lp
dùng để to giao din đ họa. Mt s lp bên trong là: Button, GridBagLayout, Graphics.
d) java.io
Cung cp th vin vào ra chuẩn. Chúng cho phép to và qun lý dòng d liu theo
nhiu cách.
e) java.util
Package này cung cp mt s công cụ hu ích. Mt vài lp ca package này là:
Date, Hashtable, Stack, Vector và StringTokenizer.
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 13
f) java.net
Cung cp kh năng giao tip vi máy t xa. Cho phép to và kt ni ti Socket
hoặc URL.
g) java.awt.event
Cha các lp, giao din dùng để x lý các sự kin trong chng trình nh chut,
bàn phím.
h) java.rmi
Công cụ để gọi hàm t xa. Chúng cho phép to đi tng trên máy khác và s
dụng các đi tng đó trên máy cục b.
i) java.security
Cung cp các công cụ cần thit để mư hóa vƠ đm bo tính an toàn ca d liu
truyn gia máy trm và máy ch.
k) java.sql
Package này cha Java DataBase Connectivity (JDBC), dùng để truy xut c s
d liu quan h nh Oracle, SQL Server,
7. Chng trình Java đầu tiên
7.1 Cấu trúc chương trình Java
- Mi ng dụng Java bao gm mt hoặc nhiu đn v biên dch (mi đn v biên
dch là mt tp tin có phần m rng .java)
- Mi đn v biên dch bao gm mt hoặc nhiu lp
- Mi ng dụng đc lp phi có duy nht mt phng thc main (điểm bắt đầu ca
ng dụng)
- Mi đn v biên dch có nhiu nht mt lp đc khai báo là public, nu nh
trong đn v biên dch có lp public thì tên ca đn v biên dch phi trùng vi tên ca
lp public (ging ht nhau c ký tự hoa ln ký tự thng)
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 14
- Bên trong thân ca mi lp ta khai báo các thuc tính, phng thc ca lp đó,
Java là ngôn ng hng đi tng, do vy mã lnh phi nằm trong lp nƠo đó. Mi lnh
đu đc kt thúc bằng du chm phy “;”.
- Trong ngôn ng Java, lp là mt đn v mu có cha d liu và mã lnh liên
quan đn mt 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 liu mi nƠy đc s dụng để xác đnh các bin mƠ ta thng
gọi lƠ “đi tng”. Đối tượng là các thể hiện (instance) ca lớp. Tt c các đi tng
đu thuc v mt lp có chung đặc tính và hành vi. Mi lp xác đnh mt thực thể, trong
khi đó mi đi tng là mt thể hin thực sự.
- Khi bn khai báo mt lp, bn cần xác đnh d liu vƠ các phng thc ca lp
đó. V c bn mt lp đc khai báo nh sau:
Cú pháp:
class classname
{
var_datatype variablename;
:
met_datatype methodname(parameter_list)
:
}
Trong đó:
class - T khoá xác đnh lp
//Nhập khẩu các thư viện
import thư_viện;
//Xây dựng các lớp
public class clsMain{
…
public static void main(String args[]){
//điểm bắt đầu của chương trình
}
…
ớ
…
ớ
…
Một đơn vị biên dịch là
một tệp tin .java
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 15
classname - Tên ca lp
var_datatype - kiểu d liu ca bin
variablename - Tên ca bin
met_datatype - Kiểu d liu tr v ca phng thc
methodname - Tên ca phng thc
parameter_list ậ Các tham s đc ca phng thc
- Bn còn có thể đnh nghĩa mt lp bên trong mt lp khác. Đơy lƠ lp xp lng
nhau, các thể hin (instance) ca lp này tn ti bên trong thể hin ca mt lp che ph
chúng. Nó chi phi vic truy nhp đn các thành phần ca lp bao ph chúng. Có hai loi
lp trong đó lƠ lp trong tĩnh “static” vƠ lp trong không tĩnh “non static”
Lp trong tĩnh (static)VISUAL BASIC
Lp trong tĩnh đc đnh nghĩa vi t khoá “static”. Lp trong tĩnh có thể truy
nhp vào các thành phần tĩnh ca lp ph nó.
Lp trong không tĩnh (non static)
Lp bên trong (không phi là lp trong tĩnh) có thể truy nhp tt c các thành phần
ca lp bao nó, song không thể ngc li.
7.2 Chương trình Java đầu tiên
Ví d 1: HelloWorld.java
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}//end method
}//end class
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 trng thực thi ca java, nó bao gm: JVM
(Java Virtual Machine) máy o java vì các chng trình java đc thông dch và chy
trên máy o java và tp các th vin cần thit để chy các ng dụng java.
- B công cụ biên dch và thông dch JDK ca 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
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 16
Sau khi cƠi đặt JDK (gi s th mục cƠi đặt là C:\Program files\Java) ta s nhn
đc mt cu trúc th mục nh sau:
- Để biên dch chng trình Java sang mã bytecode ta
dùng lnh sau:
javac TenTep.java
Nu không có li s to ra file HelloWorld.class
- Để thông dch và chy chng trình ta dùng lnh:
java TenTep
Lu ý: Phi khai báo đng dn ch đn th mục cƠi đặt java, và th mục cha
các class cần thực thi
Ví d: C:\> set path=C:\Java\jdk1.6.0_16\bin
C:\> set classpath = D:\BTJava\
Th mục cha các file thực thi
Th mục cha các file liên quan đn java
Th mục cha các file th vin ca java
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 17
CHNG 2. LP TRỊNH HNG ĐI TNG TRONG JAVA
Chng nƠy cung cp các ni dung sau:
Nn tng lp trình Java.
Mt s khái nim trong lp trình hng Đi tng (Object-oriented
Programming).
Đnh nghĩa mt Lp (Class).
Đnh nghĩa mt Đi tng (Object).
Nhn thc đc sự khác bit gia Lp vƠ Đi tng.
Nhn thc đc sự cần thit đi vi phng thc Thit lp (Construction) vƠ Hy
(Destruction).
Đnh nghĩa v tính đóng gói d liu (Data Encapsulation)
Hiểu bit v tính Tha k (Inheritance).
Đnh nghĩa tính Đa hình (Polymorphism).
Giao din (Interface), lp trong
BÀI 1. NN TNG LP TRÌNH JAVA
1. T khóa của Java
Mi ngôn ng lp trình có mt tp các t khoá, ngi lp trình phi s dụng t
khoá theo đúng nghĩa mƠ ngi thit k ngôn ng đư đ ra, ta không thể đnh nghĩa li
nghĩa ca các t khoá, nh s dụng nó để đặt tên bin, 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 lp, phng thc tru tng
boolean
Kiểu d liu logic
break
Đc s dụng để kt thúc vòng lặp hoặc cu trúc switch
byte
kiểu d liu s nguyên
case
đc s dụng trong ln switch
cast
Cha đc s dụng (để dƠnh cho tng lai)
catch
đc s dụng trong x lý ngoi l
char
kiểu d liu ký tự
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 18
class
Dùng để khai báo lp
const
Cha đc dùng
continue
đc dùng trong vòng lặp để bắt đầu mt vòng lặp mi
default
đc s dụng trong lnh switch
do
đc dùng trong vòng lặp điu kin sau
double
kiểu d liu s thực
else
kh năng lựa chọn th hai trong câu lnh if
extends
ch rằng mt lp đực k tha t mt lp khác
false
Gía tr logic
final
Dùng để khai báo hằng s, phng thc không thể ghi đè, hoặc lp không
thể k tha
finally
phần cui ca khi x lý ngoi l
float
kiểu s thực
for
Câu lnh lặp
goto
Cha đc dùng
if
Câu lnh lựa chọn
implements
ch rằng mt lp triển khai t mt giao din
import
Khai báo s dụng th vin
instanceof
kiểm tra mt đi tng có phi là mt thể hin ca lp hay không
interface
s dụng để khai báo giao din
long
kiểu s nguyên
native
Khai báo phng thc đc vit bằng ngôn ng biên dch C++
new
to mt đi tng mi
null
mt đi tng không tn ti
package
Dùng để khai báo mt gói
private
đặc t truy xut
protected
đặc t truy xut
public
đặc t truy xut
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 19
return
Quay t phng thc v ch gọi nó
short
kiểu s nguyên
static
Dùng để khai báo bin, thuc tính tĩnh
super
Truy xut đn lp cha
switch
lnh lựa chọn
synchronized
mt phng thc đc quyn truy xut trên mt đi tng
this
Ám ch chính lp đó
throw
Ném ra ngoi l
throws
Khai báo phng thc ném ra ngoi l
true
Giá tr logic
try
s dụng để bắt ngoi l
void
Dùng để khai báo mt phng thc không tr v giá tr
while
Dùng trong cu 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 nht mt đi lng trong chng trình. Trong java tên
đc đặt theo quy tắc sau:
- Không trùng vi t khoá
- Không bắt đầu bằng mt s, tên phi bắt đầu bằng kí tự hoặc bắt đầu bằng kí $,_
- Không cha du cách, các kí tự toán học nh +, -, *,/, %
- Không trùng vi mt đnh danh khác trong cùng mt phm vi
Chú ý:
- Tên nên đặt sao cho có thể mô t đc đi tng trong thực t
- Ging nh C/C++, java có phơn bit ch hoa ch thng
- Trong java ta có thể đặt tên vi đ dài tuỳ ý
- Ta có thể s dụng các kí tự ting vit để đặt tên
Quy ước về đặt tên trong java
Ta nên đặt tên bin, hằng, lp, phng thc sao cho nghĩa ca chúng rõ rƠng, d
hiểu, khoa học vƠ mang tính c l quc t. Do java có phơn bit ch hoa, ch thng
nên ta phi cẩn thn vƠ chú ý.
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 20
Sau đơy lƠ quy c đặt tên trong java (chú ý đơy ch lƠ quy c do vy không
bắt buc phi tuơn theo quy c nƠy):
- Đi vi bin và phng thc thì tên bao gi cũng bắt đầu bằng ký tự thng, nu
tên có nhiu t thì ghép li thì: ghép tt c các t thành mt, ghi t đầu tiên ch
thng, vit hoa kí tự đầu tiên ca mi t theo sau trong tên, ví dụ area, radius,
readInteger…
- Đi vi tên lp, giao din ta vit hoa các kí tự đầu tiên ca mi t trong tên, ví dụ
lp WhileTest, Circle
- Tên hằng bao gi cũng vit hoa, nu tên gm nhiu t thì chúng đc ni vi hau
bi kí tự ghch di ‘_’, ví dụ PI, MAX_VALUE
3. Chú thích trong chng trình
Trong java ta có 3 cách để ghi chú thích
- Cách 1: s dụng cặp
/* và */ ý nghĩa ca cặp chú thích này ging nh ca C, C++
- Cách 2: s dụng cặp // ý nghĩa ca cặp chú thích này ging nh ca C, C++
- Cách 3: s dụng cặp /** và */, đơy lƠ kiểu chú thích tài liu (không có trong
C/C++), nó dùng để to ra tài liu chú thích cho chng trình.
Vi cách th nht và cách ba ta có thể vit chú thích trên nhiu dòng, vi cách chú
thích hai ta ch có thể chú thích trên mt dòng.
Chú ý: trong java ta có thể đặt chú thích đơu?, cơu tr li là: đơu có thể đặt
đc mt du cách thì đó có thể đặt chú thích.
4. Kiểu d liu
Các ng dụng luôn x lý d liu đầu vƠo vƠ xut d liu kt qu đầu ra. Đầu
vƠo, đầu ra, vƠ kt qu ca các quá trình tính toán đu liên quan đn d liu. Trong môi
trng tính toán, d liu đc phơn lp theo các tiêu chí khác nhau phụ thuc vƠo bn
cht ca nó. mi tiêu chí, d liu có mt tính cht xác đnh vƠ có mt kiểu thể hin
riêng bit.
Java cung cp mt vƠi kiểu d liu. Chúng đc h tr trên tt c các nn. Ví dụ,
d liu loi int (integer) ca Java đc thể hin bằng 4 bytes trong b nh ca tt c các
loi máy bt lun đơu chy chng trình Java. Bi vy các chng trình Java không
cần phi thay đi khi chy trên các nn khác nhau.
Trong Java kiểu d liu đc chia thƠnh hai loi:
Các kiểu d liu nguyên thy (primitive)
Các kiểu d liu tham chiu (reference)
4.1. Dữ liệu kiểu nguyên thuỷ
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 21
T khoá
Mô t
Kích c
Ti thiểu
Ti đa
Lp bao
(kiểu s nguyên)
byte
S nguyên 1 byte
8 bit
-128
127
Byte
short
s nguyên 2 byte
16 bit
-2
15
2
15
-1
Short
int
s nguyên 4 byte
32 bit
-2
31
2
31
-1
Integer
long
s nguyên 8 byte
64 bit
-2
63
-2
63
-1
Long
(kiểu s thực)
float
kiểu thực vi đ chính
xác đn 4 byte
32 bit
IEEE754
IEEE754
Float
double
du chm đng vi đ
chính xác đôi 8 byte
64 bit
IEEE754
IEEE754
Double
(kiểu khác)
char
kiểu kí tự 2 byte
16 bit
Unicode 0
Unicode 2
16
-1
Character
boolean
kiểu logic
true/false
-
-
Boolean
void
-
-
-
-
Void
Bảng 2.2. Kiểu dữ liệu nguyên thuỷ
4.2. Kiểu dữ liệu tham chiếu (reference)
Kiểu d liu
Mô t
Mng (Array)
Tp hp các d liu cùng kiểu. Ví dụ : tên sinh viên
Lp (Class)
Tp hp các bin vƠ các phng thc.Ví dụ : lp “Sinhviên” cha
toƠn b các chi tit ca mt sinh viên vƠ các phng thc thực thi
trên các chi tit đó.
Giao din
(Interface)
Là mt lp tru tng đc to ra cho phép cƠi đặt đa tha k
trong Java.
Bảng 2.3. Kiểu dữ liệu tham chiếu
4.3. Ép kiểu (Type casting)
Có thể bn s gặp tình hung khi cng mt bin có dng integer vi mt bin có
dng float. Để x lý tình hung nƠy, Java s dụng tính năng ép kiểu (type casting) ca
các phần mm trc đó C, C++. Lúc nƠy mt kiểu d liu s chuyển đi sang kiểu khác.
Khi s dụng tính cht nƠy, bn cần thn trọng vì khi điu chnh d liu có thể b sai giá
tr.
Đon mư sau đơy thực hin phép cng mt giá tr du phẩy đng (float) vi mt
giá tr nguyên (integer).
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 22
float c=34.896751f;
int b = (int)c +10;
Đầu tiên giá tr du phy đng c đc đi thƠnh giá tr nguyên 34. Sau đó nó đc
cng vi 10 vƠ kt qu lƠ giá tr 44 đc lu vƠo b.
Sự ni rng (widening) ậ quá trình lƠm tròn s theo hng ni rng không lƠm
mt thông tin v đ ln ca mi giá tr.Bin đi theo hng ni rng chuyển mt giá tr
sang mt dng khác có đ rng phù hp hn so vi nguyên bn. Bin đi theo hng li
thu nh li (narrowwing) lƠm mt thông tin v đ ln ca giá tr đc chuyển đi. Chúng
không đc thực hin khi thực hin phép gán. ví dụ trên giá tr thp phơn sau du phy
s b mt.
5. Bin, mng và hằng trong Java
5.1 Khai báo biến
Các ng dụng s dụng các bin để lu tr các d liu cần thit hoặc các d liu
đc to ra trong quá trình thực thi chng trình. Các bin đc xác đnh bi mt tên
bin vƠ có mt phm vi tác đng. Phm vi tác đng ca bin đc xác đnh mt cách rõ
rƠng trong chng trình. Mi bin đc khai báo trong mt khi chng trình ch có tác
đng trong phm vi khi đó, không có ý nghĩa vƠ không đc phép truy nhp t bên
ngoƠi khi.
Vic khai báo mt bin bao gm 3 thƠnh phần: kiểu bin, tên ca nó vƠ giá tr ban
đầu đc gán cho bin (không bắt buc). Để khai báo nhiu bin ta s dụng du phẩy để
phơn cách các bin, Khi khai báo bin, luôn nh rằng Java phơn bit ch thng vƠ ch
in hoa (case -sensitive).
Cú pháp:
Datatype indentifier [=value] [, indentifier[=value]… ];
Để khai báo mt bin nguyên (int) có tên lƠ counter dùng để lu giá tr ban đầu lƠ
1, ta có thể thực hin phát biểu sau đơy:
int counter = 1;
Java có nhng yêu cầu hn ch đặt tên bin mƠ bn có thể gán giá tr vƠo. Nhng
hn ch nƠy cũng ging các hn ch khi đặt tên cho các đnh danh mƠ ta đư tho lun
các phần trc ca chng nƠy.
5.2. Khai báo mảng
5.2.1 Mảng một chiều
a) Khai báo
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 23
Cú pháp khai báo:
- KDL tên_mảng[];//Khai báo mt con tr mng
- KDL []tên_mảng;//nh trên
- KDL tên_mảng[] = new KDL[spt];//To ra mt mng có spt phần t
Trong cú pháp trên thì:
- KDL là mt kiểu d liu bt kỳ nh: kiểu nguyên thy, kiểu đi tng… nó xác
đnh kiểu d liu ca tng phần t ca mng.
- Spt là s phần t ca mng.
Chú ý:
- Mng trong Java là mt đi tng
- Cũng nh các đi tng khác, mng phi đc to ra bằng toán t new nh sau:
Tên_mảng=new KDL[spt];
- Khi mng đc to ra thì mi phần t ca mng s nhn mt giá tr mặc đnh, quy
tắc khi to giá tr cho các phần t ca mng cũng chính lƠ quy tắc khi đầu giá tr
cho các thuc tính ca đi tng, tc là mi phần t ca mng s nhn giá tr:
0 nu KDL là kiểu s
‘\0’ nu KDL là kí tự
false nu KDL là boolean
null nu KDL là mt lp nƠo đó.
Ví d 1. Khai báo mt mng s nguyên gm 100 phần t
Cách 1:
int mangInt[];//Khai báo một con trỏ đến mảng các số nguyên
mangInt=new int[100];//Tạo ra mảng
Cách 2:
int mangInt[]=new int[100];
Ví d 2: Gi s ta có lp SinhVien đư đc đnh nghĩa, hưy khai báo mt mng gm 100
đi tng ca lp SinhVien
SinhVien arraySinhVien[]=new SinhVien[100];
Chú ý: Lúc này mi phần t ca mng arraySinhVien là mt con tr ca lp SinhVien và
hin gi mi phần t ca mng đang tr đn giá tr null. Để khi to tng phần t ca
mng ta phi lƠm nh sau:
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu 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 kt hp c khai báo và khi gán các
phần t ca mng theo cách sau:
int[] mangInt = {1, 3, 5, 7, 9};
To ra mt mng gm 5 phần t, các phần t ca mng lần lt đc gán các giá
tr là: 1, 3, 5, 7, 9
SinhVien[] mangSinhVien = {
new SinhVien(“sv01”, “Nguyễn Văn A”, “HY”),
new SinhVien(“sv02”, “Nguyễn Thị B”, “HN”),
new SinhVien(“sv03”, “Đỗ Thị Q”, “BG”),
null
};
Khai báo mt mng gm 4 phần t, giá tr ca các phần t lần lt đc khi gán
nh sau:
mangSinhVien [0]=new SinhVien(“sv01”, “Nguyễn Văn A”, “HY”)
mangSinhVien [1]=new SinhVien(“sv02”, “Nguyễn Thị B”, “HN”)
mangSinhVien [2]=new SinhVien(“sv03”, “Đỗ Thị Q”, “BG”)
mangSinhVien [3]=null
b) Truy xt đn các phần t ca mng mt chiu
Để truy xut đn phần t th ind ca mng ta s dụng cú pháp nh sau:
Tên_Mng[ind-1]
Chú ý: Phần t đầu tiên ca mng có ch s là 0.
Ví d:
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 ca mng lần lt đc truy xut nh sau:
- Phần t đầu tiên ca mng là a[0]
- Phần t th 2 ca mng là a[1]
- Phần t th 3 đng thi là phần t cui cùng ca mng là a[2]
c) Ly v s phần t hin ti ca mng
Mng trong Java là mt đi tng, do vy nó cũng có các thuc tính và các
phng thc nh các đi tng khác. Để ly v s phần t ca mng ta s dụng thuc
tính length nh sau:
Bài ging Ngôn ng lp trình Java
Biên son: Nguyn Th Điu Page 25
Tên_mng.length
Ví d 1: Nhp vào mt mng 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];
//Nhập dữ liệu cho mảng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");
a[i]=sc.nextInt();
}
//In mảng ra màn hình
System.out.println("Mảng vừa nhập là");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
} }
Ví d 2: Nhp vào mt mng s thực sau đó kiểm tra xem mng có phi là mt dưy tăng
hay không?
class ArrayDemo2{
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];
//Nhập dữ liệu cho mảng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");
a[i]=sc.nextInt();
}
//Kiểm tra dãy tăng
boolean kt=true;
for (int i = 0; i < a.length-1; i++)
if(a[i+1]-a[i]<0){
kt=false;//thay đổi trạng thái cờ