You are on page 1of 205

1

MC LC
Ch!ng 1: GI"I THI%U T(NG QUAN V+ NGN NG, L/P
TRNH JAVA......................................................................... 7
1.1. M1 34u ......................................................................... 7
1.2. Gi7i thi8u v: ngn ng; l<p trnh Java............................ 7
1.2.1. Java l g? .............................................................. 7
1.2.2. L=ch s? pht tri@n cBa ngn ng; l<p trnh Java........ 7
1.2.3. MDt sF 3Hc 3i@m nJi b<c cBa ngn ng; l<p trnh Java
........................................................................................ 8
1.3. Cc Kng dLng Java...................................................... 10
1.3.1. Java v Kng dLng Console .................................... 10
1.3.2. Java v Kng dLng Applet ...................................... 11
1.3.3. Java v pht tri@n Kng dLng Desktop dng AWT v
JFC................................................................................ 12
1.3.4. Java v pht tri@n Kng dLng Web.......................... 13
1.3.5. Java v pht tri@n cc Kng dLng nhng ................. 14
1.4. D=ch v thMc thi mDt ch!ng trnh viNt bOng Java........ 14
1.5. Ch!ng trnh Java 34u tin.......................................... 15
1.5.1. TPo ch!ng trnh nguQn HelloWordApp .............. 15
1.5.2. Bin d=ch t<p tin nguQn HelloWordApp................ 16
1.5.3. ChPy ch!ng trnh HelloWordApp....................... 16
1.5.4. CRu trc ch!ng trnh HelloWordApp.................. 17
S? dLng ph!ng thKc/biNn cBa l7p................................ 17
1.6. Cng cL l<p trnh v ch!ng trnh d=ch........................ 17
1.6.1. J2SDK ................................................................. 17
1.6.2. Cng cL soPn thSo m nguQn Java. ....................... 18
Ch!ng 2: ............................................................................. 21
HTNG, BIUN, KIWU D, LI%U, ........................................... 21
TON TX, BIWU THYC V CC....................................... 21
CZU TRC [I+U KHIWN TRONG JAVA .......................... 21
2.1. BiNn............................................................................ 21
2.2. Cc ki@u d; li8u c! s1................................................. 23
2.2.1. Ki@u sF nguyn .................................................... 24
2.2.2. Ki@u dRu chRm 3Dng............................................. 26
2
2.2.3. Ki@u k tM (char) .................................................. 26
2.2.4. Ki@u lu<n l (boolean).......................................... 27
2.3. HOng: .......................................................................... 27
2.4. L8nh, khFi l8nh trong java........................................... 28
2.5. Ton t? v bi@u thKc ................................................... 29
2.5.1. Ton t? sF h\c...................................................... 29
2.5.2. Ton t? trn bit..................................................... 29
2.5.3. Ton t? quan h8 & logic....................................... 29
2.5.4. Ton t? p ki@u .................................................... 30
2.5.5. Ton t? 3i:u ki8n ................................................. 30
2.5.6. ThK tM u tin ...................................................... 30
2.6. CRu trc 3i:u khi@n..................................................... 31
2.6.1. CRu trc 3i:u ki8n if else ................................. 31
2.6.2. CRu trc switch case ........................................ 32
2.6.3. CRu trc lHp.......................................................... 32
2.6.4. CRu trc l8nh nhSy (jump) .................................... 33
2.7. L7p bao ki@u d; li8u c! s1 (Wrapper Class)................ 33
2.8. Ki@u d; li8u mSng....................................................... 34
2.8.1. Khi ni8m mSng................................................... 34
2.8.2. Khai bo mSng ..................................................... 34
2.8.3. CRp pht bD nh7 cho mSng ................................... 35
2.8.4. Kh1i tPo mSng...................................................... 35
2.8.5. Truy c<p mSng ..................................................... 35
2.9. MDt sF v dL minh h\a: ............................................... 36
Ch!ng 3: H-"NG []I T-^NG TRONG JAVA............... 47
3.1. M1 34u ....................................................................... 47
3.2. L7p (Class) ................................................................. 48
3.2.1. Khi ni8m............................................................ 48
3.2.2. Khai bo/3=nh ngh_a l7p ....................................... 48
3.2.3. TPo 3Fi tang cBa l7p .......................................... 49
3.2.4. ThuDc tnh cBa l7p ............................................... 49
3.2.5. Hm - Ph!ng thKc l7p (Method)......................... 50
3.2.6. Kh1i tPo mDt 3Fi tang (Constructor)................... 52
3.2.7. BiNn this............................................................... 53
3
3.2.8. Khai bo chQng ph!ng thKc (overloading method)
...................................................................................... 54
3.3. [Hc 3i@m h7ng 3Fi tang trong java ......................... 54
3.3.1. [ng gi (encapsulation) ..................................... 55
3.3.2. Tnh 3a hnh (polymorphism): .............................. 55
3.3.3. Tnh kN thba (inheritance) .................................... 57
3.4. Gi (packages) ............................................................ 62
3.5. Giao di8n (interface) ................................................... 63
3.5.1. Khi ni8m interface: ............................................. 63
3.5.2. Khai bo interface: ............................................... 64
3.5.3. V dL minh h\a..................................................... 65
Ch!ng 4: THIUT KU GIAO DI%N NG-dI DNG............. 82
4.1. M1 34u ....................................................................... 82
4.2. Gi7i thi8u th vi8n awt................................................ 83
4.3. Cc khi ni8m c! bSn.................................................. 83
4.3.1. Component........................................................... 83
4.3.2. Container ............................................................. 84
4.3.3. Layout Manager ................................................... 85
4.4. ThiNt kN GUI cho ch!ng trnh ................................... 86
4.4.1. TPo khung chKa c?a sJ ch!ng trnh.................... 86
4.4.2. TPo h8 thFng thMc 3!n.......................................... 87
4.4.3. Gen Component vo khung chKa.......................... 89
4.4.4. Trnh by cc Component trong khung chKa ........ 90
4.4.5. Cc 3Fi tang khung chKa Container.................. 101
4.5. X? l biNn cF/sM ki8n................................................ 105
4.5.1. M hnh x? l sM ki8n (Event-Handling Model) . 105
4.5.2. X? l sM ki8n chuDt ............................................ 108
4.5.3. X? l sM ki8n bn phm...................................... 111
4.6. MDt sF v dL minh h\a .............................................. 115
Ch!ng 5: LUfNG V T/P TIN....................................... 128
5.1. M1 34u ..................................................................... 128
5.2. LuQng (Streams) ....................................................... 129
5.2.1. Khi ni8m luQng................................................. 129
5.2.2. LuQng byte (Byte Streams)................................. 129
5.2.3. LuQng k tM (Character Streams)........................ 131
4
5.2.4. Nh;ng luQng 3ac 3=nh ngh_a tr7c (The Predefined
Streams) ...................................................................... 132
5.3. S? dLng luQng Byte .................................................. 133
5.3.1. [\c d; li8u tb Console....................................... 134
5.3.2. XuRt d; li8u ra Console...................................... 135
5.3.3. [\c v ghi file dng luQng Byte ......................... 136
5.3.4. [\c v ghi d; li8u nh= phn................................ 141
5.4. File truy c<p nggu nhin (Random Access Files) ....... 145
5.5. S? dLng luQng k tM.................................................. 147
5.5.1. Nh<p Console dng luQng k tM ......................... 149
5.5.2. XuRt Console dng luQng k tM .......................... 151
5.5.3. [\c/ghi File dng luQng k tM............................ 152
5.6. L7p File .................................................................... 155
Ch!ng 6: L/P TRNH C# Si D, LI%U.......................... 158
6.1. GI"I THI%U............................................................. 158
6.2. KIUN TRC JDBC................................................... 158
6.3. Cc khi ni8m c! bSn................................................ 160
6.3.1. JDBC Driver ...................................................... 160
6.3.2. JDBC URL ........................................................ 162
6.4. KUT N]I CSDL V"I JDBC..................................... 163
6.4.1. [jng k trnh 3i:u khi@n.................................... 163
6.4.2. ThMc hi8n kNt nFi ............................................... 163
6.4.3. V dL.................................................................. 164
6.5. KIWU D, LI%U SQL V KIWU D, LI%U JAVA.... 168
6.6. CC THAO TC C# BkN TRN CSDL................ 170
6.6.1. Cc l7p c! bSn ................................................... 170
6.6.2. V dL truy vRn CSDL ......................................... 171
6.6.3. V dL c<p nh<t CSDL......................................... 174
Ti li8u tham khSo:.............................................................. 176
PhL lLc A: Trec nghi8m kiNn thKc........................................ 177
PhL LLc B:[p n trec nghi8m kiNn thKc............................. 205




5
L#I NI &'U
Ngn ng; l<p trnh java ra 3li v 3ac cc nh nghin cKu
cBa Cng ty Sun Microsystem gi7i thi8u vo njm 1995. Sau khi
ra 3li khng lu, ngn ng; l<p trnh ny 3 3ac s? dLng rDng
ri v phJ biNn 3Fi v7i cc l<p trnh vin chuyn nghi8p cmng
nh cc nh pht tri@n ph4n m:m. G4n 3y ngn ng; l<p trnh,
cng ngh8 java 3 3ac 3a vo giSng dPy 1 cc c! s1 3o tPo
l<p trnh vin chuyn nghi8p. MDt sF trlng 3Pi h\c 1 Vi8t
Nam dPy mn l<p trnh java nh mDt chuyn 3: tM ch\n cho cc
sinh vin cng ngh8 thng tin giai 3oPn chuyn ngnh.
Sau mDt thli gian tm hi@u, lm vi8c v 3ac tham gia giSng
dPy chuyn 3: l<p trnh java cho l7p c? nhn tin h\c tb xa qua
mPng. Nhm tc giS chng ti quyNt 3=nh bin soPn cuFn gio
trnh ny nhOm phLc vL cng tc giSng dPy cmng nh h\c t<p
cBa sinh vin chuyn ngnh cng ngh8 thng tin.
NDi dung gio trnh t<p trung vo nh;ng kiNn thKc cjn bSn
nhRt cBa l<p trnh java gip ngli 3\c b7c 34u tiNp c<p dn
dng v7i cng ngh8 m7i ny, v 3y cmng chnh l mDt b7c
38m 3@ chng ta tr1 thnh java shooter. MDt sF vRn 3: nng
trong ngn ng; l<p trnh java nh: javabean, thiNt kNt giao di8n
dng th vi8n JFC(Java Foundation Class), l<p trnh mPng, l<p
trnh c! s1 d; li8u bOng java, l<p trnh Kng dLng web dng
J2EE (Java 2 Enterprise Edition), so 3ac ni 3Nn trong cc
chuyn 3: nng cao. Ch!ng 6 cBa gio trnh gi7i thi8u tJng
quan v: l<p trnh c! s1 d; li8u dng jdbc, mDt nDi dung theo
chng ti c4n phSi 3ac trnh by trong mDt chuyn 3: ring.
[@ c th@ 3\c hi@u gio trnh ny ngli 3\c c4n nem v;ng
cc kiNn thKc v:: nh<p mn l<p trnh, l<p trnh h7ng 3Fi tang.
[y l l4n x xu uR Rt t b bS Sn n 34u tin chec chen khng th@ trnh khpi
nh;ng sai st. Nhm tc giS rRt mong nh<n 3ac nh;ng kiNn
3ng gp cBa qu th4y c, cc 3Qng nghi8p v bPn 3\c 3@ c
6
th@ hon thi8n h!n gio trnh ny phLc vL cho vi8c h\c t<p cBa
sinh vin.

Xin chn thnh cSm !n!

TPHCM thng 01/2006
Nhm tc giS




























7
C Ch h) )* *n ng g 1 1: : G GI I+ +I I T TH HI I- -U U T T/ /N NG G Q QU UA AN N V V2 2 N NG G N N
N NG G3 3 L L6 6P P T TR R N NH H J JA AV VA A
1 1. .1 1. .M M7 7 9 9: :u u
Ch!ng ny so cung cRp cho sinh vin cc khi ni8m, kiNn thKc
c! bSn lin quan 3Nn vi8c l<p trnh Kng dLng bOng ngn ng;
Java nh: l=ch s? pht tri@n cBa java, cc 3Hc 3i@m cBa java,
khi ni8m my So, cRu trc cBa mDt ch!ng trnh 3!n giSn viNt
bOng Java cmng nh cch xy dMng, d=ch v thMc thi mDt
ch!ng trnh Java.
1 1. .2 2. .G Gi i= =i i t th hi i> >u u v v@ @ n ng g n n n ng gA A l lB Bp p t tr r n nh h J Ja av va a
1 1. .2 2. .1 1. . J Ja av va a l l g g ? ?
Java l ngn ng; l<p trnh h7ng 3Fi tang (tMa C++) do
Sun Microsystem 3a ra vo gi;a th<p nin 90.
Ch!ng trnh viNt bOng ngn ng; l<p trnh java c th@ chPy
trn bRt kq h8 thFng no c ci my So java (Java Virtual
Machine).
1 1. .2 2. .2 2. .L LC Cc ch h s sE E p ph h t t t tr ri iF Fn n c cH Ha a n ng g n n n ng gA A l lB Bp p t tr r n nh h J Ja av va a
Ngn ng; l<p trnh Java do James Gosling v cc cng sM
cBa Cng ty Sun Microsystem pht tri@n.
[4u th<p nin 90, Sun Microsystem t<p hap cc nh nghin
cKu thnh l<p nn nhm 3Ht tn l Green Team. Nhm Green
Team c trch nhi8m xy dMng cng ngh8 m7i cho ngnh 3i8n
t? tiu dng. [@ giSi quyNt vRn 3: ny nhm nghin cKu pht
tri@n 3 xy dMng mDt ngn ng; l<p trnh m7i 3Ht tn l Oak
t!ng tM nh C++ nhng loPi bp mDt sF tnh njng nguy hi@m
cBa C++ v c khS njng chPy trn nhi:u n:n ph4n cKng khc
nhau. Cng lc 3 world wide web bet 34u pht tri@n v Sun 3
thRy 3ac ti:m njng cBa ngn ng; Oak nn 3 34u t cSi tiNn
8
v pht tri@n. Sau 3 khng lu ngn ng; m7i v7i tn g\i l
Java ra 3li v 3ac gi7i thi8u njm 1995.
Java l tn g\i cBa mDt hn 3So 1 Indonexia, [y l n!i
nhm nghin cKu pht tri@n 3 ch\n 3@ 3Ht tn cho ngn ng;
l<p trnh Java trong mDt chuyNn 3i tham quan v lm vi8c trn
hn 3So ny. Hn 3So Java ny l n!i rRt nJi tiNng v7i nhi:u
khu vln trQng cafe, 3 chnh l l do chng ta thlng thRy
bi@u tang ly caf trong nhi:u sSn phsm ph4n m:m, cng cL l<p
trnh Java cBa Sun cmng nh mDt sF hng ph4n m:m khc 3a
ra.
1 1. .2 2. .3 3. .M MJ Jt t s sL L 9 9N Nc c 9 9i iF Fm m n nP Pi i b bB Bc c c cH Ha a n ng g n n n ng gA A l lB Bp p t tr r n nh h J Ja av va a
My Qo Java (JVM - Java Virtual Machine)
TRt cS cc ch!ng trnh muFn thMc thi 3ac th phSi 3ac
bin d=ch ra m my. M my cBa tbng kiNn trc CPU cBa mti
my tnh l khc nhau (t<p l8nh m my cBa CPU Intel, CPU
Solarix, CPU Macintosh l khc nhau), v v<y tr7c 3y mDt
ch!ng trnh sau khi 3ac bin d=ch xong chu c th@ chPy 3ac
trn mDt kiNn trc CPU cL th@ no 3. [Fi v7i CPU Intel chng
ta c th@ chPy cc h8 3i:u hnh nh Microsoft Windows, Unix,
Linux, OS/2, Ch!ng trnh thMc thi 3ac trn Windows
3ac bin d=ch d7i dPng file c 3ui .EXE cn trn Linux th
3ac bin d=ch d7i dPng file c 3ui .ELF, v v<y tr7c 3y
mDt ch!ng trnh chPy 3ac trn Windows muFn chPy 3ac
trn h8 3i:u hnh khc nh Linux chvng hPn th phSi chunh s?a
v bin d=ch lPi. Ngn ng; l<p trnh Java ra 3li, nhl vo my
So Java m kh khjn nu trn 3 3ac khec phLc. MDt ch!ng
trnh viNt bOng ngn ng; l<p trnh Java so 3ac bin d=ch ra m
cBa my So java (m java bytecode). Sau 3 my So Java ch=u
trch nhi8m chuy@n m java bytecode thnh m my t!ng Kng.
Sun Microsystem ch=u trch nhi8m pht tri@n cc my So Java
chPy trn cc h8 3i:u hnh trn cc kiNn trc CPU khc nhau.
Thng dCch:
9
Java l mDt ngn ng; l<p trnh vba bin d=ch vba thng
d=ch. Ch!ng trnh nguQn viNt bOng ngn ng; l<p trnh Java c
3ui *.java 34u tin 3ac bin d=ch thnh t<p tin c 3ui *.class
v sau 3 so 3ac trnh thng d=ch thng d=ch thnh m my.
&Jc lBp n@n:
MDt ch!ng trnh viNt bOng ngn ng; Java c th@ chPy trn
nhi:u my tnh c h8 3i:u hnh khc nhau (Windows, Unix,
Linux, ) minn sao 1 3 c ci 3Ht my So java (Java Virtual
Machine). ViNt mDt l4n chPy m\i n!i (write once run
anywhere).
H)=ng 9Li t)Rng:
H7ng 3Fi tang trong Java t!ng tM nh C++ nhng Java
l mDt ngn ng; l<p trnh h7ng 3Fi tang hon ton. TRt cS
m\i thK 3: c<p 3Nn trong Java 3:u lin quan 3Nn cc 3Fi tang
3ac 3=nh ngh_a tr7c, th<m ch hm chnh cBa mDt ch!ng
trnh viNt bOng Java (3 l hm main) cmng phSi 3Ht bn trong
mDt l7p. H7ng 3Fi tang trong Java khng c tnh 3a kN thba
(multi inheritance) nh trong C++ m thay vo 3 Java 3a ra
khi ni8m interface 3@ ht tra tnh 3a kN thba. VRn 3: ny so
3ac bn chi tiNt trong ch!ng 3.
&a nhi>m - 9a luSng (MultiTasking - Multithreading):
Java ht tra l<p trnh 3a nhi8m, 3a luQng cho php nhi:u tiNn
trnh, ti@u trnh c th@ chPy song song cng mDt thli 3i@m v
t!ng tc v7i nhau.
KhQ chuyFn (portable):
Ch!ng trnh Kng dLng viNt bOng ngn ng; Java chu c4n
chPy 3ac trn my So Java l c th@ chPy 3ac trn bRt kq my
tnh, h8 3i:u hnh no c my So Java. ViNt mDt l4n, chPy m\i
n!i (Write Once, Run Anywhere).
HT trR mVnh cho vi>c pht triFn Wng dXng:
10
Cng ngh8 Java pht tri@n mPnh mo nhl vo 3Pi gia Sun
Microsystem cung cRp nhi:u cng cL, th vi8n l<p trnh phong
ph ht tra cho vi8c pht tri@n nhi:u loPi hnh Kng dLng khc
nhau cL th@ nh: J2SE (Java 2 Standard Edition) ht tra pht
tri@n nh;ng Kng dLng 3!n, Kng dLng client-server; J2EE (Java 2
Enterprise Edition) ht tra pht tri@n cc Kng dLng th!ng mPi,
J2ME (Java 2 Micro Edition) ht tra pht tri@n cc Kng dLng
trn cc thiNt b= di 3Dng, khng dy,
1 1. .3 3. .C C c c W Wn ng g d dX Xn ng g J Ja av va a
1 1. .3 3. .1 1. .J Ja av va a v v W Wn ng g d dX Xn ng g C Co on ns so ol le e
Yng dLng Console l Kng dLng nh<p xuRt 1 chN 3D vjn bSn
t!ng tM nh mn hnh Console cBa h8 3i:u hnh MS-DOS.
L\ai ch!ng trnh Kng dLng ny thch hap v7i nh;ng ai b7c
34u lm quen v7i ngn ng; l<p trnh java.
Cc Kng dLng ki@u Console thlng 3ac dng 3@ minh h\a cc
v dL c! bSn lin quan 3Nn c php ngn ng;, cc thu<t ton, v
cc ch!ng trnh Kng dLng khng c4n thiNt 3Nn giao di8n ngli
dng 3Q h\a.


class HelloWorld
{ public static void main(String[] args)
11
{
System.out.println("\nHello World");
}
}
1 1. .3 3. .2 2. .J Ja av va a v v W Wn ng g d dX Xn ng g A Ap pp pl le et t
Java Applet l loPi Kng dLng c th@ nhng v chPy trong trang
web cBa mDt trnh duy8t web. Tb khi internet m7i ra 3li, Java
Applet cung cRp mDt khS njng l<p trnh mPnh mo cho cc trang
web. Nhng g4n 3y khi cc ch!ng trnh duy8t web 3 pht
tri@n v7i khS njng l<p trnh bOng VB Script, Java Script,
HTML, DHTML, XML, cng v7i sM canh tranh khFc li8t
cBa Microsoft v Sun 3 lm cho Java Applet lu ml. V cho
3Nn by gil g4n nh cc l<p trnh vin 3:u khng cn mHn
m v7i Java Applet n;a. (trnh duy8t IE 3i km trong phin
bSn Windows 2000 3 khng cn mHc nhin ht tra thMc thi mDt
Kng dLng Java Applet). Hnh bn d7i minh h\a mDt ch!ng
trnh java applet thMc thi trong mDt trang web.

12

1 1. .3 3. .3 3. .J Ja av va a v v p ph h t t t tr ri iF Fn n W Wn ng g d dX Xn ng g D De es sk kt to op p d d n ng g A AW WT T v v
J JF FC C
Vi8c pht tri@n cc ch!ng trnh Kng dLng c giao di8n ngli
dng 3Q h\a trMc quan giFng nh nh;ng ch!ng trnh 3ac viNt
dng ngn ng; l<p trnh VC++ hay Visual Basic 3 3ac java
giSi quyNt bOng th vi8n AWT v JFC. JFC l th vi8n rRt
phong ph v ht tra mPnh mo h!n nhi:u so v7i AWT. JFC gip
cho ngli l<p trnh c th@ tPo ra mDt giao di8n trMc quan cBa bRt
kq Kng dLng no. Lin quan 3Nn vi8c pht tri@n cc Kng dLng
c giao di8n ngli dng 3Q h\a trMc quan chng ta so tm hi@u
chi tiNt trong ch!ng 4.

Minh h\a thiNt kN giao di8n ngli dng s? dLng JFC
13



1 1. .3 3. .4 4. .J Ja av va a v v p ph h t t t tr ri iF Fn n W Wn ng g d dX Xn ng g W We eb b
Java ht tra mPnh mo 3Fi v7i vi8c pht tri@n cc Kng dLng Web
thng qua cng ngh8 J2EE (Java 2 Enterprise Edition). Cng
ngh8 J2EE hon ton c th@ tPo ra cc Kng dLng Web mDt cch
hi8u quS khng thua km cng ngh8 .NET m Microsft 3ang
quSng co.
Hi8n nay c rRt nhi:u trang Web nJi tiNng 1 Vi8t Nam cmng
nh khep n!i trn thN gi7i 3ac xy dMng v pht tri@n dMa trn
n:n cng ngh8 Java. SF Kng dLng Web 3ac xy dMng dng
cng ngh8 Java chec chen khng ai c th@ biNt 3ac con sF
chnh xc l bao nhiu, nhng chng ti 3a ra 3y vi v dL 3@
thRy rOng cng ngh8 Java cBa Sun l mDt 3Fi thB 3ng glm
cBa Microsoft.
14
http://java.sun.com/
http://e-docs.bea.com/
http://www.macromedia.com/software/jrun/
http://tomcat.apache.org/index.html
Chec khng t ngli trong chng ta biNt 3Nn trang web thng tin
nh 3Rt nJi tiNng 1 TPHCM 3 l: http://www.nhadat.com/.
Yng dLng Web ny cmng 3ac xy dMng dMa trn n:n cng
ngh8 java.
BPn c th@ tm hi@u chi tiNt h!n v: cng ngh8 J2EE tPo 3=a chu:
http://java.sun.com/j2ee/
1 1. .3 3. .5 5. .J Ja av va a v v p ph h t t t tr ri iF Fn n c c c c W Wn ng g d dX Xn ng g n nh h n ng g
Java Sun 3a ra cng ngh8 J2ME (The Java 2 Platform, Micro
Edition J2ME) ht tra pht tri@n cc ch!ng trnh, ph4n m:m
nhng. J2ME cung cRp mDt mi trlng cho nh;ng ch!ng trnh
Kng dLng c th@ chPy 3ac trn cc thiNt b= c nhn nh: 3i8n
th\ai di 3Dng, my tnh bp ti PDA hay Palm, cmng nh cc
thiNt b= nhng khc.

BPn c th@ tm hi@u chi tiNt h!n v: cng ngh8 J2ME tPi 3=a chu:
http://java.sun.com/j2me/
1 1. .4 4. .D DC Cc ch h v v t th hY Yc c t th hi i m mJ Jt t c ch h) )* *n ng g t tr r n nh h v vi iZ Zt t b b[ [n ng g J Ja av va a
Vi8c xy dMng, d=ch v thMc thi mDt ch!ng trnh viNt bOng
ngn ng; l<p trnh java c th@ tm tet qua cc b7c sau:
- ViZt m nguSn: dng mDt ch!ng trnh soPn thSo no
3Ry (NotePad hay Jcreator chvng hPn) 3@ viNt m nguQn
v lu lPi v7i tn c 3ui .java
15
- Bin dCch ra m my Qo: dng trnh bin d=ch javac 3@
bin d=ch m nguQn .java thnh m cBa my So (java
bytecode) c 3ui .class v lu ln 3_a
- Thng dCch v thYc thi: Kng dLng 3ac load vo bD
nh7, thng d=ch v thMc thi dng trnh thng d=ch Java
thng qua l8nh java.
o &)a m java bytecode vo bJ nh=: 3y l b7c
loading. Ch!ng trnh phSi 3ac 3Ht vo trong
bD nh7 tr7c khi thMc thi. Loader so lRy cc
files chKa m java bytecode c 3ui .class v
nPp chng vo bD nh7.
o KiFm tra m java bytecode: tr7c khi trnh
thng d=ch chuy@n m bytecode thnh m my
t!ng Kng 3@ thMc thi th cc m bytecode phSi
3ac ki@m tra tnh hap l8.
o Thng dCch & thYc thi: cuFi cng d7i sM 3i:u
khi@n cBa CPU v trnh thng d=ch tPi mti thli
3i@m so c mDt m bytecode 3ac chuy@n sang
m my v thMc thi.


1 1. .5 5. .C Ch h) )* *n ng g t tr r n nh h J Ja av va a 9 9: :u u t ti i n n
1 1. .5 5. .1 1. .T TV Vo o c ch h) )* *n ng g t tr r n nh h n ng gu uS Sn n H He el ll lo oW Wo or rd dA Ap pp p
K Kh h1 1i i 3 3D Dn ng g N No ot te ep pa ad d v v g g 3 3o oP Pn n m m s sa au u
/ /* *V Vi i t t c ch h$ $% %n ng g t tr r n nh h i in n d d n ng g H He el ll lo oW Wo or rl ld d l l n n m m n n h h n nh h
C Co on ns so ol le e* */ /
c cl la as ss s H He el ll lo oW Wo or rl ld dA Ap pp p{ {
p pu ub bl li ic c s st ta at ti ic c v vo oi id d m ma ai in n( (S St tr ri in ng g[ [] ] a ar rg gs s) ){ {
/ // /I In n d do on ng g c ch hu u H He el ll lo oW Wo or rl ld d
S Sy ys st te em m. .o ou ut t. .p pr ri in nt tl ln n( ( H He el ll lo oW Wo or rl ld d ) ); ;
} }
} }
Lu lPi v7i tn HelloWorldApp.java
16

1 1. .5 5. .2 2. .B Bi i n n d dC Cc ch h t tB Bp p t ti in n n ng gu uS Sn n H He el ll lo oW Wo or rd dA Ap pp p
V Vi i8 8c c b bi i n n d d= =c ch h t t< <p p t ti in n m m n ng gu uQ Qn n c ch h ! !n ng g t tr r n nh h
H He el ll lo oW Wo or rl ld dA Ap pp p c c t th h@ @ t th hM Mc c h hi i8 8n n q qu ua a c c c c b b 7 7c c c cL L t th h@ @ n nh h s sa au u: :
- - M M1 1 c c? ?a a s sJ J C Co om mm ma an nd d P Pr ro om mp pt t. .
- - C Ch hu uy y@ @n n 3 3N Nn n t th h m mL Lc c c ch hK Ka a t t< <p p t ti in n n ng gu uQ Qn n v vb ba a t tP Po o r ra a. .
- - T Th hM Mc c h hi i8 8n n c c u u l l8 8n nh h: : j ja av va ac c H He el ll lo oW Wo or rd dA Ap pp p. .j ja av va a
NNu gHp thng bo lti Bad Command of filename hoHc
The name specified is not recognized as an internal or external
command, operable program or batch file c ngh_a l
Windows khng tm 3ac trnh bin d=ch javac. [@ s?a lti ny
chng ta c4n c<p nh<t lPi 3lng dgn PATH cBa h8 thFng.
Ngac lPi nNu thnh cng bPn so c thm t<p tin
HelloWordApp.class
1 1. .5 5. .3 3. .C Ch hV Vy y c ch h) )* *n ng g t tr r n nh h H He el ll lo oW Wo or rd dA Ap pp p
- - T TP Pi i d dg gu u n nh he ec c g g l l8 8n nh h: : j ja av va a H He el ll lo oW Wo or rd dA Ap pp p
- - N NN Nu u c ch h ! !n ng g t tr r n nh h 3 3 n ng g b bP Pn n s so o t th hR Ry y d d n ng g c ch h; ;
H He el ll lo oW Wo or rd d t tr r n n m m n n h h n nh h C Co on ns so ol le e. .
- N NN Nu u c c c c b bP Pn n n nh h< <n n 3 3 a ac c l lt ti i E Ex xc ce ep pt ti io on n i in n t th hr re ea ad d " "m ma ai in n
j ja av va a. .l la an ng g. .N No oC Cl la as ss sD De ef fF Fo ou un nd dE Er rr ro or r: : H He el ll lo oW Wo or rl ld dA Ap pp p c c
n ng gh h_ _a a l l J Ja av va a k kh h n ng g t th h@ @ t t m m 3 3 a ac c t t< <p p t ti in n m m b by yt te ec co od de e
t t n n H He el ll lo oW Wo or rl ld dA Ap pp p. .c cl la as ss s c cB Ba a c c c c b bP Pn n. . M MD Dt t t tr ro on ng g n nh h; ;n ng g
n n! !i i j ja av va a c cF F t t m m t t< <p p t ti in n b by yt te ec co od de e l l t th h m mL Lc c h hi i8 8n n t tP Pi i c cB Ba a
17
c c c c b bP Pn n. . V V t th h@ @ n nN Nu u t t< <p p t ti in n b by yt te e c co od de e 3 3 a ac c 3 3H Ht t 1 1 C C: :\ \j ja av va a
t th h c c c c b bP Pn n n n n n t th ha ay y 3 3J Ji i 3 3 l ln ng g d dg gn n t t7 7i i 3 3 . .
1 1. .5 5. .4 4. .C C\ \u u t tr r c c c ch h) )* *n ng g t tr r n nh h H He el ll lo oW Wo or rd dA Ap pp p
P Ph h) )* *n ng g t th hW Wc c m ma ai in n( () ): : l l 3 3i i@ @m m b be et t 3 34 4u u t th hM Mc c t th hi i m mD Dt t K Kn ng g d dL Ln ng g. .
M Mt ti i K Kn ng g d dL Ln ng g J Ja av va a p ph hS Si i c ch hK Ka a m mD Dt t p ph h ! !n ng g t th hK Kc c m ma ai in n c c d dP Pn ng g
n nh h s sa au u: : p pu ub bl li ic c s st ta at ti ic c v vo oi id d m ma ai in n( (S St tr ri in ng g[ [] ] a ar rg gs s) )
P Ph h ! !n ng g t th hK Kc c m ma ai in n c ch hK Ka a b ba a b bJ J t tb b 3 3H Hc c t tS S s sa au u: :
p pu ub bl li ic c c ch hu u r ra a r rO On ng g p ph h ! !n ng g t th hK Kc c m ma ai in n c c t th h@ @ 3 3 a ac c g g\ \i i
b bw wi i b bR Rt t k kq q 3 3F Fi i t t a an ng g n n o o. .
s st ta at ti ic c c ch hu u r ra a r re en ng g p ph h ! !n ng g t th hK Kc c m ma ai in n l l m mD Dt t p ph h ! !n ng g
t th hK Kc c l l7 7p p. .
v vo oi id d c ch hu u r ra a r rO On ng g p ph h ! !n ng g t th hK Kc c m ma ai in n s so o k kh h n ng g t tr rS S v v: : b bR Rt t
k kq q m mD Dt t g gi i t tr r= = n n o o. .

N Ng g n n n ng gA A J Ja av va a h hT T t tr rR R b ba a k ki iF Fu u c ch h t th h c ch h s sa au u: :
/ /* * t te ex xt t * */ /
/ // / t te ex xt t
/ /* ** * d do oc cu um me en nt ta at ti io on n * */ /. . C C n ng g c cL L j ja av va ad do oc c t tr ro on ng g b bD D J JD DK K s s? ? d dL Ln ng g
c ch h t th h c ch h n n y y 3 3@ @ c ch hu us sn n b b= = c ch ho o v vi i8 8c c t tM M 3 3D Dn ng g p ph h t t s si in nh h t t i i l li i8 8u u. .

- - D DR Ru u m m1 1 v v 3 3 n ng g n ng go o8 8P Pc c n nh h\ \n n { { v v } } : : l l b be et t 3 34 4u u v v k kN Nt t
t th h c c 1 1 k kh hF Fi i l l8 8n nh h. .
- - D DR Ru u c ch hR Rm m p ph hs sy y ; ; k kN Nt t t th h c c 1 1 d d n ng g l l8 8n nh h. .

1 1. .5 5. .5 5. .S SE E d dX Xn ng g p ph h) )* *n ng g t th hW Wc c/ /b bi iZ Zn n c cH Ha a l l= =p p
C C p ph h p p: : T T n n_ _l l7 7p p. .T T n n_ _b bi iN Nn n
h ho oH Hc c T T n n_ _l l7 7p p. .T T n n_ _p ph h ! !n ng g_ _t th hK Kc c( ( ) )

1 1. .6 6. .C C n ng g c cX X l lB Bp p t tr r n nh h v v c ch h) )* *n ng g t tr r n nh h d dC Cc ch h
1 1. .6 6. .1 1. .J J2 2S SD DK K
- Download J2SE phin bSn m7i nhRt t!ng Kng v7i h8
3i:u hnh 3ang s? dLng tb 3=a chu java.sun.com v ci
18
3Ht ln my tnh (phin bSn 3ac chng ti s? dLng khi
viNt gio trnh ny l J2SE 1.4). Sau khi ci xong, chng
ta c4n c<p nh<t 3lng dgn PATH h8 thFng chu 3Nn th
mLc chKa ch!ng trnh d=ch cBa ngn ng; java.

















1 1. .6 6. .2 2. .C C n ng g c cX X s so oV Vn n t th hQ Qo o m m n ng gu uS Sn n J Ja av va a. .
[@ viNt m nguQn java chng ta c th@ s? dLng trnh soPn
thSo NotePad hoHc mDt sF mi trlng pht tri@n ht tra ngn
ng; java nh: Jbuilder cBa hng Borland, Visual Caf cBa hng
Symantec, JDeveloper cBa hng Oracle, Visual J++ cBa
Microsoft,
Trong khun khJ gio trnh ny cmng nh 3@ h7ng dgn
sinh vin thMc hnh chng ti dng cng cL JCreator LE v3.50
cBa hng XINOX Software. Cc bPn c th@ download
J JC Cr re ea at to or r L LE E v v3 3. .5 50 0 t tb b h ht tt tp p: :/ // /w ww ww w. .j jc cr re ea at to or r. .c co om m/ /d do ow wn nl lo oa ad d. .h ht tm m. .
V V d d : : D D n ng g J JC Cr re ea at to or r t t& &o o v v t th h) )c c t th hi i c ch h$ $% %n ng g t tr r n nh h c c t t n n
H He el ll lo oW Wo or rl ld dA Ap pp p. .
B B$ $* *c c 1 1: : T T& &o o 1 1 E Em mp pt ty y P Pr ro oj je ec ct t
19
- - F Fi il le e N Ne ew w P Pr ro oj je ec ct t. .
- - C Ch h, ,n n E Em mp pt ty y p pr ro oj je ec ct t r r. .i i b b/ /m m n n t t c ch h, ,n n N Ne ex xt t












- - S Sa au u 0 0 n nh h1 1p p t t n n p pr ro oj je ec ct t v v b b/ /m m c ch h, ,n n F Fi in ni is sh h. .











B B$ $* *c c 2 2: : T T& &o o
m m2 2t t C Cl la as ss s m m* *i i t t n n H He el ll lo oW Wo or rl ld dA Ap pp p v v 0 0$ $a a v v o o P Pr ro oj je ec ct t h hi i3 3n n t t& &i i. .
- - F Fi il le e N Ne ew w C Cl la as ss s. .
- - N Nh h1 1p p v v o o t t n n C Cl la as ss s v v c ch h, ,n n F Fi in ni is sh h ( (h h n nh h b b n n d d$ $* *i i) ). .


20













B B$ $* *c c 3 3: : S So o& &n n t th h4 4o o m m n ng gu u. .n n ( (h h n nh h b b n n d d$ $* *i i) )





















C?a sJ
WorkSpace
C?a sJ soPn thSo
m nguQn
ThMc thi (F5)
D=ch (F7)
21
C Ch h) )* *n ng g 2 2: :
H H] ]N NG G, , B BI I^ ^N N, , K KI I` `U U D D3 3 L LI I- -U U, ,
T TO O N N T Ta a, , B BI I` `U U T TH Hc cC C V V C C C C
C Cd dU U T TR R C C & &I I2 2U U K KH HI I` `N N T TR RO ON NG G J JA AV VA A
2 2. .1 1. .B Bi iZ Zn n
- - B Bi iN Nn n l l v v n ng g n nh h7 7 d d n ng g 3 3@ @ l l u u t tr r; ; c c c c g gi i t tr r= = c cB Ba a c ch h ! !n ng g
t tr r n nh h. . M Mt ti i b bi iN Nn n g ge en n l li i: :n n v v7 7i i m mD Dt t k ki i@ @u u d d; ; l li i8 8u u v v m mD Dt t
3 3= =n nh h d da an nh h d du uy y n nh hR Rt t g g\ \i i l l t t n n b bi iN Nn n. .
- - T T n n b bi iN Nn n t th h n ng g t th h l ln ng g l l m mD Dt t c ch hu ut ti i c c c c k k t tM M
( (U Un ni ic co od de e) ), , k k s sF F. .
o o T T n n b bi iN Nn n p ph hS Si i b be et t 3 34 4u u b bO On ng g m mD Dt t c ch h; ; c c i i, , m mD Dt t d dR Ru u
g gP Pc ch h d d 7 7i i h ha ay y d dR Ru u d do ol ll la ar r. .
o o T T n n b bi iN Nn n k kh h n ng g 3 3 a ac c t tr r n ng g v v7 7i i c c c c t tb b k kh h a a ( (x xe em m
p ph hL L l lL Lc c c c c c t tb b k kh h a a t tr ro on ng g j ja av va a) ). .
o o T T n n b bi iN Nn n k kh h n ng g c c k kh ho oS Sn ng g t tr re en ng g 1 1 g gi i; ;a a t t n n. .
- - T Tr ro on ng g j ja av va a, , b bi iN Nn n c c t th h@ @ 3 3 a ac c k kh ha ai i b b o o 1 1 b bR Rt t k kq q n n! !i i 3 3 u u
t tr ro on ng g c ch h ! !n ng g t tr r n nh h. .
C C c ch h k kh ha ai i b b o o
< <k ki i@ @u u_ _d d; ;_ _l li i8 8u u> > < <t t n n_ _b bi iN Nn n> >; ;
< <k ki i@ @u u_ _d d; ;_ _l li i8 8u u> > < <t t n n_ _b bi iN Nn n> > = = < <g gi i _ _t tr r= => >; ;
G G n n g gi i t tr rC C c ch ho o b bi iZ Zn n
< <t t n n_ _b bi iN Nn n> > = = < <g gi i _ _t tr r= => >; ;

BiZn cng cJng (ton cXc): l biNn c th@ truy xuRt 1 khep n!i
trong ch!ng trnh, thlng 3ac khai bo dng tb kha public,
hoHc 3Ht chng trong mDt class.
BiZn cXc bJ: l biNn chu c th@ truy xuRt trong khFi l8nh n khai
bo.

22
L)u : Trong ngn ng; l<p trnh java c phn bi8t ch; in hoa
v in thlng. V v<y chng ta c4n lu khi 3Ht tn cho cc 3Fi
t!ng d; li8u cmng nh cc x? l trong ch!ng trnh.
V d:

import java.lang.*;
import java.io.*;
class VariableDemo
{
static int x, y;
public static void main(String[] args)
{
x = 10;
y = 20;
int z = x+y;
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("z = x + y =" + z);
System.out.println("So nho hon la so:" +
Math.min(x, y));
char c = 80;
System.out.println("ky tu c la: " + c);
}
}

KNt quS ch!ng trnh


23
2 2. .2 2. .C C c c k ki iF Fu u d dA A l li i> >u u c c* * s s7 7
Ngn ng; l<p trnh java c 8 ki@u d; li8u c! s1: byte, short, int,
long, float, double, boolean v char.

24














Ki@u Kch
th7c
(bytes)
Gi tr= min Gi tr= max Gi tr=
mHc
3=nh
byte 1 -256 255 0
short 2 -32768 32767 0
int 4 -2
31
2
31
- 1 0
long 8 -2
63
2
63
- 1 0L
float 4 0.0f
double 8 0.0d

2 2. .2 2. .1 1. .K Ki iF Fu u s sL L n ng gu uy y n n
- Java cung cRp 4 ki@u sF nguyn khc nhau l: byte,
short, int, long. Kch th7c, gi tr= nhp nhRt, l7n nhRt,
cmng nh gi tr= mHc 3=nh cBa cc ki@u d; li8u sF
nguyn 3ac m tS chi tiNt trong bSng trn.
- Ki@u mHc 3=nh cBa cc sF nguyn l ki@u int.
- Cc sF nguyn ki@u byte v short rRt t khi 3ac dng.
- Trong java khng c ki@u sF nguyn khng dRu nh
trong ngn ng; C/C++.
Ki@u c! s1
Ki@u lu<n l
boolean
Ki@u sF
ki@u nguyn ki@u thMc
Ki@u k tM
char
byte short int long
float double
25

Khai bo v kh1i tPo gi tr= cho cc biNn ki@u nguyn:
int x = 0;
long y = 100;

MJt sL l)u 9Li v=i cc php ton trn sL nguyn:
- NNu hai ton hPng ki@u long th kNt quS l ki@u long.
MDt trong hai ton hPng khng phSi ki@u long so 3ac
chuy@n thnh ki@u long tr7c khi thMc hi8n php ton.
- NNu hai ton hPng 34u khng phSi ki@u long th php
tnh so thMc hi8n v7i ki@u int.
- Cc ton hPng ki@u byte hay short so 3ac chuy@n sang
ki@u int tr7c khi thMc hi8n php ton.
- Trong java khng th@ chuy@n biNn ki@u int v ki@u
boolean nh trong ngn ng; C/C++.

V d: c 3oPn ch!ng trnh nh sau
boolean b = false;
if (b == 0)
{
System.out.println("Xin chao");
}
Lc bin d=ch 3oPn ch!ng trnh trn trnh d=ch so bo lti:
khng 3ac php so snh biNn ki@u boolean v7i mDt gi tr= ki@u
int.



26
2 2. .2 2. .2 2. .K Ki iF Fu u d d\ \u u c ch h\ \m m 9 9J Jn ng g
[Fi v7i ki@u dRu chRm 3Dng hay ki@u thMc, java ht tra hai ki@u
d; li8u l float v double.
Ki@u float c kch th7c 4 byte v gi tr= mHc 3=nh l 0.0f
Ki@u double c kch th7c 8 byte v gi tr= mHc 3=nh l 0.0d

SF ki@u dRu chRm 3Dng khng c gi tr= nhp nhRt cmng khng
c gi tr= l7n nhRt. Chng c th@ nh<n cc gi tr=:
- SF m
- SF d!ng
- V cMc m
- V cMc d!ng

Khai bo v kh1i tPo gi tr= cho cc biNn ki@u dRu chRm 3Dng:
float x = 100.0/7;
double y = 1.56E6;

MDt sF lu 3Fi v7i cc php ton trn sF dRu chRm 3Dng:
- NNu mti ton hPng 3:u c ki@u dRn chRm 3Dng th php
ton chuy@n thnh php ton dRu chRm 3Dng.
- NNu c mDt ton hPng l double th cc ton hPng cn
lPi so 3ac chuy@n thnh ki@u double tr7c khi thMc
hi8n php ton.
- BiNn ki@u float v double c th@ p chuy@n sang ki@u d;
li8u khc trb ki@u boolean.

2 2. .2 2. .3 3. .K Ki iF Fu u k k t tY Y ( (c ch ha ar r) )
Ki@u k tM trong ngn ng; l<p trnh java c kch th7c l 2
bytes v chu dng 3@ bi@u dinn cc k tM trong bD m Unicode.
Nh v<y ki@u char trong java c th@ bi@u dinn tRt cS 2
16
= 65536
k tM khc nhau.
Gi tr= mHc 3=nh cho mDt biNn ki@u char l null.

27
2 2. .2 2. .4 4. .K Ki iF Fu u l lu uB Bn n l l ( (b bo oo ol le ea an n) )
- Ki@u boolean chu nh<n 1 trong 2 gi tr=: true hoHc false.
- Trong java ki@u boolean khng th@ chuy@n thnh ki@u
nguyn v ngac lPi.
- Gi tr= mHc 3=nh cBa ki@u boolean l false.

2 2. .3 3. .H H[ [n ng g: :
- HOng l mDt gi tr= bRt biNn trong ch!ng trnh
- Tn hOng 3ac 3Ht theo qui 7c giFng nh tn biNn.
- HOng sF nguyn: trlng hap gi tr= hOng 1 dPng long ta
thm vo cuFi chuti sF ch; l hay L. (v dL: 1L)
- HOng sF thMc: trulng hap gi tr= hOng c ki@u float ta
thm tiNp v_ ng; f hay F, cn ki@u sF double th ta
thm tiNp v_ ng; d hay D.
- HOng Boolean: java c 2 hOng boolean l true, false.
- HOng k tM: l mDt k tM 3!n nOm gi;a nOm gi;a 2 dRu
ngoHc 3!n.
o V dL: a: hOng k tM a
o MDt sF hOng k tM 3Hc bi8t


K tM ngh_a
\b Xa li (BackSpace)
\t Tab
\n XuFng hng
\r DRu enter
\ Nhy kp
\ Nhy 3!n
\\ SF ngac
\f [sy trang
\uxxxx K tM unicode

28
- HOng chuti: l t<p hap cc k tM 3ac 3Ht gi;a hai dRu
nhy kp . MDt hOng chuti khng c k tM no l mDt
hOng chuti rtng.
o V dL: Hello Wolrd
o Lu : HOng chuti khng phSi l mDt ki@u d;
li8u c! s1 nhng vgn 3ac khai bo v s? dLng
trong cc ch!ng trnh.

2 2. .4 4. .L L> >n nh h, , k kh hL Li i l l> >n nh h t tr ro on ng g j ja av va a
GiFng nh trong ngn ng; C, cc cu l8nh trong java kNt
thc bOng mDt dRu chRm phsy (;).
MDt khFi l8nh l 3oPn ch!ng trnh gQm hai l8nh tr1 ln v
3ac bet 34u bOng dRu m1 ngoHc nh\n ({) v kNt thc bOng dRu
3ng ngoHc nh\c (}).
Bn trong mDt khFi l8nh c th@ chKa mDt hay nhi:u l8nh
hoHc chKa cc khFi l8nh khc.

{ // khFi 1
{ // khFi 2
l8nh 2.1
l8nh 2.2

} // kNt thc khFi l8nh 2
l8nh 1.1
l8nh 1.2

} // kNt thc khFi l8nh 1

{ // bet 34u khFi l8nh 3
// Cc l8nh thuDc khFi l8nh 3
//
} // kNt thc thFi l8nh 3

29
2 2. .5 5. .T To o n n t tE E v v b bi iF Fu u t th hW Wc c
2 2. .5 5. .1 1. .T To o n n t tE E s sL L h he ec c
Ton t? ngh_a
+ CDng
- Trb
* Nhn
/ Chia nguyn
% Chia d
++ Tjng 1
-- GiSm 1

2 2. .5 5. .2 2. .T To o n n t tE E t tr r n n b bi it t

Ton t? ngh_a
& AND
| OR
^ XOR
<< D=ch tri
>> D=ch phSi
>>> D=ch phSi v 3i:n 0 vo bit trFng
~ B bit

2 2. .5 5. .3 3. .T To o n n t tE E q qu ua an n h h> > & & l lo og gi ic c

Ton t? ngh_a
== So snh bOng
!= So snh khc
> So snh l7n h!n
< So snh nhp h!n
>= So snh l7n h!n hay bOng
<= So snh nhp h!n hay bOng
30
|| OR (bi@u thKc logic)
&& AND (bi@u thKc logic)
! NOT (bi@u thKc logic)

2 2. .5 5. .4 4. .T To o n n t tE E p p k ki iF Fu u
- p ki@u rDng (widening conversion): tb ki@u nhp sang
ki@u l7n (khng mRt mt thng tin)
- p ki@u hxp (narrow conversion): tb ki@u l7n sang ki@u
nhp (c khS njng mRt mt thng tin)
< <t t n n b bi iN Nn n> > = = ( (k ki i@ @u u_ _d d; ;_ _l li i8 8u u) ) < <t t n n_ _b bi iN Nn n> >; ;
V V d d : :
f fl lo oa at t f fN Nu um m = = 2 2. .2 2; ;
i in nt t i iC Co ou un nt t = = ( (i in nt t) ) f fN Nu um m; ; / // / ( (i iC Co ou un nt t = = 2 2) )

2 2. .5 5. .5 5. .T To o n n t tE E 9 9i i@ @u u k ki i> >n n
C C p ph h p p: : < <3 3i i: :u u k ki i8 8n n> > ? ? < <b bi i@ @u u t th hK Kc c 1 1> > : : < < b bi i@ @u u t th hK Kc c 2 2> >
N NN Nu u 3 3i i: :u u k ki i8 8n n 3 3 n ng g t th h c c g gi i t tr r= =, , h ha ay y t th hM Mc c h hi i8 8n n < <b bi i@ @u u t th hK Kc c 1 1> >, ,
c c n n n ng g a ac c l lP Pi i l l < <b bi i@ @u u t th hK Kc c 2 2> >. .
< <3 3i i: :u u k ki i8 8n n> >: : l l m mD Dt t b bi i@ @u u t th hK Kc c l lo og gi ic c
< <b bi i@ @u u t th hK Kc c 1 1> >, , < <b bi i@ @u u t th hK Kc c 2 2> >: : c c t th h@ @ l l h ha ai i g gi i t tr r= =, , h ha ai i b bi i@ @u u t th hK Kc c
h ho oH Hc c h ha ai i h h n nh h 3 3D Dn ng g. .

V V d d : :
i in nt t x x = = 1 10 0; ;
i in nt t y y = = 2 20 0; ;
i in nt t Z Z = = ( (x x< <y y) ) ? ? 3 30 0 : : 4 40 0; ;
/ // / K K t t q qu u4 4 z z = = 3 30 0 d do o b bi i6 6u u t th h8 8c c ( (x x < < y y) ) l l 0 0 n ng g. .

2 2. .5 5. .6 6. .T Th hW W t tY Y ) )u u t ti i n n
ThK tM u tin tnh tb tri qua phSi v tb trn xuFng d7i

Cao nhRt
31
() [] .
++ -- ~ !
* / %
+ -
>> >>> (d9ch ph4i v
0i;n 0 vo bit tr<ng)
<<
> >= < <=
== !=
&
^
|
&&
||
?:
= <tont?>=
ThRp nhRt

2 2. .6 6. .C C\ \u u t tr r c c 9 9i i@ @u u k kh hi iF Fn n
2 2. .6 6. .1 1. .C C\ \u u t tr r c c 9 9i i@ @u u k ki i> >n n i if f e el ls se e
D DV Vn ng g 1 1: :
i if f ( (< <3 3i i: :u u_ _k ki i8 8n n> >) )
{ {
< <k kh hF Fi i_ _l l8 8n nh h> >; ;
} }

D DV Vn ng g 2 2: :
i if f ( (< <3 3i i: :u u_ _k ki i8 8n n> >) )
{ {
< <k kh hF Fi i _ _l l8 8n nh h1 1> >; ;
} }
e el ls se e
{ {
< <k kh hF Fi i _ _l l8 8n nh h2 2> >; ;
32
} }

2 2. .6 6. .2 2. .C C\ \u u t tr r c c s sw wi it tc ch h c ca as se e
s sw wi it tc ch h ( (< <b bi iN Nn n> >) )
{ {
c ca as se e < <g gi i t tr r= =_ _1 1> >: :
< <k kh hF Fi i_ _l l8 8n nh h_ _1 1> >; ;
b br re ea ak k; ;
. .
c ca as se e < <g gi i t tr r= =_ _n n> >: :
< <k kh hF Fi i_ _l l8 8n nh h_ _n n> >; ;
b br re ea ak k; ;
d de ef fa au ul lt t: :
< <k kh hF Fi i l l8 8n nh h d de ef fa au ul lt t> >; ;
} }

2 2. .6 6. .3 3. .C C\ \u u t tr r c c l lN Np p
D DV Vn ng g 1 1: : w wh hi il le e( ( ) )
w wh hi il le e ( (3 3i i: :u u_ _k ki i8 8n n_ _l lH Hp p) )
{ {
k kh hF Fi i _ _l l8 8n nh h; ;
} }

D DV Vn ng g 2 2: : d do o { { } } w wh hi il le e; ;
d do o
{ {
k kh hF Fi i_ _l l8 8n nh h; ;
} } w wh hi il le e ( (3 3i i: :u u_ _k ki i8 8n n) ); ;

D DV Vn ng g 3 3: : f fo or r ( ( ) )
f fo or r ( (k kh h1 1i i_ _t tP Po o_ _b bi iN Nn n_ _3 3N Nm m; ;3 3k k_ _l lH Hp p; ;t tj jn ng g_ _b bi iN Nn n) )
{ {
< <k kh hF Fi i _ _l l8 8n nh h> >; ;
33
} }

2 2. .6 6. .4 4. .C C\ \u u t tr r c c l l> >n nh h n nh hQ Qy y ( (j ju um mp p) )
L>nh break: trong cRu trc switch chng ta dng cu l8nh
break 3@ thot thpi cRu trc switch trong cng chKa n. T!ng
tM nh v<y, trong cRu trc lHp, cu l8nh break dng 3@ that
khpi cRu trc lHp trong cng chKa n.
L>nh continue: dng 3@ tiNp tLc vng lHp trong cng chKa n
(ngac v7i break).
Nhn (label):
Khng giFng nh C/C++, Java khng ht tra l8nh goto 3@ nhSy
3Nn 1 v= tr no 3 cBa ch!ng trnh. Java dng kZt hRp nhn
(label) v=i tf kha break v continue 3@ thay thN cho l8nh
goto.
V d:
label:
for ()
{ for ()
{ if (<bi6u th8c 0i;u ki3n>)
break label;
else
continue label;
}
}
L8nh label: xc 3=nh v= tr cBa nhn v xem nh tn cBa vng
lHp ngoi. NNu <bi6u th8c 0i;u ki3n> 3ng th l8nh break label
so thMc hi8n vi8c nhSy ra khpi vng lHp c nhn l label,
ngac lPi so tiNp tLc vng lHp c nhn label (khc v7i break
v continue thng thlng chu thot khpi hay tiNp tLc vng lHp
trong cng chKa n.).
2 2. .7 7. .L L= =p p b ba ao o k ki iF Fu u d dA A l li i> >u u c c* * s s7 7 ( (W Wr ra ap pp pe er r C Cl la as ss s) )

Data type Wrapper Class Ghi ch
34
(java.lang.*)
boolean Boolean
byte Byte
short Short
char Character
int Integer
long Long
Float Float
double Double
- Gi (package): chKa
nhm nhi:u class.
- Ngoi cc Wrapper
Class, gi java.lang cn
cung cRp cc l7p n:n
tSng cho vi8c thiNt kN
ngn ng; java nh:
String, Math,

2 2. .8 8. .K Ki iF Fu u d dA A l li i> >u u m mQ Qn ng g
Nh chng ta 3 biNt Java c 2 ki@u d; li8u
- Ki@u d; li8u c! s1 (Primitive data type)
- Ki@u d; li8u tham chiNu hay dgn xuRt (reference data
type): thlng c 3 ki@u:
o Ki@u mSng
o Ki@u l7p
o Ki@u giao tiNp(interface).
i 3y chng ta so tm hi@u mDt sF vRn 3: c! bSn lin quan 3:n
ki@u mSng. Ki@u l7p(class) v giao tiNp(interface) chng ta so
tm hi@u chi tiNt trong ch!ng 3 v cc ch!ng sau.
2 2. .8 8. .1 1. .K Kh h i i n ni i> >m m m mQ Qn ng g
MSng l t<p hap nhi:u ph4n t? c cng tn, cng ki@u d; li8u
v mti ph4n t? trong mSng 3ac truy xuRt thng qua chu sF cBa
n trong mSng.
2 2. .8 8. .2 2. .K Kh ha ai i b b o o m mQ Qn ng g
<ki@u d; li8u> <tn mSng>[];
hoHc <ki@u d; li8u>[] <tn mSng>;

V d:
int arrInt[];
hoHc int[] arrInt;
35
int[] arrInt1, arrInt2, arrInt3;

2 2. .8 8. .3 3. .C C\ \p p p ph h t t b bJ J n nh h= = c ch ho o m mQ Qn ng g
- Khng giFng nh trong C, C++ kch th7c cBa mSng 3ac xc
3=nh khi khai bo. Chvng hPn nh:
int arrInt[100]; // Khai bo ny trong Java s= b9 bo l?i.
- [@ cRp pht bD nh7 cho mSng trong Java ta c4n dng tb kha
new. (TRt cS trong Java 3:u thng qua cc 3Fi tang). Chvng
hPn 3@ cRp pht vng nh7 cho mSng trong Java ta lm nh sau:
int arrInt = new int[100];

2 2. .8 8. .4 4. .K Kh h7 7i i t tV Vo o m mQ Qn ng g
Chng ta c th@ kh1i tPo gi tr= ban 34u cho cc ph4n t? cBa
mSng khi n 3ac khai bo.
V d:
int arrInt[] = {1, 2, 3};
char arrChar[] = {a, b, c};
String arrStrng[] = {ABC, EFG, GHI};

2 2. .8 8. .5 5. .T Tr ru uy y c cB Bp p m mQ Qn ng g
Chu sF mSng trong Java bet 34u t 0. V v<y ph4n t? 34u tin c
chu sF l 0, v ph4n t? thK n c chu sF l n-1. Cc ph4n t? cBa
mSng 3ac truy xuRt thng qua chu sF cBa n 3Ht gi;a cHp dRu
ngoHc vung ([]).
V d:
int arrInt[] = {1, 2, 3};
int x = arrInt[0]; // x s= c gi tr9 l 1.
int y = arrInt[1]; // y s= c gi tr9 l 2.
int z = arrInt[2]; // z s= c gi tr9 l 3.

L)u : Trong nhng ngn ng; l<p trnh khc (C chvng hPn),
mDt chuti 3ac xem nh mDt mSng cc k tM. Trong java th
36
khc, java cung cRp mDt l7p String 3@ lm vi8c v7i 3Fi tang
d; li8u chuti cng khc thao tc trn 3Fi tang d; li8u ny.

2 2. .9 9. .M MJ Jt t s sL L v v d dX X m mi in nh h h he ea a: :
V d 1: Nh<p k tM tb bn phm
import java.io.*;
/* gi ny cung c/p th) vi3n xu/t nh1p h3 th<ng thng qua
nhAng lu.ng dA //li3u v h3 th<ng file.*/
class InputChar
{
public static void main(String args[])
{
char ch = ;
try
{
ch = (char) System.in.read();
}
catch(Exception e)
{
System.out.println(Nh1p l?i!);
}

System.out.println(Ky tu vua nhap: + ch);
}
}

V d 2: Nh<p d; li8u sF
import java.io.*;
class inputNum
{ public static void main(String[] args)
{ int n=0;
try
{ BufferedReader in =
new BufferedReader(
37
new InputStreamReader(
System.in));
String s;
s = in.readLine();
n = Integer.parseInt(s);
}
catch(Exception e)
{ System.out.println(Nh1p dA li3u b9
l?i !);
}

System.out.println(B&n vBa nh1p s<: + n);
}
}

V d 3: Nh<p v xuRt gi tr= cc ph4n t? cBa mDt mSng cc sF
nguyn.
class ArrayDemo
{
public static void main(String args[])
{
int arrInt[] = new int[10];
int i;
for(i = 0; i < 10; i = i+1)
arrInt[i] = i;

for(i = 0; i < 10; i = i+1)
System.out.println("This is arrInt[" + i +
"]: " + arrInt[i]);
}
}

38


V d 4: Tm ph4n t? c gi tr= nhp nhRt (Min) v l7n nhRt
(Max) trong mDt mSng.
class MinMax
{ public static void main(String args[])
{ int nums[] = new int[10];
int min, max;
nums[0] = 99;
nums[1] = -10;
nums[2] = 100123;
nums[3] = 18;
nums[4] = -978;
nums[5] = 5623;
nums[6] = 463;
nums[7] = -9;
nums[8] = 287;
nums[9] = 49;
min = max = nums[0];
for(int i=1; i < 10; i++)
{
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
}
System.out.println("min and max: " + min + " "
+ max);
}
}
class MinMax2
39
{
public static void main(String args[])
{
int nums[] = { 99, -10, 100123, 18, -978,
5623, 463, -9, 287, 49 };
int min, max;
min = max = nums[0];
for(int i=1; i < 10; i++)
{
if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
}
System.out.println("Min and max: " + min + " "
+ max);
}
}



V d 5: ch!ng trnh minh h\a mDt lti tham chiNu 3Nn ph4n t?
bn ngoi (vuat qu) kch th7c mSng.
class ArrayErr
{ public static void main(String args[])
{ int sample[] = new int[10];
int i;
for(i = 0; i < 100; i = i+1)
sample[i] = i;
}
}

40


V d 6: Sep xNp mSng dng ph!ng php sep xNp nJi b\t
(Bubble Sort)

class BubbleSort
{ public static void main(String args[])
{ int nums[] = { 99, -10, 100123, 18, -978,
5623, 463, -9, 287, 49 };
int a, b, t;
int size;
size = 10; // number of elements to sort
// display original array
System.out.print("Original array is:");
for(int i=0; i < size; i++)
System.out.print(" " + nums[i]);

System.out.println();
// This is the Bubble sort.
for(a=1; a < size; a++)
for(b=size-1; b >= a; b--)
{ if(nums[b-1] > nums[b])
{ // if out of order
// exchange elements
t = nums[b-1];
nums[b-1] = nums[b];
nums[b] = t;
}
}

// display sorted array
41
System.out.print("Sorted array is:");
for(int i=0; i < size; i++)
System.out.print(" " + nums[i]);
System.out.println();
}
}



V d 7: Nh<p v xuRt gi tr= cBa cc ph4n t? trong mDt mSng
hai chi:u.
class TwoD_Arr
{ public static void main(String args[])
{ int t, i;
int table[][] = new int[3][4];
for(t=0; t < 3; ++t)
{ for(i=0; i < 4; ++i)
{ table[t][i] = (t*4)+i+1;
System.out.print(table[t][i] + "
");
}
System.out.println();
}
}
}



42
V d 8: TPo 3Fi tang chuti
class StringDemo
{
public static void main(String args[])
{
// Tao chuoi bang nhieu cach khac nhau
String str1 = new String("Chuoi trong java la
nhung Objects.");
String str2 = "Chung duoc xay dung bang nhieu
cach khac nhau.";
String str3 = new String(str2);

System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}



V d 9: Minh h\a mDt sF thao tc c! bSn trn chuti
// Chuong trinh minh hoa cac thao tac tren chuoi ky tu
class StrOps
{
public static void main(String args[])
{
String str1 = "Java la chon lua so mot cho lap
trinh ung dung Web.";
String str2 = new String(str1);
String str3 = "Java ho tro doi tuong String de xu
ly chuoi";
43

int result, idx;
char ch;

System.out.println("str1:" + str1);
System.out.println("str2:" + str2);
System.out.println("str3:" + str3);

System.out.println("Chieu dai cua chuoi str1 la:
" + str1.length());

// Hien thi chuoi str1, moi lan mot ky tu.
System.out.println();
for(int i=0; i < str1.length(); i++)
System.out.print(str1.charAt(i));

System.out.println();
if(str1.equals(str2))
System.out.println("str1 == str2");
else
System.out.println("str1 != str2");

if(str1.equals(str3))
System.out.println("str1 == str3");
else
System.out.println("str1 != str3");

result = str1.compareTo(str3);
if(result == 0)
System.out.println("str1 = str3 ");
else
if(result < 0)
System.out.println("str1 < str3");
else
System.out.println("str1 > str3");
44

// Tao chuoi moi cho str4
String str4 = "Mot Hai Ba Mot";
idx = str4.indexOf("Mot");
System.out.println("str4:" + str4);
System.out.println("Vi tri xuat hien dau tien cua
chuoi con 'Mot' trong str4: " + idx);
idx = str4.lastIndexOf("Mot");
System.out.println("Vi tri xuat hien sau cung cua
chuoi con 'Mot' trong str4:" + idx);
}
}



V d 10: ch!ng trnh nh<p vo mDt chuti v in ra chuti
ngh=ch 3So cBa chuti nh<p.
import java.lang.String;
import java.io.*;
public class InverstString
{ public static void main(String arg[])
{ System.out.println("\n *** CHUONG TRINH IN
CHUOI NGUOC *** ");
try
45
{ System.out.println("\n *** Nhap
chuoi:");
BufferedReader in = new
BufferedReader(new
InputStreamReader(System.in));
// Class BufferedReader cho php 0,c
text tB lu.ng nh1p k t), t&o b2 03m cho
nhAng k t) 06 h? trD cho vi3c 0,c nhAng
k t), nhAng m4ng hay nhAng dng.

// Doc 1 dong tu BufferReadered ket thuc
bang dau ket thuc dong.
String str = in.readLine();
System.out.println("\n Chuoi vua nhap
la:" + str);

// Xuat chuoi nghich dao
System.out.println("\n Chuoi nghich dao
la:");
for (int i=str.length()-1; i>=0; i--)
{ System.out.print(str.charAt(i));
}
}
catch (IOException e)
{ System.out.println(e.toString());
}
}
}


V d 11: LRy chuti con cBa mDt chuti
class SubStr
{
public static void main(String args[])
{
46
String orgstr = "Mot Hai Ba Bon";
// Lay chuoi con dung ham
// public String substring(int beginIndex, int
// endIndex)
String substr = orgstr.substring(4, 7);
System.out.println("Chuoi goc: " + orgstr);
System.out.println("Chuoi con: " + substr);
}
}



V d 12: MSng cc chuti
class StringArray
{
public static void main(String args[])
{
String str[] = {"Mot", "Hai", "Ba", "Bon" };
System.out.print("Mang goc: ");
for(int i=0; i < str.length; i++)
System.out.print(str[i] + " ");

System.out.println("\n");
// Thay doi chuoi
str[0] = "Bon";
str[1] = "Ba";
str[2] = "Hai";
str[3] = "Mot";

System.out.print("Mang thay doi:");
for(int i=0; i < str.length; i++)
System.out.print(str[i] + " ");
47
System.out.print("\n");
}

}






















C Ch h) )* *n ng g 3 3: : H H4 4+ +N NG G & &g gI I T T4 4h hN NG G T TR RO ON NG G J JA AV VA A
3 3. .1 1. .M M7 7 9 9: :u u
Thng qua chuyn 3: l<p trnh h7ng 3Fi tang (OOP)
chng ta 3 biNt OOP l mDt trong nh;ng tiNp c<n mPnh mo, v
48
rRt hi8u quS 3@ xy dMng nn nh;ng ch!ng trnh Kng dLng trn
my tnh. Tb khi ra 3li cho 3Nn nay l<p trnh OOP 3 chKng tp
3ac sKc mPnh, vai tr cBa n trong cc 3: n tin h\c. Ch h ! !n ng g
n n y y s so o g gi i p p b bP Pn n 3 3\ \c c t t m m h hi i@ @u u v v: : c c c c k ki i@ @u u d d; ; l li i8 8u u d dg gn n x xu uR Rt t 3 3 l l
l l7 7p p ( (c cl la as ss s) ) v v g gi ia ao o t ti iN Np p ( (i in nt te er rf fa ac ce e) ), , c cm mn ng g n nh h c c c c v vR Rn n 3 3: : c c! ! b bS Sn n
v v: : l l< <p p t tr r n nh h h h 7 7n ng g 3 3F Fi i t t a an ng g t tr ro on ng g j ja av va a t th h n ng g q qu ua a v vi i8 8c c t tP Po o l l< <p p
c c c c l l7 7p p, , c c c c 3 3F Fi i t t a an ng g v v c c c c t t n nh h c ch hR Rt t c cB Ba a c ch h n ng g. .
3 3. .2 2. .L L= =p p ( (C Cl la as ss s) )
3 3. .2 2. .1 1. .K Kh h i i n ni i> >m m
Chng ta c th@ xem l7p nh mDt khun mgu (template) cBa
3Fi tang (Object). Trong 3 bao gQm d; li8u cBa 3Fi tang
(fields hay properties) v cc ph!ng thKc(methods) tc 3Dng
ln thnh ph4n d; li8u 3 g\i l cc ph!ng thKc cBa l7p.
Cc 3Fi tang 3ac xy dMng b1i cc l7p nn 3ac g\i l
cc th@ hi8n cBa l7p (class instance).
3 3. .2 2. .2 2. .K Kh ha ai i b b o o/ /9 9C Cn nh h n ng gh hi ia a l l= =p p
class <ClassName>
{
<ki6u dA li3u> <field_1>;
<ki6u dA li3u> <field_2>;
constructor
method_1
method_2
}

class: l tb kha cBa java
ClassName: l tn chng ta 3Ht cho l7p
field_1, field_2: cc thuDc tnh, cc biNn, hay cc thnh ph4n d;
li8u cBa l7p.
constructor: l sM xy dMng, kh1i tPo 3Fi tang l7p.
method_1, method_2: l cc ph!ng thKc/hm th@ hi8n cc thao
tc x? l, tc 3Dng ln cc thnh ph4n d; li8u cBa l7p.
49
3 3. .2 2. .3 3. .T TV Vo o 9 9L Li i t t) )R Rn ng g c cH Ha a l l= =p p
ClassName objectName = new ClassName();
3 3. .2 2. .4 4. .T Th hu uJ Jc c t t n nh h c cH Ha a l l= =p p
Vng d; li8u (fields) hay thuDc tnh (properties) cBa l7p
3ac khai bo bn trong l7p nh sau:
class <ClassName>
{
// khai bo nhAng thu2c tnh cEa l*p
<ti;n t<> <ki6u dA li3u> field1;
//
}

[@ xc 3=nh quy:n truy xuRt cBa cc 3Fi tang khc 3Fi v7i
vng d; li8u cBa l7p ngli ta thlng dng 3 ti:n tF sau:
public: c th@ truy xuRt tb tRt cS cc 3Fi tang khc
private: mDt l7p khng th@ truy xuRt vng private cBa 1
l7p khc.
protected: vng protected cBa 1 l7p chu cho php bSn
thn l7p 3 v nh;ng l7p dgn xuRt tb l7p 3 truy c<p
3Nn.

V dX:
public class xemay
{ public String nhasx;
public String model;
private float chiphisx;
protected int thoigiansx;

// so luong so cua xe may: 3, 4 so
protected int so;

// sobanhxe l bin tGnh c gi tr9 l 2 trong t/t c4
// cc th6 hi3n t&o ra tB l*p xemay
50
public static int sobanhxe = 2;
}

ThuDc tnh nhasx, modelc th@ 3ac truy c<p 3Nn tb tRt
cS cc 3Fi tang khc.
ThuDc tnh chiphisx chu c th@ truy c<p 3ac tb cc 3Fi
tang c ki@u xemay
ThuDc tnh thoigiansx, so c th@ truy c<p 3ac tb cc 3Fi
tang c ki@u xemay v cc 3Fi tang cBa cc l7p con dgn
xuRt tb l7p xemay
L)u : Thng thlng 3@ an ton cho vng d; li8u cBa cc 3Fi
tang ngli ta trnh dng ti:n tF public, m thlng ch\n ti:n
tF private 3@ ngjn cSn quy:n truy c<p 3Nn vng d; li8u cBa mDt
l7p tb cc ph!ng thKc bn ngoi l7p 3.
3 3. .2 2. .5 5. .H H m m - - P Ph h) )* *n ng g t th hW Wc c l l= =p p ( (M Me et th ho od d) )
Hm hay ph!ng thKc (method) trong Java l khFi l8nh
thMc hi8n cc chKc njng, cc hnh vi x? l cBa l7p ln vng d;
li8u.
Khai bo ph)*ng thWc:
<Ti;n t<> <ki6u tr4 v;> <Tn ph$%ng th8c> (<danh sch 0<i
s<>)
{
<kh<i l3nh>;
}
[@ xc 3=nh quy:n truy xuRt cBa cc 3Fi tang khc 3Fi v7i
cc ph!ng thKc cBa l7p ngli ta thlng dng cc ti:n tF sau:
public: ph!ng thKc c th@ truy c<p 3ac tb bn ngoi
l7p khai bo.
protected: c th@ truy c<p 3ac tb l7p khai bo v
nh;ng l7p dgn xuRt tb n.
private: chu 3ac truy c<p bn trong bSn thn l7p khai
bo.
51
static: ph!ng thKc l7p dng chung cho tRt cS cc th@
hi8n cBa l7p, c ngh_a l ph!ng thKc 3 c th@ 3ac
thMc hi8n k@ cS khi khng c 3Fi tang cBa l7p chKa
ph!ng thKc 3.
final: ph!ng thKc c ti:n tF ny khng 3ac khai bo
chQng 7 cc l7p dgn xuRt.
abstract: ph!ng thKc khng c4n ci 3Ht (khng c
ph4n source code), so 3ac hi8n thMc trong cc l7p dgn
xuRt tb l7p ny.
synchoronized: dng 3@ ngjn cc tc 3Dng cBa cc 3Fi
tang khc ln 3Fi tang 3ang xt trong khi 3ang 3Qng
bD ha. Dng trong l<p trnh miltithreads.
<ki6u tr4 v;>: c th@ l ki@u void, ki@u c! s1 hay mDt l7p.
<Tn ph$%ng th8c>: 3Ht theo qui 7c giFng tn biNn.
<danh sch thng s<>: c th@ rtng

L)u :
Thng thlng trong mDt l7p cc ph!ng thKc nn 3ac
khai bo dng tb kha public, khc v7i vng d; li8u thlng l
dng ti:n tF private v mLc 3ch an ton.
Nh;ng biNn nOm trong mDt ph!ng thKc cBa l7p l cc biNn
cLc bD (local) v nn 3ac kh1ia tPo sau khi khai bo.

V dX:
public class xemay
{
public String nhasx;
public String model;
private float chiphisx;
protected int thoigiansx;

// so luong so cua xe may: 3, 4 so
protected int so;

52
// l bin tGnh c gi tr9 l 2 trong t/t c4
// cc th6 hi3n t&o ra tB l*p xemay
public static int sobanhxe = 2;

public float tinhgiaban()
{
return 1.5 * chiphisx;
}
}

3 3. .2 2. .6 6. .K Kh h7 7i i t tV Vo o m mJ Jt t 9 9L Li i t t) )R Rn ng g ( (C Co on ns st tr ru uc ct to or r) )
Contructor th<t ra l mDt loPi ph!ng thKc 3Hc bi8t cBa l7p.
Constructor dng g\i tM 3Dng khi kh1i tPo mDt th@ hi8n cBa l7p,
c th@ dng 3@ kh1i gn nh;ng gi tr= mjc 3=nh. Cc
constructor khng c gi tr= trS v:, v c th@ c tham sF hoHc
khng c tham sF.
Constructor phSi c cng tn v=i l=p v 3ac g\i 3Nn dng
tb kha new.
NNu mDt l7p khng c constructor th java so cung cRp cho
l7p mDt constructor mHc 3=nh (default constructor). Nh;ng
thuDc tnh, biNn cBa l7p so 3ac kh1i tPo b1i cc gi tr= mHc
3=nh (sF: thlng l gi tr= 0, ki@u lu<n l l gi tr= false, ki@u 3Fi
tang gi tr= null, )
L)u : thng thlng 3@ an ton, dn ki@m sot v lm chB m
nguQn ch!ng trnh chng ta nn khai bo mDt constructor cho
l7p.


V dX:
public class xemay
{
//
public xemay()
53
{}
public xemay(String s_nhasx, String s_model,
f_chiphisx, int i_thoigiansx, int i_so);
{
nhasx = s_nhasx;
model = s_model;
chiphisx = f_chiphisx;
thoigiansx = i_thoigiansx;
so = i_so;

// hoIc
// this.nhasx = s_nhasx;
// this.model = s_model;
// this.chiphisx = f_chiphisx;
// this.thoigiansx = i_thoigiansx;
// this.so = i_so;
}
}

3 3. .2 2. .7 7. .B Bi iZ Zn n t th hi is s
BiNn this l mDt biNn sn tQn tPi trong tRt cS cc l7p trong
ngng ng; java. MDt class trong Java lun tQn tPi m mD Dt t biNn this,
biNn this 3ac s? dLng trong khi chPy v tham khSo 3Nn bSn
thn l7p chKa n.
V dX:
<ti;n t<> class A
{
<ti;n t<> int <field_1>;
<ti;n t<> String <field_2>;

// Contructor cEa l*p A
public A(int par_1, String par_2)
{
54
this.field_1 = par_1;
this.field_2 = par_2;
}

<ti;n t<> <ki6u tr4 v;> <method_1>()
{
//
}
<ti;n t<> <ki6u tr4 v;> <method_2>()
{
this.method_1()
//
}
}

3 3. .2 2. .8 8. .K Kh ha ai i b b o o c ch hS Sn ng g p ph h) )* *n ng g t th hW Wc c ( (o ov ve er rl lo oa ad di in ng g m me et th ho od d) )
Vi8c khai bo trong mDt l7p nhi:u ph!ng thKc c cng tn
nhng khc tham sF (khc ki@u d; li8u, khc sF lang tham sF)
g\i l khai bo chQng ph!ng thKc (overloading method).
V dX:
public class xemay
{ // khai bo fields
public float tinhgiaban()
{ return 2 * chiphisx;
}
public float tinhgiaban(float huehong)
{ return (2 * chiphisx + huehong);
}
}
3 3. .3 3. .& &N Nc c 9 9i iF Fm m h h) )= =n ng g 9 9L Li i t t) )R Rn ng g t tr ro on ng g j ja av va a
Ht tra nh;ng nguyn tec c! bSn cBa l<p trnh h7ng 3Fi
tang, tRt cS cc ngn ng; l<p trnh k@ cS java 3:u c ba 3Hc
55
3i@m chung: tnh 3ng gi (encapsulation), tnh 3a hnh
(polymorphism), v tnh kN thba (inheritance).
3 3. .3 3. .1 1. .& & n ng g g g i i ( (e en nc ca ap ps su ul la at ti io on n) )
C! chN 3ng gi trong l<p trnh h7ng 3Fi tang gip cho
cc 3Fi tang dRu 3i mDt ph4n cc chi tiNt ci 3Ht, cmng nh
ph4n d; li8u cLc bD cBa n, v chu cng bF ra ngoi nh;ng g
c4n cng bF 3@ trao 3Ji v7i cc 3Fi tang khc. Hay chng ta
c th@ ni 3Fi tang l mDt thnh tF ht tra tnh 3ng gi.
[!n v= 3ng gi c! bSn cBa ngn ng; java l class. MDt
class 3=nh ngh_a hnh thKc cBa mDt 3Fi tang. MDt class 3=nh r
nh;ng thnh ph4n d; li8u v cc 3oPn m ci 3Ht cc thao tc
x? l trn cc 3Fi tang d; li8u 3. Java dng class 3@ xy
dMng nh;ng 3Fi tang. Nh;ng 3Fi tang l nh;ng th@ hi8n
(instances) cBa mDt class.
MDt l7p bao gQm thnh ph4n d; li8u v thnh ph4n x? l.
Thnh ph4n d; li8u cBa mDt l7p thlng bao gQm cc biNn thnh
vin v cc biNn th@ hi8n cBa l7p. Thnh ph4n x? l l cc thao
tc trn cc thnh ph4n d; li8u, thlng trong java ngli g\i l
ph!ng thKc. Ph!ng thKc l mDt thu<t ng; h7ng 3Fi tang
trong java, trong C/C++ ngli ta thlng dng thu<t ng; l
hm.
3 3. .3 3. .2 2. .T T n nh h 9 9a a h h n nh h ( (p po ol ly ym mo or rp ph hi is sm m) ): :
Tnh 3a hnh cho php ci 3Ht cc l7p dgn xuRt khc nhau tb
mDt l7p nguQn. MDt 3Fi tang c th@ c nhi:u ki@u khc nhau
g\i l tnh 3a hnh.
V dX:
class A_Object
{
//
void method_1()
{
//
56
}
}

class B_Object extends A_Object
{
//
void method_1()
{
//
}
}

class C
{ public static void main(String[] args)
{
// T&o m2t m4ng 2 phKn tL ki6u A
A_Object arr_Object = new A_Object[2];
B_Object var_1 = new B_Object();
// PhKn tL 0Ku tin cEa m4ng arr_Object[0]
tham // chiu 0n 1 0<i t$Dng ki6u B_Object dMn
xu/t // tB A_Object
arr_Object[0] = var_1;
A_Object var_2;
for (int i=0; i<2; i++)
{
var_2 = arr_Object[i];
var_2.method_1();
}

}
}

Vng lHp for trong 3oPn ch!ng trnh trn:
57
- V7i i = 0 th biNn var_2 c ki@u l B_Object, v l8nh
var_2.method_1() so g\i thMc hi8n ph!ng thKc
method_1 cBa l7p B_Object.
- V7i i = 1 th biNn var_2 c ki@u l A_Object, v l8nh
var_2.method_1() so g\i thMc hi8n ph!ng thKc
method_1 cBa l7p A_Object.
Trong v dL trn 3Fi tang var_2 c th@ nh<n ki@u A_Object
hay B_Object. Hay ni cc khc, mDt biNn 3Fi tang ki@u
A_Object nh var_2 trong v dL trn c th@ tham chiNu 3Nn bRt
kq 3Fi tang no cBa bRt kq l7p con no cBa l7p A_Object (v
dL var_2 c th@ tham chiNu 3Nn 3Fi tang var_1, var_1 l 3Fi
tang cBa l7p B_Object dgn xuRt tb l7p A_Object). Ngac lPi
mDt biNn cBa l7p con khng th@ tham chiNu 3Nn bRt kq 3Fi
tang no cBa l7p cha.
3 3. .3 3. .3 3. .T T n nh h k kZ Z t th hf fa a ( (i in nh he er ri it ta an nc ce e) )
MDt l7p con (subclass) c th@ kN thba tRt cS nh;ng vng d;
li8u v ph!ng thKc cBa mDt l7p khc (siu l7p - superclass).
Nh v<y vi8c tPo mDt l7p m7i tb mDt l7p 3 biNt sao cho cc
thnh ph4n (fields v methods) cBa l7p cm cmng so thnh cc
thnh ph4n (fields v methods) cBa l7p m7i. Khi 3 ta g\i l7p
m7i l l7p dgn xuRt (derived class) tb l7p cm (superclass). C
th@ l7p cm cmng l l7p 3ac dgn xuRt tb mDt l7p no 3Ry, nhng
3Fi v7i l7p m7i vba tPo th l7p cm 3 l mDt l7p siu l7p trMc
tiNp (immediate supperclass).
Dng tb kha extends 3@ chu l7p dgn xuRt.
class A extends B
{
//
}
3.3.3.1 Khi bo ph)*ng thWc chSng
58
Tnh kN thba gip cho cc l7p con nh<n 3ac cc thuDc
tnh/ph!ng thKc public v protected cBa l7p cha. [Qng thli
cmng c th@ thay thN cc ph!ng thKc cBa l7p cha bOng cch
khai bo chQng. Chvng hPn ph!ng thKc tinhgiaban() p dLng
trong l7p xega so cho kNt quS gRp 2.5 l4n chi ph sSn xuRt thay
v gRp 2 chi ph sSn xuRt giFng nh trong l7p xemay.
V dX:
public class xega extends xemay
{
public xega()
{
}
public xega(String s_nhasx, String s_model, f_chiphisx,
int i_thoigiansx);
{
this.nhasx = s_nhasx;
this.model = s_model;
this.chiphisx = f_chiphisx;
this.thoigiansx = i_thoigiansx;
this.so = 0;
}

public float tinhgiaban()
{
return 2.5 * chiphisx;
}
}

Java cung cRp 3 ti:n tF/tb kha 3@ ht tra tnh kN thba cBa l7p:
public: l7p c th@ truy c<p tb cc gi, ch!ng trnh
khc.
final: L7p hOng, l7p khng th@ tPo dgn xuRt (khng th@
c con), hay 3i khi ngli ta g\i l l7p v sinh.
59
a ab bs st tr ra ac ct t: : L7p trbu tang (khng c khai bo cc thnh
ph4n v cc ph!ng thKc trong l7p trbu tang). L7p dgn
xuRt so khai bo, ci 3Ht cL th@ cc thuDc tnh, ph!ng
thKc cBa l7p trbu tang.

3.3.3.2 L=p nJi
L7p nDi l l7p 3ac khai bo bn trong 1 l7p khc. L7p nDi
th@ hi8n tnh 3ng gi cao v c th@ truy xuRt trMc tiNp biNn cBa
l7p cha.
V dX:
public class A
{
//
int <field_1>
static class B
{
//
int <field_2>
public B(int par_1)
{
field_2 = par_1 + field_1;
}
}
}
Trong v dL trn th ch!ng trnh d=ch so tPo ra hai l7p v7i hai
files khc nhau: A.class v B.class
3.3.3.3 L=p v sinh
L7p khng th@ c l7p dgn xuRt tb n (khng c l7p con) g\i
l l7p v sinh, hay ni cch khc khng th@ kN thba 3ac tb
mDt l7p v sinh. L7p v sinh dng 3@ hPn chN, ngjn ngba
cc l7p khc dgn xuRt tb n.
60
[@ khai bo mDt l7p l l7p v sinh, chng ta dng tb kha
final class.
TRt cS cc ph!ng thKc cBa l7p v sinh 3:u v sinh, nhng
cc thuDc tnh cBa l7p v sinh th c th@ khng v sinh.
V dX:
public final class A
{
public final int x;
private int y;
public final void method_1()
{
//
}
public final void method_2()
{
//
}
}
3.3.3.4 L=p trfu t)Rng
L7p trbu tang l l7p khng c khai bo cc thuDc tnh
thnh ph4n v cc ph!ng thKc. Cc l7p dgn xuRt cBa n so
khai bo thuDc tnh, ci 3Ht cL th@ cc ph!ng thKc cBa l7p trbu
tang.
V dX:
abstract class A
{
abstract void method_1();
61
}
public class B extends A
{
public void method_1()
{
// ci 0It chi tit cho ph$%ng th8c method_1
// trong l*p con B.
//
}
}
public class C extends A
{
public void method_1()
{
// ci 0It chi tit cho ph$%ng th8c method_1
// trong l*p con C.
//
}
}
L)u : Cc ph!ng thKc 3ac khai bo dng cc ti:n tF
private v static th khng 3ac khai bo l trbu tang
abstract. Ti:n tF private th khng th@ truy xuRt tb cc l7p dgn
xuRt, cn ti:n tF static th chu dng ring cho l7p khai bo m
thi.
3.3.3.5 Ph)*ng thWc finalize()
Trong java khng c ki@u d; li8u con trp nh trong C,
ngli l<p trnh khng c4n phSi qu b<n tm v: vi8c cRp pht v
giSi phng vng nh7, so c mDt trnh d\n dxp h8 thFng 3Sm
trch vi8c ny. Trnh d\n dxp h8 thFng so d\n dxp vng nh7 cRp
pht cho cc 3Fi tang tr7c khi hBy mDt 3Fi tang.
Ph!ng thKc finalize() l mDt ph!ng thKc 3Hc bi8t 3ac ci
3Ht syn cho cc l7p. Trnh d\n dxp h8 thFng so g\i ph!ng thKc
ny tr7c khi hBy mDt 3Fi tang. V v<y vi8c ci 3Ht mDt sF
62
thao tc giSi phng, d\n dxp vng nh7 3 cRp pht cho cc 3Fi
tang d; li8u trong ph!ng thKc finalize() so gip cho ngli
l<p trnh chB 3Dng ki@m sot tFt qu trnh hBy 3Fi tang thay v=
giao cho trnh d\n dxp h8 thFng tM 3Dng. [Qng thli vi8c ci 3Ht
trong ph!ng thKc finalize() so gip cho bD nh7 3ac giSi
phng tFt h!n, gp ph4n cSi tiNn tFc 3D ch!ng trnh.
V dX:
class A
{
// Khai bo cc thu2c tnh
public void method_1()
{
//
}
protected void finalize()
{
// C th6 dng 06 0ng t/t c4 cc kt n<i
// vo c% sN dA li3u tr$*c khi hEy 0<i t$Dng.
//
}
}
3 3. .4 4. .G G i i ( (p pa ac ck ka ag ge es s) )
Vi8c 3ng gi cc l7p lPi tPo thnh mDt th vi8n dng
chung g\i l package.
MDt package c th@ chKa mDt hay nhi:u l7p bn trong, 3Qng
thli cmng c th@ chKa mDt package khc bn trong.
63
[@ khai bo mDt l7p thuDc mDt gi no 3Ry ta phSi dng tb
kha package.
Dng khai bo gi phSi l dng 34u tin trong t<p tin khai
bo l7p.
Cc t<p tin khai bo l7p trong cng mDt gi phSi 3ac lu
trong cng mDt th mLc.

L)u : Vi8c khai bo import tRt cS cc l7p trong gi so lm tFn
bD nh7. Thng thlng chng ta chu nn import nh;ng l7p c4n
dng trong ch!ng trnh.

V dX:
packagephuongtiengiaothong;
class xemay
{
// .
}
class xega extends xemay
{
//
}

Khi 3 muFn s? dLng l7p xemay vo ch!ng trnh ta so khai
bo nh sau:
import phuongtiengiaothong.xemay;
3 3. .5 5. .G Gi ia ao o d di i> >n n ( (i in nt te er rf fa ac ce e) )
3 3. .5 5. .1 1. .K Kh h i i n ni i> >m m i in nt te er rf fa ac ce e: :
Nh chng ta 3 biNt mDt l7p trong java chu c mDt siu l7p
trMc tiNp hay mDt cha duy nhRt (3!n thba kN). [@ trnh 3i tnh
phKc tPp cBa 3a thba kN (multi-inheritance) trong l<p trnh
h7ng 3Fi tang, Java thay thN bOng giao tiNp (interface). MDt
l7p c th@ c nhi:u giao tiNp (interface) v7i cc l7p khc 3@
64
thba h1ng thm vng d; li8u v ph!ng thKc cBa cc giao tiNp
ny.
3 3. .5 5. .2 2. .K Kh ha ai i b b o o i in nt te er rf fa ac ce e: :
Interface 3ac khai bo nh mDt l7p. Nhng cc thuDc tnh
cBa interface l cc hOng (khai bo dng tb kha final) v cc
ph!ng thKc cBa giao tiNp l trbu tang (mHc d khng c tb
kha abstract).
Trong cc l7p c ci 3Ht cc interface ta phSi tiNn hnh ci
3Ht cL th@ cc ph!ng thKc ny.

V dX:
public interface sanpham
{ static final String nhasx = Honda VN;
static final String dienthoai = 08-8123456;
public int gia(String s_model);
}

// khai bo 1 l*p c ci 0It interface
public class xemay implements sanpham
{ // ci 0It l&i ph$%ng th8c cEa giao di3n trong l*p
public int gia(String s_model)
{
if (s_model.equals(2005))
return (2000);
else
return (1500);

}

public String chobietnhasx()
{
return (nhasx);
}
}
65

C mDt vRn 3: khc v7i l7p l mDt giao di8n (interface)
khng chu c mDt giao di8n cha trMc tiNp m c th@ dgn xuRt
cng lc nhi:u giao di8n khc (hay c nhi:u giao di8n cha). Khi
3 n so kN thba tRt cS cc gi tr= hOng v cc ph!ng thKc cBa
cc giao di8n cha. Cc giao di8n cha 3ac li8t k thnh chuti v
cch nhau b1i dRu phsy ,. Khai bo nh sau:

public interfaceInterfaceName extends interface1, interface2,
interface3
{
//
}

3 3. .5 5. .3 3. .V V d dX X m mi in nh h h he ea a
V dX 1: Minh h\a tnh 3a hnh (polymorphism) trong phn cRp
kN thba thng qua vi8c m tS v x? l mDt sF thao tc c! bSn
trn cc 3Fi tang hnh h\c.
// O9nh nghGa l*p trBu t$Dng c% sN tn Shapetrong
// t1p tin Shape.java
public abstract class Shape extends Object
{
// tr4 v; di3n tch cEa m2t 0<i t$Dng hnh h,c shape
public double area()
{
return 0.0;
}

// tr4 v; th6 tch cEa m2t 0<i t$Dng hnh h,c shape
public double volume()
{
return 0.0;
}
66
// Ph$%ng th8c trBu t$Dng cKn ph4i 0$Dc hi3n th)c
// trong nhAng l*p con 06 tr4 v; tn 0<i t$Dng
// hnh h,c shape thch hDp
public abstract String getName();
} // end class Shape
// O9nh nghGa l*p Point trong t1p tin Point.java
public class Point extends Shape
{
protected int x, y; // T,a 02 x, y cEa 1 0i6m

// constructor khng tham s<.
public Point()
{
setPoint( 0, 0 );
}

// constructor c tham s<.
public Point(int xCoordinate, int yCoordinate)
{
setPoint( xCoordinate, yCoordinate );
}

// gn t,a 02 x, y cho 1 0i6m
public void setPoint( int xCoordinate, int yCoordinate )
{
x = xCoordinate;
y = yCoordinate;
}

// l/y t,a 02 x cEa 1 0i6m
public int getX()
{
return x;
}
67

// l/y t,a 02 y cEa 1 0i6m
public int getY()
{
return y;
}

// Th6 hi3n t,a 02 cEa 1 0i6m d$*i d&ng chu?i
public String toString()
{
return "[" + x + ", " + y + "]";
}

// tr4 v; tn cEa 0<i t$Dng shape
public String getName()
{
return "Point";
}

} // end class Point
[=nh ngh_a mDt l7p cha Shape l mDt l7p trbu tang dgn
xuRt tb Object v c 3 ph!ng thKc khai bo dng ti:n tF
public. Ph!ng thKc getName() khai bo trbu tang v v<y n
phSi 3ac hi8n thMc trong cc l7p con. Ph!ng thKc area()
(tnh di8n tch) v ph!ng thKc volume() (tnh th@ tch) 3ac
3=nh ngh_a v trS v: 0.0. Nh;ng ph!ng thKc ny so 3ac khai
bo chQng trong cc l7p con 3@ thMc hi8n chKc njng tnh di8n
tch cmng nh th@ tch ph hap v7i nh;ng 3Fi tang hnh h\c
t!ng Kng (3lng trn, hnh trL, )
L7p Point: dgn xuRt tb l7p Shape. MDt 3i@m th c di8n
tch v th@ tch l 0.0, v v<y nh;ng ph!ng thKc area() v
volume() cBa l7p cha khng c4n khai bo chQng trong l7p
Point, chng 3ac thba kN nh 3 3=nh ngh_a trong l7p trbu
tang Shape. Nh;ng ph!ng thKc khc nh setPoint() 3@
68
gn t\a 3D x, y cho mDt 3i@m, cn ph!ng thKc getX(), getY()
trS v: t\a 3D x, y cBa mDt 3i@m. Ph!ng thKc getName() l hi8n
thMc cho ph!ng thKc trbu tang trong l7p cha, nNu nh
ph!ng thKc getName() m khng 3ac 3=nh ngh_a th l7p
Point l mDt l7p trbu tang.

// O9nh nghGa l*p Circle trong t1p tin Circle.java
public class Circle extends Point
{ // DMn xu/t tB l*pPoint
protected double radius;

// constructor khng tham s<
public Circle()
{
// ngKm g,i 0n constructor cEa l*p cha
setRadius( 0 );
}

// constructor c tham s<
public Circle( double circleRadius, int xCoordinate,
int yCoordinate )
{
// g,i constructorcEa l*p cha
super( xCoordinate, yCoordinate );

setRadius( circleRadius );
}

// Gn bn knh cEa 0$Qng trn
public void setRadius( double circleRadius )
{
radius = ( circleRadius >= 0 ? circleRadius:0 );
}

// L/y bn knh cEa 0$Qng trn
69
public double getRadius()
{
return radius;
}

// Tnh di3n tch 0$Qng trn Circle
public double area()
{
return Math.PI * radius * radius;
}

// Bi6u diRn 0$Qng trn bSng m2t chu?i
public String toString()
{
return "Center = " + super.toString() +
"; Radius = " + radius;
}

// tr4 v; tn cEa shape
public String getName()
{
return "Circle";
}
} // end class Circle
L7p Circle dgn xuRt tb l7p Point, mDt 3lng trn c th@
tch l 0.0, v v<y ph!ng thKc volume() cBa l7p cha khng
khai bo chQng, n so thba kN tb l7p Point, m l7p Point th
thba kN tb l7p Shape. Di8n tch 3lng trn khc v7i mDt 3i@m,
v v<y ph!ng thKc tnh di8n tch area() 3ac khai bo chQng.
Ph!ng thKc getName() hi8n thMc ph!ng thKc trbu tang 3
khai bo trong l7p cha, nNu ph!ng thKc getName() khng khai
bo trong l7p Circle th n so kN thba tb l7p Point. Ph!ng
thKc setRadius dng 3@ gn mDt bn knh (radius) m7i cho mDt
70
3Fi tang 3lng trn, cn ph!ng thKc getRadius trS v: bn
knh cBa mDt 3Fi tang 3lng trn.
// O9nh nghGa l*p hnh trT Cylinder
// trong t1p tin Cylinder.java.
public class Cylinder extends Circle
{
// chi;u cao cEa Cylinder
protected double height;

// constructor khng c tham s<
public Cylinder()
{
// ngKm g,i 0n constructor cEa l*p cha
setHeight( 0 );
}

// constructor c tham s<
public Cylinder( double cylinderHeight,
double cylinderRadius, int xCoordinate,
int yCoordinate )
{
// G,i constructor cEa l*p cha
super( cylinderRadius, xCoordinate,
yCoordinate );

setHeight( cylinderHeight );
}

// Gn chi;u cao cho Cylinder
public void setHeight( double cylinderHeight )
{
height = ( cylinderHeight >= 0 ? cylinderHeight
:0 );
}
71

// L/y chi;u cao cEa Cylinder
public double getHeight()
{
return height;
}

// Tnh di3n tch xung quanh cEa Cylinder
public double area()
{
return 2 * super.area() + 2 * Math.PI * radius *
height;
}

// Tnh th6 tch cEa Cylinder
public double volume()
{
return super.area() * height;
}

// Bi6u diRn Cylinder bSng m2t chu?i
public String toString()
{
return super.toString() + "; Height = " + height;
}

// tr4 v; tn cEa shape
public String getName()
{
return "Cylinder";
}

} // end class Cylinder
72
L7p Cylinder dgn xuRt tb l7p Circle. MDt Cylinder (hnh
trL) c di8n tch v th@ tch khc v7i mDt Circle (hnh trn), v
v<y cS hai ph!ng thKc area() v volume() c4n phSi khai bo
chQng. Ph!ng thKc getName() l hi8n thMc ph!ng thKc trbu
tang trong l7p cha, nNu ph!ng thKc getName() khng khai
bo trong l7p Cylinder th n so kN thba tb l7p Circle. Ph!ng
thKc setHeight dng 3@ gn chi:u cao m7i cho mDt 3Fi tang
hnh trL, cn ph!ng thKc getHeight trS v: chi:u cao cBa mDt
3Fi tang hnh trL.
// Test.java
// Ki6m tra tnh k thBa cEa Point, Circle, Cylinder v*i
// l*p trBu t$Dng Shape.
// Khai bo th$ vi3n
import java.text.DecimalFormat;
public class Test
{
// Ki6m tra tnh k thBa cEa cc 0<i t$Dng hnh h,c
public static void main( String args[] )
{
// T&o ra cc 0<i t$Dng hnhh,c
Point point = new Point( 7, 11 );
Circle circle = new Circle( 3.5, 22, 8 );
Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 );

// T&o m2t m4ng cc 0<i t$Dng hnh h,c
Shape arrayOfShapes[] = new Shape[ 3 ];

// arrayOfShapes[ 0 ] l m2t 0<i t$Dng Point
arrayOfShapes[ 0 ] = point;
// arrayOfShapes[ 1 ] l m2t 0<i t$Dng Circle
arrayOfShapes[ 1 ] = circle;
// arrayOfShapes[ 2 ] l m2t 0<i t$Dng cylinder
arrayOfShapes[ 2 ] = cylinder;

// L/y tn v bi6u diRn cEa m?i 0<i t$Dng hnh h,c
73
String output =
point.getName() + ": " + point.toString() + "\n" +
circle.getName() + ": " + circle.toString() + "\n" +
cylinder.getName() + ": " + cylinder.toString();

DecimalFormat precision2 = new DecimalFormat(
"0.00" );

// duy3t m4ng arrayOfShapes l/y tn, di3n tch, th6 tch
// cEa m?i 0<i t$Dng hnh h,c trong m4ng.
for ( int i = 0; i < arrayOfShapes.length; i++ )
{
output += "\n\n" + arrayOfShapes[ i ].getName() +
": " + arrayOfShapes[ i].toString() +
"\n Area = " +
precision2.format( arrayOfShapes[ i ].area() ) +
"\nVolume = " +
precision2.format( arrayOfShapes[ i ].volume() );
}

System.out.println(output);
System.exit( 0 );
}
} // end class Test
KNt quS thMc thi ch!ng trnh:


74
V dX 2: T!ng tM v dL 1 nhng trong v dL 2 chng ta dng
interface 3@ 3=nh ngh_a cho Shape thay v mDt l7p trbu tang.
V v<y tRt cS cc ph!ng thKc trong interface Shape phSi 3ac
hi8n thMc trong l7p Point l l7p ci 3Ht trMc tiNp interface
Shape.

// O9nh nghGa m2t interface Shape trong t1p tin shape.java
public interface Shape
{
// Tnh di3n tch
public abstract double area();

// Tnh th6 tch
public abstract double volume();

// tr4 v; tn cEa shape
public abstract String getName();
}

L7p Point ci 3Ht/hi8n thMc interface tn shape.
// O9nh nghGa l*p Point trong t1p tin Point.java
public class Point extends Object implements Shape
{
protected int x, y; // T,a 02 x, y cEa 1 0i6m

// constructor khng tham s<.
public Point()
{
setPoint( 0, 0 );
}

// constructor c tham s<.
public Point(int xCoordinate, int yCoordinate)
{
setPoint( xCoordinate, yCoordinate );
75
}

// gn t,a 02 x, y cho 1 0i6m
public void setPoint( int xCoordinate, int yCoordinate )
{
x = xCoordinate;
y = yCoordinate;
}

// l/y t,a 02 x cEa 1 0i6m
public int getX()
{
return x;
}

// l/y t,a 02 y cEa 1 0i6m
public int getY()
{
return y;
}

// Th6 hi3n t,a 02 cEa 1 0i6m d$*i d&ng chu?i
public String toString()
{
return "[" + x + ", " + y + "]";
}

// Tnh di3n tch
public double area()
{
return 0.0;
}

// Tnh th6 tch
public double volume()
76
{
return 0.0;
}

// tr4 v; tn cEa 0<i t$Dng shape
public String getName()
{
return "Point";
}

} // end class Point

L7p Circle l l7p con cBa l7p Point, v ci 3Ht/hi8n thMc gin
tiNp interface tn shape.
// O9nh nghGa l*p Circle trong t1p tin Circle.java
public class Circle extends Point
{ // DMn xu/t tB l*pPoint
protected double radius;

// constructor khng tham s<
public Circle()
{
// ngKm g,i 0n constructor cEa l*p cha
setRadius( 0 );
}

// constructor c tham s<
public Circle( double circleRadius, int xCoordinate,
int yCoordinate )
{
// g,i constructorcEa l*p cha
super( xCoordinate, yCoordinate );

setRadius( circleRadius );
}
77

// Gn bn knh cEa 0$Qng trn
public void setRadius( double circleRadius )
{
radius = ( circleRadius >= 0 ? circleRadius:0 );
}

// L/y bn knh cEa 0$Qng trn
public double getRadius()
{
return radius;
}

// Tnh di3n tch 0$Qng trn Circle
public double area()
{
return Math.PI * radius * radius;
}

// Bi6u diRn 0$Qng trn bSng m2t chu?i
public String toString()
{
return "Center = " + super.toString() +
"; Radius = " + radius;
}

// tr4 v; tn cEa shape
public String getName()
{
return "Circle";
}
} // end class Circle

// O9nh nghGa l*p hnh trT Cylinder
// trong t1p tin Cylinder.java.
78
public class Cylinder extends Circle
{
// chi;u cao cEa Cylinder
protected double height;

// constructor khng c tham s<
public Cylinder()
{
// ngKm g,i 0n constructor cEa l*p cha
setHeight( 0 );
}

// constructor c tham s<
public Cylinder( double cylinderHeight,
double cylinderRadius, int xCoordinate,
int yCoordinate )
{
// G,i constructor cEa l*p cha
super( cylinderRadius, xCoordinate,
yCoordinate );

setHeight( cylinderHeight );
}

// Gn chi;u cao cho Cylinder
public void setHeight( double cylinderHeight )
{
height = ( cylinderHeight >= 0 ? cylinderHeight
:0 );
}

// L/y chi;u cao cEa Cylinder
public double getHeight()
{
return height;
79
}

// Tnh di3n tch xung quanh cEa Cylinder
public double area()
{
return 2 * super.area() + 2 * Math.PI * radius *
height;
}

// Tnh th6 tch cEa Cylinder
public double volume()
{
return super.area() * height;
}

// Bi6u diRn Cylinder bSng m2t chu?i
public String toString()
{
return super.toString() + "; Height = " + height;
}

// tr4 v; tn cEa shape
public String getName()
{
return "Cylinder";
}

} // end class Cylinder

// Test.java
// Ki6m tra tnh k thBa cEa Point, Circle, Cylinder v*i
// interface Shape.

// Khai bo th$ vi3n
import java.text.DecimalFormat;
80
public class Test
{
// Ki6m tra tnh k thBa cEa cc 0<i t$Dng hnh h,c
public static void main( String args[] )
{
// T&o ra cc 0<i t$Dng hnhh,c
Point point = new Point( 7, 11 );
Circle circle = new Circle( 3.5, 22, 8 );
Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 );

// T&o m2t m4ng cc 0<i t$Dng hnh h,c
Shape arrayOfShapes[] = new Shape[ 3 ];

// arrayOfShapes[ 0 ] l m2t 0<i t$Dng Point
arrayOfShapes[ 0 ] = point;
// arrayOfShapes[ 1 ] l m2t 0<i t$Dng Circle
arrayOfShapes[ 1 ] = circle;
// arrayOfShapes[ 2 ] l m2t 0<i t$Dng cylinder
arrayOfShapes[ 2 ] = cylinder;

// L/y tn v bi6u diRn cEa m?i 0<i t$Dng hnh h,c
String output =
point.getName() + ": " + point.toString() + "\n" +
circle.getName() + ": " + circle.toString() + "\n" +
cylinder.getName() + ": " + cylinder.toString();

DecimalFormat precision2 = new DecimalFormat(
"0.00" );

// duy3t m4ng arrayOfShapes l/y tn, di3n tch, th6 tch
// cEa m?i 0<i t$Dng hnh h,c trong m4ng.
for ( int i = 0; i < arrayOfShapes.length; i++ )
{
output += "\n\n" + arrayOfShapes[ i ].getName() +
": " + arrayOfShapes[ i].toString() +
81
"\n Area = " +
precision2.format( arrayOfShapes[ i ].area() ) +
"\nVolume = " +
precision2.format( arrayOfShapes[ i ].volume() );
}

System.out.println(output);
System.exit( 0 );
}

} // end class Test

KNt quS thMc thi ch!ng trnh:














82









C Ch h) )* *n ng g 4 4: : T TH HI I^ ^T T K K^ ^ G GI IA AO O D DI I- -N N N NG G4 4# #I I
D D N NG G

4 4. .1 1. .M M7 7 9 9: :u u
Ch!ng ny cung cRp cho sinh vin nh;ng kiNn thKc c! bSn
3@ xy dMng giao di8n (Graphic User Interface - GUI) cBa
ch!ng trnh Kng dLng bOng ngn ng; java:
- Nh;ng nguyn tec thiNt kN giao di8n.
- Nh;ng th vi8n, gi xy dMng giao di8n: gQm nh;ng l7p
(class), nh;ng giao tiNp (interface) quSn l sM ki8n v
nh;ng thnh ph4n (components) xy dMng nn giao di8n
ngli dng.
- BD quSn l trnh by (layout managers)
- X? l sM ki8n
Trong khun khJ gio trnh l<p trnh java cjn bSn ny
chng ti trnh by vi8c thiNt kN GUI dng th vi8n awt
(abstract windows toolkit). Vi8c thiNt kNt GUI so trMc quan,
uy@n chuy@n h!n khi chng ta s? dLng th vi8n JFC (Java
Foundation Class) so gi7i 3ac gi7i thi8u trong chuyn 3: java
nng cao.
83
4 4. .2 2. .G Gi i= =i i t th hi i> >u u t th h) ) v vi i> >n n a aw wt t
Th vi8n awt l bD th vi8n dng 3@ xy dMng giao di8n
ngli dng cho mDt ch!ng trnh Kng dLng c 34y 3B cc thnh
ph4n c! bSn nh: Label, Button, Checkbox, Radiobutton,
Choice, List, Text Field, Text Area, Scrollbar, Menu, Frame
GiFng nh cc API cBa Windows, java cung cRp cho ngli
l<p trnh th vi8n awt. Nhng khc v7i cc hm API, th vi8n
awt khng phL thuDc h8 3i:u hnh. Th vi8n awt l n:n tSng, c!
s1 gip cho chng ta tiNp c<n v7i th vi8n m1 rDng JFC hi8u
quS h!n.
CRu trc cy phn cRp cBa tRt cS nh;ng l7p trong th vi8n awt
chng ta c th@ xem chi tiNt trong ti li8u km theo bD cng cL
j2se (ph4n API Specification)

4 4. .3 3. .C C c c k kh h i i n ni i> >m m c c* * b bQ Qn n
4 4. .3 3. .1 1. .C Co om mp po on ne en nt t
Component l mDt 3Fi tang c bi@u dinn 3Q h\a 3ac hi@n
th= trn mn hnh m ngli dng c th@ t!ng tc 3ac. Chvng
84
hPn nh nh;ng nt nhRn (button), nh;ng checkbox, nh;ng
scrollbar, L7p Component l mDt l7p trbu tang.
java.lang.Object
java.awt.Component
4 4. .3 3. .2 2. .C Co on nt ta ai in ne er r
Container l 3Fi tang v<t chKa hay nh;ng 3Fi tang c khS
njng quSn l v nhm cc 3Fi tang khc lPi. Nh;ng 3Fi tang
con thuDc thnh ph4n awt nh: button, checkbox, radio button,
scrollbar, list, chu s? dLng 3ac khi ta 3a n vo khung
chKa (container).
MJt sL 9Li t)Rng container trong Java:
Panel: [Fi tang khung chKa 3!n giSn nhRt, dng 3@
nhm cc 3Fi tang, thnh ph4n con lPi. MDt Panel c
th@ chKa bn trong mDt Panel khc.
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Panel
Frame: khung chKa Frame l mDt c?a sF window hvn
hoi 1 mKc trn cng bao gQm mDt tiu 3:u v mDt
3lng bin (border) nh cc Kng dLng windows thng
thlng khc. Khung chKa Frame thlng 3ac s? dLng
3@ tPo ra c?a sJ chnh cBa cc Kng dLng.
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Window
+--java.awt.Frame
Dialogs: 3y l mDt c?a sJ dPng hDp hDi thoPi (c?a sJ
dPng ny cn 3ac g\i l pop-up window), c?a sJ dPng
ny thlng 3ac dng 3@ 3a ra thng bo, hay dng 3@
lRy d; li8u nh<p tb ngoi vo thng qua cc 3Fi tang,
thnh ph4n trn dialog nh TextField chvng hPn. Dialog
85
cmng l mDt c?a sJ nhng khng 34y 3B chKc njng nh
3Fi tang khung chKa Frame.
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Window
+--java.awt.Dialog
ScrollPanes: l mDt khung chKa t!ng tM khung chKa
Panel, nhng c thm 2 thanh trat gip ta tJ chKc v
xem 3ac cc 3Fi tang l7n chon nhi:u cht trn mn
hnh nh nh;ng hnh Snh hay vjn bSn nhi:u dng.
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.ScrollPane
4 4. .3 3. .3 3. .L La ay yo ou ut t M Ma an na ag ge er r
Khung chKa container nh<n cc 3Fi tang tb bn ngoi 3a
vo v n phSi biNt lm thN no 3@ tJ chKc sep xNp cht 1 cho
cc 3Fi tang 3. Mti 3Fi tang khung chKa 3:u c mDt bD
quSn l ch=u trch nhi8m thMc hi8n cng vi8c 3Ry 3 l bD quSn
l trnh by (Layout Manager). Cc bD quSn l trnh by m th
vi8n AWT cung cRp cho ta bao gQm:
FlowLayout: Sep xNp cc 3Fi tang t# tri qua ph&i v
t# trn xu)ng d$-i. Cc 3Fi tang 3:u gi; nguyn kch
th7c cBa mnh.
BorderLayout: Cc 3Fi tang 3ac 3Ht theo cc 3lng
vi:n cBa khung chKa theo cc cPnh West, East, South,
North v Center tKc [ng, Ty, Nam, Bec v Trung
tm hay Tri, PhSi, Trn, D7i v Gi;a ty theo cch
nhn cBa chng ta.
GridLayout: TPo mDt khung l7i v hnh v7i cc
bOng nhau. Cc 3Fi tang so 3Ht vba kch th7c v7i
86
tbng 3. ThK tM sep xNp cmng tb tri qua phSi v tb
trn xuFng d7i.
GridBagLayout: T!ng tM nh GridLayout, cc 3Fi
tang khung chKa cmng 3ac 3a vo mDt l7i v hnh.
Tuy nhin kch th7c cc 3Fi tang khng nhRt thiNt
phSi vba v7i 1 m c th@ l 2, 3 hay nhi:u h!n ty
theo cc rng buDc m ta chu 3=nh thng qua 3Fi tang
GridBagConstraint.
Null Layout: Cch trnh by tM do. [Fi v7i cch trnh
by ny ngli l<p trnh phSi tM 3Dng lm tRt cS tb vi8c
3=nh kch th7c cBa cc 3Fi tang, cmng nh xc 3=nh v=
tr cBa n trn mn hnh. Ta khng phL thuDc vo nh;ng
rng buDc 3ng, ty , nam, bec g cS.
4 4. .4 4. .T Th hi iZ Zt t k kZ Z G GU UI I c ch ho o c ch h) )* *n ng g t tr r n nh h
4 4. .4 4. .1 1. .T TV Vo o k kh hu un ng g c ch hW Wa a c cE Ea a s sP P c ch h) )* *n ng g t tr r n nh h
Thng thlng 3@ tPo c?a sJ chnh cho ch!ng trnh Kng
dLng ta tiNn hnh cc b7c:
- TPo 3Fi tang Frame
- Xc 3=nh kch th7c cBa Frame
- Th@ hi8n Frame trn mn hnh
V dX:
import java.awt.*;
class FrameDemo
{
public static void main(String args[])
{
// T&o 0<i t$Dng khung ch8aFrame
Frame fr = new Frame("My First Window") ;
// Xc 09nh kch th$*c, v9 tr cEa Frame
fr.setBounds(0, 0, 640, 480);
// Hi6n th9 Frame
87
fr.setVisible(true);
}
}

KNt quS thMc thi ch!ng trnh:

4 4. .4 4. .2 2. .T TV Vo o h h> > t th hL Ln ng g t th hY Yc c 9 9* *n n
[Fi v7i th vi8n awt, 3@ xy dMng h8 thFng thMc 3!n cho
ch!ng trnh Kng dLng chng ta c th@ dng cc l7p MenuBar,
Menu, MenuItem, MenuShortcut.







V dX: TPo h8 thFng thMc 3!n cho ch!ng trnh Calculator
import java.awt.*;
import java.awt.event.*;
class Calculator
{
public static void main(String[] args)
{

Menu
MenuBar
MenuItem
88
createMenu();
}

private static void createMenu()
{
// Tao Frame ung dung
final Frame fr = new Frame();
fr.setLayout(new BorderLayout());

// Tao cac menu bar
MenuBar menu = new MenuBar();
Menu menuFile = new Menu("Edit");
MenuItem copyItem = new MenuItem("Copy Ctrl+C");
MenuItem pasteItem = new MenuItem("Paste Ctrl+V");
menuFile.add(copyItem);
menuFile.add(pasteItem);

Menu menuHelp = new Menu("Help");
MenuItem hTopicItem = new MenuItem("Help Topics");
MenuItem hAboutItem = new MenuItem("About
Calculator");
menuHelp.add(hTopicItem);
menuHelp.addSeparator();
menuHelp.add(hAboutItem);
menu.add(menuFile);
menu.add(menuHelp);

fr.setMenuBar(menu);
fr.setBounds(100, 100, 300, 200);
fr.setTitle("Calculator");
//fr.setResizable(false);
fr.setVisible(true);

// xL l bin s) ki3n 0ng cLa s< 8ng dTng.
fr.addWindowListener(
89
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
KNt quS thMc thi ch!ng trnh:

4 4. .4 4. .3 3. .G Gk kn n C Co om mp po on ne en nt t v v o o k kh hu un ng g c ch hW Wa a
[@ gen mDt thnh ph4n, mDt 3Fi tang component vo mDt
c?a sF (khung chKa) chng ta dng ph!ng thKc add cBa 3Fi
tang khung chKa container.
V dX:
import java.awt.*;
class AddDemo
{
public static void main(String args[])
{
// T&o 0<i t$Dng khung ch8aFrame
Frame fr = new Frame("AddDemo App");
// T&o 0<i t$Dng Component
90
Button buttOk = new Button(OK);
// GUn 0<i t$Dng nt nh/n vo khung ch8a
fr.add(buttOk);
// Xc 09nh kch th$*c, v9 tr cEa Frame
fr.setSize(100, 100);
// Hi6n th9 Frame
fr.setVisible(true);
}
} }

KNt quS thMc thi ch!ng trnh:


4 4. .4 4. .4 4. .T Tr r n nh h b b y y c c c c C Co om mp po on ne en nt t t tr ro on ng g k kh hu un ng g c ch hW Wa a
Nh chng ta 3 biNt khung chKa container nh<n cc 3Fi
tang tb bn ngoi 3a vo v n phSi biNt lm thN no 3@ tJ
chKc sep xNp cht 1 cho cc 3Fi tang 3. Mti 3Fi tang
khung chKa 3:u c mDt bD quSn l ch=u trch nhi8m thMc hi8n
cng vi8c 3Ry 3 l bD quSn l trnh by (Layout Manager).
Chng ta so tm hi@u chi tiNt v: cc ki@u trnh by cBa th vi8n
AWT.
Interface LayoutManager 3=nh ngh_a giao tiNp cho nh;ng
l7p biNt 3ac lm thN no 3@ trnh by nh;ng trong nh;ng
containers
4.4.4.1 FlowLayout
public class FlowLayout extends Object
91
implements LayoutManager, Serializable
[Fi v7i mDt container trnh by theo ki@u FlowLayout th:
Cc component gen vo 3ac sep xNp theo thK tM tb tri
sang phSi v tb trn xuFng d7i.
Cc component c kch th7c nh mong muFn.
NNu chi:u rDng cBa Container khng 3B cht cho cc
component th chng tM 3Dng tPo ra mDt dng m7i.
FlowLayout thlng 3ac dng 3@ 3@ sep xNp cc button
trong 1 panel.
Chng ta c th@ 3i:u chunh khoSng cch gi;a cc
component.
V dX:
import java.awt.*;
import java.lang.Integer;
class FlowLayoutDemo
{
public static void main(String args[])
{
Frame fr = new Frame("FlowLayout Demo");
fr.setLayout(new FlowLayout());
fr.add(new Button("Red"));
fr.add(new Button("Green"));
fr.add(new Button("Blue"));

List li = new List();
for (int i=0; i<5; i++)
{
li.add(Integer.toString(i));
}

fr.add(li);
fr.add(new Checkbox("Pick me", true));
fr.add(new Label("Enter your name:"));
92
fr.add(new TextField(20));
// ph$%ng th8c pack() 0$Dc g,i s= lm cho cLa sV
// hi3n hnh s= c kch th$*c vBa v*i kch th$*c
// trnh by b< tr nhAng thnh phKn con cEa n.
fr.pack();
fr.setVisible(true);
}
}

KNt quS thMc thi ch!ng trnh:


4.4.4.2 BorderLayout
public class BorderLayout extends Object
implements LayoutManager2, Serializable
[Fi v7i mDt container trnh by theo ki@u BorderLayout th:
BD trnh by khung chKa 3ac chia lm 4 vng:
NORTH, SOUTH, WEST, EAST v CENTER. ([ng,
Ty, Nam, Bec v trung tm). BD trnh by loPi ny cho
php sep xNp v thay 3Ji kch th7c cBa nh;ng
components chKa trong n sao cho vKa v7i 5 vng
[NG, TY, NAM, BzC, TRUNG TM.
Khng c4n phSi gen component vo cho tRt cS cc vng.
Cc component 1 vng NORTH v SOUTH c chi:u
cao ty nhng c chi:u rDng 3ng bOng chi:u rDng
vng chKa.
Cc component 1 vng EAST v WEST c chi:u rDng
ty nhng c chi:u cao 3ng bOng chi:u cao vng
chKa.
Cc component 1 vng CENTER c chi:u cao v chi:u
rDng phL thuDc vo cc vng xung quanh.
93
V dX:
import java.awt.*;
class BorderLayoutDemo extends Frame
{
private Button north, south, east, west, center;
public BorderLayoutDemo(String sTitle)
{
super(sTitle);
north = new Button("North");
south = new Button("South");
east = new Button("East");
west = new Button("West");
center = new Button("Center");
this.add(north, BorderLayout.NORTH);
this.add(south, BorderLayout.SOUTH);
this.add(east, BorderLayout.EAST);
this.add(west, BorderLayout.WEST);
this.add(center, BorderLayout.CENTER);
}
public static void main(String args[])
{
Frame fr = new BorderLayoutDemo ("BorderLayout
Demo");
fr.pack();
fr.setVisible(true);
}
}
KNt quS thMc thi ch!ng trnh:
94


4.4.4.3 GridLayout
public class GridLayout extends Object
implements LayoutManager
[Fi v7i mDt container trnh by theo ki@u GridLayout th:
BD trnh by tPo mDt khung l7i v hnh v7i cc bOng
nhau.
Cc 3Fi tang so 3Ht vba kch th7c v7i tbng 3. ThK
tM sep xNp tb tri qua phSi v tb trn xuFng d7i.

V dX:
import java.awt.*;
public class GridLayoutDemo
{
public static void main(String arg[])
{
Frame f = new Frame("GridLayout Demo");
f.setLayout(new GridLayout(3,2));

f.add(new Button("Red"));
f.add(new Button("Green"));
f.add(new Button("Blue"));
f.add(new Checkbox("Pick me", true));
f.add(new Label("Enter name here:"));
95
f.add(new TextField());

f.pack();
f.setVisible(true);
}
}
KNt quS thMc thi ch!ng trnh:

4.4.4.4 GridBagLayout
public class GridBagLayout extends Object
implements LayoutManager2
(public interface LayoutManager2 extends
LayoutManager)
[Fi v7i mDt container trnh by theo ki@u GridBagLayout th:
Cc componets khi 3ac 3a vo khung chKa so 3ac
trnh by trn 1 khung l7i v hnh t!ng tM nh
GridLayout. Tuy nhin khc v7i GridLayout kch th7c
cc 3Fi tang khng nhRt thiNt phSi vba v7i 1 trn
khung l7i m c th@ l 2, 3 hay nhi:u h!n ty theo
cc rng buDc m ta chu 3=nh thng qua 3Fi tang
GridBagConstraints.
L7p GridBagConstraints dgn xuRt tb l7p Object. L7p
GridBagConstraints dng 3@ chu 3=nh rng buDc cho
nh;ng components trnh by trong khung chKa container
theo ki@u GridBagLayout.
o gridx, gridy: v= tr cBa khung l7i v hnh m
ta so 3a 3Fi tang con vo
96
o gridwidth, gridheight: kch th7c hay vng
trnh by cho 3Fi tang con.
o Insets: l mDt biNn 3Fi tang thuDc l7p Inset
dng 3@ qui 3=nh khoSng cch bin phn cch
theo 4 chi:u (trn, d7i, tri, phSi).
o weightx, weighty: chu 3=nh khoSng cch l7n ra
t!ng 3Fi cBa cc 3Fi tang con v7i nhau
V dX:
import java.awt.*;
public class GridBagLayoutDemo
{
public static void main(String arg[])
{
Frame f = new Frame("GridBagLayout Demo");

// Thiet lap layout manager
// Tao doi tuong rang buoc cho cach trinh bay
// GridBagLayout.
GridBagLayout layout = new GridBagLayout();
GridBagConstraints constraints = new
GridBagConstraints();
f.setLayout(layout);

// Tao ra 9 nut nhan
String[] buttName = {"Mot", "Hai", "Ba", "Bon",
"Nam", "Sau", "Bay", "Tam", "Chin"};
Button[] buttons = new Button[9];

for(int i=0;i<9;i++)
{
buttons[i] = new Button (buttName[i]);
}

// Rang buoc cac nut nhan cach nhau 2 pixel
97
constraints.insets = new Insets(2,2,2,2);

// Qui dinh cac nut nhan se thay doi kich thuoc
// theo ca 2 chieu
constraints.fill = GridBagConstraints.BOTH;

// Rang buoc cho nut nhan thu 1
constraints.gridx = 1;
constraints.gridy = 1;
constraints.gridheight = 2;
constraints.gridwidth = 1;
layout.setConstraints(buttons[0], constraints);

// Rang buoc cho nut nhan thu 2
constraints.gridx = 2;
constraints.gridy = 1;
constraints.gridheight = 1;
constraints.gridwidth = 2;
layout.setConstraints(buttons[1], constraints);

// Rang buoc cho nut nhan thu 3
constraints.gridx = 2;
constraints.gridy = 2;
constraints.gridheight = 1;
constraints.gridwidth = 1;
layout.setConstraints(buttons[2], constraints);

// Rang buoc cho nut nhan thu 4
constraints.gridx = 1;
constraints.gridy = 3;
constraints.gridheight = 1;
constraints.gridwidth = 2;
layout.setConstraints(buttons[3], constraints);

// Rang buoc cho nut nhan thu 5
98
constraints.gridx = 3;
constraints.gridy = 2;
constraints.gridheight = 2;
constraints.gridwidth = 1;
layout.setConstraints(buttons[4], constraints);

// Rang buoc cho nut nhan thu 6
constraints.gridx = 4;
constraints.gridy = 1;
constraints.gridheight = 3;
constraints.gridwidth = 1;
layout.setConstraints(buttons[5], constraints);

// Tu nut thu 7 tro di khong can rang buoc
// thay vi doi kich thuoc
constraints.fill = GridBagConstraints.NONE;

// Rang buoc cho nut nhan thu 7
constraints.gridx = 1;
constraints.gridy = 4;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.weightx = 1.0;
layout.setConstraints(buttons[6], constraints);

// Rang buoc cho nut nhan thu 8
constraints.gridx = 2;
constraints.gridy = 5;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.weightx = 2.0;
layout.setConstraints(buttons[7], constraints);

// Rang buoc cho nut nhan thu 9
constraints.gridx = 3;
99
constraints.gridy = 6;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.weightx = 3.0;
layout.setConstraints(buttons[8], constraints);

// Dua cac nut nhan khung chua chuong trinh
for (int i=0;i<9;i++)
f.add(buttons[i]);

f.pack();
f.setVisible(true);
}
}
KNt quS thMc thi ch!ng trnh:

4.4.4.5 Null Layout
MDt khung chKa 3ac trnh by theo ki@u Null Layout c
ngh_a l ngli l<p trnh phSi tM lm tRt cS tb vi8c qui 3=nh kch
th7c cBa khung chKa, cmng nh kch th7c v v= tr cBa tbng
3Fi tang component trong khung chKa.
[@ thiNt l<p cch trnh by l Null Layout cho mDt container
ta chu vi8c g\i ph!ng thKc setLayout(null) v7i tham sF l null.
100
MDt sF ph!ng thKc cBa l7p trbu tang Component dng 3@
3=nh v= v qui 3=nh kch th7c cBa component khi 3a chng
vo khung chKa trnh by theo ki@u ki@u tM do:
o Public void setLocation(Point p)
o Public void setSize(Dimension p)
o Public void setBounds(Rectangle r)
V dX:
o MyButton.setSize(new Dimension(20, 10));
o MyButton.setLocation(new Point(10, 10));
o MyButton.setBounds(10, 10, 20, 10);
import java.awt.*;
class NullLayoutDemo
{
public static void main(String args[])
{
Frame fr = new Frame("NullLayout Demo");
fr.setLayout(null);
Button buttOk = new Button("OK");
buttOk.setBounds(100, 150, 50, 30);
Button buttCancel = new Button("Cancel");
buttCancel.setBounds(200, 150, 50, 30);
Checkbox checkBut = new Checkbox("Check
box", true);
checkBut.setBounds(100, 50, 100, 20);

List li = new List();
for (int i=0; i<5; i++)
{
li.add(Integer.toString(i));
}
li.setBounds(200, 50, 50, 50);

fr.add(buttOk);
fr.add(buttCancel);
101
fr.add(checkBut);
fr.add(li);

fr.setBounds(10, 10, 400, 200);
fr.setVisible(true);
}
}

KNt quS thMc thi ch!ng trnh:


4 4. .4 4. .5 5. .C C c c 9 9L Li i t t) )R Rn ng g k kh hu un ng g c ch hW Wa a C Co on nt ta ai in ne er r
Nh chng ta 3 biNt container l 3Fi tang khung chKa c
khS njng quSn l v chKa cc 3Fi tang (components) khc
trong n.
Cc components chu c th@ s? dLng 3ac khi 3a n vo 1
3Fi tang khung chKa l container.
Mti container thlng gen v7i mDt LayoutManager
(FlowLayout, BorderLayout, GridLayout, GridBagLayout, Null
Layout) qui 3=nh cch trnh by v bF tr cc components trong
mDt container.
Cc l\ai container trong java: Frame, Panel, Dialog,
ScrollPanes.
102
4.4.5.1 Khung chWa Frame
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Window
+--java.awt.Frame
Khung chKa Frame l mDt c?a sF window hvn hoi 1 mKc
trn cng bao gQm mDt tiu 3:u v mDt 3lng bin (border)
nh cc Kng dLng windows thng thlng khc. Khung chKa
Frame thlng 3ac s? dLng 3@ tPo ra c?a sJ chnh cBa cc Kng
dLng.
Khung chKa Panel c bD quSn l trnh by (LayoutManager)
mHc 3=nh l FlowLayout.
4.4.5.2 Khung chWa Panel
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Panel
Khung chKa Panel c bD quSn l trnh by (LayoutManager)
mHc 3=nh l FlowLayout.
[Fi v7i khung chKa Panel th cc Panel c th@ lQng vo
nhau, v v<y khung chKa Panel thlng 3ac dng 3@ bF tr cc
nhm components bn trong mDt khung chKa khc.
V dX:
import java.awt.*;
public class PanelDemo extends Frame
{
private Button next, prev, first;
private List li;
public PanelDemo(String sTitle)
{
super(sTitle);
next = new Button("Next >>");
prev = new Button("<< Prev");
103
first = new Button("First");

Panel southPanel = new Panel();
southPanel.add(next);
southPanel.add(prev);
southPanel.add(first);
// BorderLayout.SOUTH: vng d$*i
this.add(southPanel, BorderLayout.SOUTH);

Panel northPanel = new Panel();
northPanel.add(new Label("Make a Selection"));
// BorderLayout.NORTH: vng trn
this.add(northPanel, BorderLayout.NORTH);

li = new List();
for(int i=0;i<10;i++)
{
li.add("Selection" + i);
}
this.add(li, BorderLayout.CENTER);
}
public static void main(String arg[])
{
Container f = new PanelDemo("Panel Demo");
f.setSize(300, 200);
f.setVisible(true);
}
}
KNt quS thMc thi ch!ng trnh:
104


4.4.5.2 Khung chWa Dialog
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Window
+ +- -- -j ja av va a. .a aw wt t. .D Di ia al lo og g
Dialog l mDt l7p khung chKa tMa Frame v cn 3ac g\i l
popup window. C hai loPi dialog phJ biNn:
Modal Dialog: so kha tRt cS cc c?a sF khc cBa Kng
dLng khi dialog dPng ny cn hi@n th=.
Non-Modal Dialog: vgn c th@ 3Nn cc c?a sF khc cBa
Kng dLng khi dialog dPng ny hi@n th=.
MDt c?a sJ dPng Dialog lun lun phSi gen v7i mDt c?a sJ
Kng dLng (Frame).
[@ tPo mDt 3Fi tang khung chKa Dialog ta c th@ dng mDt
trong cc constructor cBa n:
public Dialog (Frame parentWindow, boolean isModal)
public Dialog (Frame parentWindow, String title,
boolean isModal)
parentWindow: cLa sV cha
title: tiu 0; cEa Dialog
isModal: true -> l Dialog d&ng modal
isModal: false -> l Dialog khng ph4i d&ng modal
(hay non-modal)
105
4 4. .5 5. .X XE E l l b bi iZ Zn n c cL L/ /s sY Y k ki i> >n n
4 4. .5 5. .1 1. .M M h h n nh h x xE E l l s sY Y k ki i> >n n ( (E Ev ve en nt t- -H Ha an nd dl li in ng g M Mo od de el l) )
i trn chng ta chu 3: c<p 3Nn vRn 3: thiNt kN giao di8n
ch!ng trnh Kng dLng m cha 3: c<p 3Nn vRn 3: x? l sM
ki8n. Nh;ng sM ki8n 3ac pht sinh khi ngli dng t!ng tc
v7i giao di8n ch!ng trnh (GUI). Nh;ng t!ng tc thlng gHp
nh: di chuy@n, nhRn chuDt, nhRn mDt nt nhRn, ch\n mDt
MenuItem trong h8 thFng thMc 3!n, nh<p d; li8u trong mDt
vjn bSn, 3ng c?a sJ Kng dLng, Khi c mDt t!ng tc xSy ra
th mDt sM ki8n 3ac g1i 3Nn ch!ng trnh. Thng tin v: sM ki8n
thlng 3ac lu tr; trong mDt 3Fi tang dgn xuRt tb l7p
AWTEvent. Nh;ng ki@u sM ki8n trong gi java.awt.event c
th@ dng cho cS nh;ng component AWT v JFC. [Fi v7i th
vi8n JFC th c thm nh;ng ki@u sM ki8n m7i trong gi
java.swing.event.
106
NhAng l=p sY ki>n cHa gi java.awt.event













C 3 yNu tF quan tr\ng trong m hnh x? l sM ki8n:
- NguQn pht sinh sM ki8n (event source)
- SM ki8n (event object)
- BD leng nghe sM ki8n (event listener)

NguSn pht sinh sY ki>n: l thnh ph4n cBa giao di8n m
ngli dng tc 3Dng.
SY ki>n: Tm tet thng tin v: x? ki8n xSy ra, bao gQm tham
chiNu 3Nn nguQn gFc pht sinh sM ki8n v thng tin sM ki8n so
g1i 3Nn cho bD leng nghe x? l.
BJ lkng nghe: MDt bD leng nghe l mDt 3Fi tang cBa mDt l7p
hi8n thMc mDt hay nhi:u interface cBa gi java.awt.event hay
java.swing.event (3Fi v7i nh;ng component trong th vi8n
JFC). Khi 3ac thng bo, bD leng nghe nh<n sM ki8n v x? l.
NguQn pht sinh sM ki8n phSi cung cRp nh;ng ph!ng thKc 3@
3jng k hoHc hBy bp mDt bD leng nghe. NguQn pht sinh sM
ki8n lun phSi gen v7i mDt bD leng nghe, v n so thng bo
v7i bD leng nghe 3 khi c sM ki8n pht sinh 3.
Nh v<y ngli l<p trnh c4n lm hai vi8c:



107
TPo v 3jng k mDt bD leng nghe cho mDt component
trn GUI.
Ci 3Ht cc ph!ng thKc quSn l v x? l sM ki8n

NhAng interfaces lkng nghe cHa gi java.awt.event





















MDt 3Fi tang Event-Listener leng nghe nh;ng sM ki8n khc
nhau pht sinh tb cc components cBa giao di8n ch!ng trnh.
V7i mti sM ki8n khc nhau pht sinh th ph!ng thKc t!ng
Kng trong nh;ng Event-Listener so 3ac g\i thMc hi8n.
Mti interface Event-Listener gQm mDt hay nhi:u cc ph!ng
thKc m chng c4n ci 3Ht trong cc l7p hi8n thMc (implements)
interface 3. Nh;ng ph!ng thKc trong cc interface l trbu
tang v v<y l7p (bD leng nghe) no hi8n thMc cc interface th



108
phSi ci 3Ht tRt cS nh;ng ph!ng thKc 3. NNu khng th cc bD
leng nghe so tr1 thnh cc l7p trbu tang.
4 4. .5 5. .2 2. .X XE E l l s sY Y k ki i> >n n c ch hu uJ Jt t
Java cung cRp hai intefaces leng nghe (bD leng nghe sM ki8n
chuDt) l MouseListener v MouseMotionListener 3@ quSn l
v x? l cc sM ki8n lin quan 3Nn thiNt b= chuDt. Nh;ng sM ki8n
chuDt c th@ bgy cho bRt kq component no trn GUI m dgn
xuRt tb java.awt.component.
Cc ph!ng thKc cBa interface MouseListener:
public void mousePressed(MouseEvent event): 3ac g\i
khi mDt nt chuDt 3ac nhRnv con trp chuDt 1 trn
component.
public void mouseClicked(MouseEvent event): 3ac g\i
khi mDt nt chuDt 3ac nhRn v nhS trn component m
khng di chuy@n chuDt.
public void mouseReleased(MouseEvent event): 3ac
g\i khi mDt nt chuDt nhS sa khi ko r.
public void mouseEntered(MouseEvent event): 3ac g\i
khi con trp chuDt vo trong 3lng bin cBa mDt
component.
public void mouseExited(MouseEvent event): 3ac g\i
khi con trp chuDt ra khpi 3lng bin cBa mDt
component.
Cc ph!ng thKc cBa interface MouseMotionListener:
public void mouseDragged(MouseEvent even ): ph!ng
thKc ny 3ac g\i khi ngli dng nhRn mDt nt chuDt
v ko trn mDt component.
public void mouseMoved(MouseEvent event): ph!ng
thKc ny 3ac g\i khi di chuy@n chuDt trn component.
Mti ph!ng thKc x? l sM ki8n chuDt c mDt tham sF
MouseEvent chKa thng tin v: sM ki8n chuDt pht sinh chvng
hPn nh: t\a 3D x, y n!i sM ki8n chuDt xSy ra. Nh;ng ph!ng
109
thKc t!ng Kng trong cc interfaces so tM 3Dng 3ac g\i khi
chuDt t!ng tc v7i mDt component.
[@ biNt 3ac ngli dng 3 nhRn nt chuDt no, chng ta
dng nh;ng phu!ng thKc, nh;ng hOng sF cBa l7p InputEvent (l
l7p cha cBa l7p MouseEvent).
V dX: Ch!ng trnh tn MouseTracker bn d7i minh h\a vi8c
dng nh;ng ph!ng thKc cBa cc interfaces MouseListener v
MouseMotionListener 3@ bgy v x? l cc sM ki8n chuDt
t!ng Kng.
import java.awt.*;
import java.awt.event.*;
public class MouseTracker extends Frame
implements MouseListener, MouseMotionListener
{
private Label statusBar;
// set up GUI and register mouse event handlers
public MouseTracker()
{ super( "Demonstrating Mouse Events" );
statusBar = new Label();
this.add( statusBar, BorderLayout.SOUTH );
// application listens to its own mouse events
addMouseListener( this );
addMouseMotionListener( this );
setSize( 275, 100 );
setVisible( true );
}

// MouseListener event handlers
// handle event when mouse released immediately
// after press
public void mouseClicked( MouseEvent event )
{
statusBar.setText( "Clicked at [" + event.getX() +
110
", " + event.getY() + "]" );
}

// handle event when mouse pressed
public void mousePressed( MouseEvent event )
{
statusBar.setText( "Pressed at [" + event.getX() +
", " + event.getY() + "]" );
}

// handle event when mouse released after dragging
public void mouseReleased( MouseEvent event )
{
statusBar.setText( "Released at [" + event.getX() +
", " + event.getY() + "]" );
}

// handle event when mouse enters area
public void mouseEntered( MouseEvent event )
{
statusBar.setText( "Mouse in window" );
}

// handle event when mouse exits area
public void mouseExited( MouseEvent event )
{ statusBar.setText( "Mouse outside window" );
}

// MouseMotionListener event handlers
// handle event when user drags mouse with button pressed
public void mouseDragged( MouseEvent event )
{
statusBar.setText( "Dragged at [" + event.getX() +
", " + event.getY() + "]" );
}
111

// handle event when user moves mouse
public void mouseMoved( MouseEvent event )
{
statusBar.setText( "Moved at [" + event.getX() +
", " + event.getY() + "]" );
}

// execute application
public static void main( String args[] )
{
MouseTracker application = new MouseTracker();
}
} // end class MouseTracker
KNt quS thMc thi ch!ng trnh:



4 4. .5 5. .3 3. .X XE E l l s sY Y k ki i> >n n b b n n p ph h m m
[@ x? l sM ki8n bn phm java ht tra mDt bD leng nghe sM
ki8n 3 l interface KeyListener. MDt sM ki8n bn phm 3ac
112
pht sinh khi ngli dng nhRn v nhS mDt phm trn bn phm.
MDt l7p hi8n thMc KeyListener phSi ci 3Ht cc ph!ng thKc
keyPressed, keyReleased v keyTyped. Mti ph!ng thKc ny c
mDt tham sF l mDt 3Fi tang ki@u KeyEvent. KeyEvent l l7p
con cBa l7p InputEvent.
Cc ph!ng thKc cBa interface KeyListener
Ph!ng thKc keyPressed 3ac g\i khi mDt phm bRt kq
3ac nhRn.
Ph!ng thKc keyTyped 3ac g\i thMc hi8n khi ngli
dng nhRn mDt phm khng phSi phm hnh 3Dng
(nh phm mmi tn, phm Home, End, Page Up, Page
Down, cc phm chKc njng nh: Num Lock, Print
Screen, Scroll Lock, Caps Lock, Pause).
Ph!ng thKc keyReleased 3ac g\i thMc hi8n khi nhS
phm nhRn sau khi sM ki8n keyPressed hoHc keyTyped.
V dX: minh h\a vi8c x? l sM ki8n chuDt thng qua cc ph!ng
thKc cBa interface KeyListener. L7p KeyDemo bn d7i hi8n
thMc interface KeyListener, v v<y tRt cS 3 ph!ng thKc trong
KeyListener phSi 3ac ci 3Ht trong ch!ng trnh.
// KeyDemo.java
// Demonstrating keystroke events.
// Java core packages
import java.awt.*;
import java.awt.event.*;
public class KeyDemo extends Frame implements KeyListener
{
private String line1 = "", line2 = "";
private String line3 = "";
private TextArea textArea;

// set up GUI
public KeyDemo()
113
{
super( "Demonstrating Keystroke Events" );

// set up TextArea
textArea = new TextArea( 10, 15 );
textArea.setText( "Press any key on the keyboard..." );
textArea.setEnabled( false );
this.add( textArea );

// allow frame to process Key events
addKeyListener( this );

setSize( 350, 100 );
setVisible( true );
}

// handle press of any key
public void keyPressed( KeyEvent event )
{
line1 = "Key pressed: " +
event.getKeyText( event.getKeyCode() );
setLines2and3( event );
}

// handle release of any key
public void keyReleased( KeyEvent event )
{
line1 = "Key released: " +
event.getKeyText( event.getKeyCode() );
setLines2and3( event );
}

// handle press of an action key
public void keyTyped( KeyEvent event )
{
114
line1 = "Key typed: " + event.getKeyChar();
setLines2and3( event );
}

// set second and third lines of output
private void setLines2and3( KeyEvent event )
{
line2 = "This key is " + ( event.isActionKey() ? "" : "not
" ) + "an action key";

String temp = event.getKeyModifiersText(
event.getModifiers() );

line3 = "Modifier keys pressed: " + ( temp.equals( "" ) ?
"none" : temp );

textArea.setText(line1+"\n"+line2+"\n"+ line3+"\n" );
}

// execute application
public static void main( String args[] )
{
KeyDemo application = new KeyDemo();
}

} // end class KeyDemo
KNt quS thMc thi ch!ng trnh:

115




4 4. .6 6. .M MJ Jt t s sL L v v d dX X m mi in nh h h he ea a
V dX 1: TPo bD leng nghe biNn cF cho 3Fi tang khung chKa
Frame, v x? l biNn cF 3ng c?a sJ.
import java.awt.*;
import java.awt.event.*;
public class WindowClosingDemo
{
public static void main(String args[])
116
{
Frame f = new Frame ("WindowClosing Demo");
WindowCloser closer = new WindowCloser();
f.addWindowListener(closer);
f.setBounds(10, 10, 300, 200);
f.setVisible(true);
}
}

import java.awt.event.*;
class WindowCloser implements WindowListener
{
public void windowClosing(WindowEvent e)
{
System.out.println("windowClosing..");
System.exit(0);
}
public void windowActivated(WindowEvent e)
{
System.out.println("windowActivated...");
}
public void windowClosed(WindowEvent e)
{
System.out.println("windowClosed...");
}
public void windowDeactivated(WindowEvent e)
{
System.out.println("windowDeactivated...");
}
public void windowDeiconified(WindowEvent e)
{
System.out.println("windowDeiconified...");
}
public void windowIconified(WindowEvent e)
{
117
System.out.println("windowIconified...");
}
public void windowOpened(WindowEvent e)
{ System.out.println("windowOpened...");
}
}

C th@ dng l7p trbu tang WindowAdapter 3@ tPo ra bD leng
nghe.
public abstract class WindowAdapter extends Object
implements WindowListener
(WindowAdapter hi8n thMc interface WindowListener
nn l7p So ny cmng c 7 ph!ng thKc giFng nh giao
di8n WindowListener)

import java.awt.event.*;
class WindowCloser extends WindowAdapter
{ public void windowClosing(WindowEvent e)
{ System.out.println("windowClosing..");
System.exit(0);
}
}
V dX 2: CheckboxGroup Demo
import java.awt.*;
public class CheckboxGroupDemo extends Frame
{
private Checkbox red, green, blue;
private CheckboxGroup checkGroup;
public CheckboxGroupDemo(String title)
{ super(title);
checkGroup = new CheckboxGroup();
red = new Checkbox("Red", checkGroup, false);
green = new Checkbox("Green", checkGroup, false);
blue = new Checkbox("Blue", checkGroup, false);
118

//add the checkboxes to the frame
Panel north = new Panel();
north.add(red);
north.add(green);
north.add(blue);
this.add(north, BorderLayout.NORTH);

//register the event listener
SetColor listener = new SetColor(this);
red.addItemListener(listener);
green.addItemListener(listener);
blue.addItemListener(listener);
}

public static void main(String [] args)
{
Frame f = new
CheckboxGroupDemo("CheckboxGroupDemo");
f.setSize(300,300);
f.setVisible(true);
}
} // end of class

import java.awt.*;
import java.awt.event.*;
public class SetColor implements ItemListener
{
private Frame pallette;
private Color c;
public SetColor(Frame c)
{
pallette = c;
}

119
public void itemStateChanged(ItemEvent e)
{
String item = (String) e.getItem();
int state = e.getStateChange();
if (item.equalsIgnoreCase("red"))
c = new Color(255, 0, 0);
if (item.equalsIgnoreCase("green"))
c = new Color(0, 255, 0);
if (item.equalsIgnoreCase("blue"))
c = new Color(0, 0, 255);
pallette.setBackground(c);
}
} // end of class
KNt quS thMc thi ch!ng trnh:

V dX 3: TextComponent
import java.awt.*;
class TextComponentDemo extends Frame
{
private TextField textField;
private TextArea textArea;
private Button enter, clear;

public TextComponentDemo (String title)
{
super(title);
120
textArea = new TextArea("", 0, 0,
TextArea.SCROLLBARS_VERTICAL_ONLY);
textArea.setEditable(false);

textField = new TextField();
enter = new Button("Enter");
clear = new Button("Clear");

//layout the GUI
this.add(textArea, BorderLayout.CENTER);

Panel southEast = new Panel(new BorderLayout());
southEast.add(enter, BorderLayout.EAST);
southEast.add(clear, BorderLayout.WEST);

Panel south = new Panel(new BorderLayout());
south.add(textField, BorderLayout.CENTER);
south.add(southEast, BorderLayout.EAST);

this.add(south, BorderLayout.SOUTH);

//setup the event handling
CreateList listener = new CreateList(textField,
textArea);
enter.addActionListener(listener);
clear.addActionListener(listener);
textField.addActionListener(listener);
}

public TextField getTextField()
{
return textField;
}

public static void main(String [] args)
121
{
TextComponentDemo f = new TextComponentDemo
("TextComponentDemo ");
f.setSize(300,200);
f.setVisible(true);
f.getTextField().requestFocus();
}
}

import java.awt.*;
import java.awt.event.*;
public class CreateList implements ActionListener
{
private int counter = 0;
private TextField source;
private TextArea destination;

public CreateList(TextField s, TextArea d)
{ source = s;
destination = d;
}

public void actionPerformed(ActionEvent e)
{
String action = e.getActionCommand();
if (action.equalsIgnoreCase("Enter"))
{
String text = source.getText();
counter++;
destination.append(counter + "." + text + "\n");
source.setText("");
}
else
if (action.equalsIgnoreCase("Clear"))
{
122
destination.setText("");
counter = 0;
}
}
}

KNt quS thMc thi ch!ng trnh:


V dX 4: ListDemo
import java.awt.*;
public class ListDemo extends Frame
{ private List li;
private Label selected;
public ListDemo(String title)
{
super(title);
li = new List();
li.add("Monday");
li.add("Tuesday");
li.add("Wednesday");
li.add("Thursday");
li.add("Friday");
li.add("Saturday");
li.add("Sunday");

123
selected = new Label("Double click a day:",
Label.CENTER);
this.setLayout(new BorderLayout());

this.add(selected , BorderLayout.NORTH);
this.add(li, BorderLayout.CENTER);

// Tao listener cho List
ShowSelectionListener listener = new
ShowSelectionListener(selected);
li.addActionListener(listener);
}

public static void main(String args[])
{ ListDemo f = new ListDemo("List Demo");
f.setBounds(10, 10, 300, 200);
f.setVisible(true);
}
}

import java.awt.*;
import java.awt.event.*;
class ShowSelectionListener implements ActionListener
{ private Label lab;
public ShowSelectionListener(Label label_sel)
{
lab = label_sel;
}

public void actionPerformed(ActionEvent e)
{ // Tra ve Object ma Event da xuat hien
// getSource la phuong thuc ke thua tu
// java.util.EventObject
Object source = e.getSource();

124
// Nguon goc phat sinh bien co khong phai la List
if (!(source instanceof List))
{ return;
}
else
{
List li = (List) source;
String selected = li.getSelectedItem();
lab.setText(selected);
}
}
}
KNt quS thMc thi ch!ng trnh:

V dX 5: Xy dMng 1 l7p khung chKa Dialog dng 3@ hi@n th=
message giFng nh hm MessageBox trn Windows.
import java.awt.*;
import java.awt.event.*;
class DialogDemo
{
public static void main(String[] args)
{
createMenu();
}

125
private static void createMenu()
{
// Tao Frame ung dung
final Frame fr = new Frame();
fr.setLayout(new BorderLayout());

// Tao cac menu bar
MenuBar menubar = new MenuBar();
Menu mTest = new Menu("Test");
MenuItem testDlg = new MenuItem("Test Dialog");
testDlg.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
MessageBox msgBox = new
MessageBox(fr, "Here it is", "T/bao
Dialog");
msgBox.show();
}
}
);

mTest.add(testDlg);
menubar.add(mTest);
fr.setMenuBar(menubar);
fr.setBounds(100, 100, 300, 200);
fr.setVisible(true);

fr.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
126
}
}
);

}// end of createmenu()
} // end of class

import java.awt.*;
import java.awt.event.*;
public class MessageBox
{
Dialog msgBox;
/* ----------------------------------------------------------------
// Contructor cua lop MessageBox
// parentWindow: cua so cha
// title: Tieu de cua Dialog
// msg: chuoi thong bao
-----------------------------------------------------------------*/
public MessageBox(Frame parentWindow, String msg,
String title)
{
if (parentWindow == null)
{
Frame emptyWin = new Frame();
// Tao Modal Dialog (tham so thu 3:true)
msgBox = new Dialog(emptyWin, title, true);
}
else
{
msgBox = new Dialog(parentWindow, title, true);
}

// Doi tuong nhan dung de trinh bay cau thong bao
Label Message = new Label(msg);
// Thiet lap che do trinh bay layout cho cac doi tuong.
127
msgBox.setLayout(new FlowLayout());
// Dua nhan thong bao Label vao khung chua Dialog
msgBox.add(Message);
// Dua nut nhan OK vao trong khung chua Dialog
Button okButton = new Button("OK");
msgBox.add(okButton);
// Khai bao kich thuoc cua cua so thong bao
msgBox.setSize(200, 100);

// Xu ly tinh huong khi nguoi dung nhan nut OK
okButton.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
msgBox.setVisible(false);
}
}
);
}

public void show()
{
msgBox.show();
}

} // end of class MessageBox
KNt quS thMc thi ch!ng trnh:







128

C Ch h) )* *n ng g 5 5: : L LU Ul lN NG G V V T T6 6P P T TI IN N
(STREAMS & FILES)
5 5. .1 1. .M M7 7 9 9: :u u
Vi8c lu tr; d; li8u trong cc biNn ch!ng trnh, cc mSng
c tnh chRt tPm thli v d; li8u so mRt 3i khi biNn ra khpi t4m
Snh h1ng cBa n hoHc khi ch!ng trnh kNt thc. Files gip
cho cc ch!ng trnh c th@ lu tr; mDt lang l7n d; li8u, cmng
nh c th@ lu tr; d; li8u trong mDt thli gian di ngay cS khi
ch!ng trnh kNt thc. Trong ch!ng ny chng ta so tm hi@u
lm thN no cc ch!ng trnh java c th@ tPo, 3\c, ghi v x? l
cc files tu4n tM v cc file truy c<p nggu nhin thng qua mDt
sF v dL minh h\a.
X? l files l mDt vRn 3: hNt sKc c! bSn, quan tr\ng m bRt
kq mDt ngn ng; l<p trnh no cmng phSi ht tra nh;ng th vi8n,
hm 3@ x? l mDt sF thao tc c! bSn nhRt 3Fi v7i ki@u d; li8u
file.
X? l files l mDt ph4n cBa cng vi8c x? l cc luQng, gip
cho mDt ch!ng trnh c th@ 3\c, ghi d; li8u trong bD nh7, trn
files v trao 3J d; li8u thng qua cc kNt nFi trn mPng.
Ch!ng ny so cung cRp cho chng ta nh;ng kiNn thKc c!
bSn v: luQng (streams) v files:
- Th vi8n cc l7p v: luQng trong java: luQng byte, luQng
k tM.
- XuRt nh<p Console dng luQng byte, luQng k tM.
- XuRt nh<p files dng luQng k tM v luQng byte.
- VRn 3: x? l files truy c<p nggu nhin dng l7p
RandomAccessFile.
- X? l file v th mLc dng l7p File.
129
5 5. .2 2. .L Lu uS Sn ng g ( (S St tr re ea am ms s) )
5 5. .2 2. .1 1. .K Kh h i i n ni i> >m m l lu uS Sn ng g
TRt cS nh;ng hoPt 3Dng nh<p/xuRt d; li8u (nh<p d; li8u tb
bn phm, lRy d; li8u tb mPng v:, ghi d; li8u ra 3_a, xuRt d;
li8u ra mn hnh, my in, ) 3:u 3ac quy v: mDt khi ni8m
g\i l luQng (stream). LuQng l n!i c th@ sSn xuRt v tiu
thL thng tin. LuQng thlng 3ac h8 thFng xuRt nh<p trong
java gen kNt v7i mDt thiNt b= v<t l. TRt cS cc luQng 3:u c
chung mDt nguyn tec hoPt 3Dng ngay cS khi chng 3ac gen
kNt v7i cc thiNt b= v<t l khc nhau. V v<y cng mDt l7p,
ph!ng thKc xuRt nh<p c th@ dng chung cho cc thiNt b= v<t l
khc nhau. Chvng hPn cng mDt ph!ng thKc c th@ dng 3@
ghi d; li8u ra console, 3Qng thli cmng c th@ dng 3@ ghi d;
li8u xuFng mDt file trn 3_a. Java hi8n thMc luQng bOng t<p hap
cc l7p phn cRp trong gi java.io.
Java 3=nh ngh_a hai ki@u luQng: byte v k tM (phin bSn gFc
chu 3=nh ngh_a ki@u luQng byte, v sau 3 luQng k tM 3ac
thm vo trong cc phin bSn v: sau).
LuQng byte (hay luQng dMa trn byte) ht tra vi8c xuRt nh<p
d; li8u trn byte, thlng 3ac dng khi 3\c ghi d; li8u nh=
phn.
LuQng k tM 3ac thiNt kN ht tra vi8c xuRt nh<p d; li8u ki@u
k tM (Unicode). Trong mDt vi trlng hap luQng k tM s? dLng
hi8u quS h!n luQng byte, nhng 1 mKc h8 thFng th tRt cS nh;ng
xuRt nh<p 3:u phSi qui v: byte. LuQng k tM ht tra hi8u quS chu
3Fi v7i vi8c quSn l, x? l cc k tM.
5 5. .2 2. .2 2. .L Lu uS Sn ng g b by yt te e ( (B By yt te e S St tr re ea am ms s) )
Cc luQng byte 3ac 3=nh ngh_a dng hai l7p phn cRp.
MKc trn cng l hai l7p trbu tang InputStream v
OutputStream. InputStream 3=nh ngh_a nh;ng 3Hc 3i@m chung
cho nh;ng luQng nh<p byte. OutputStream m tS cch x? l cBa
cc luQng xuRt byte.
130
Cc l7p con dgn xuRt tb hai l7p InputStream v
OutputStream so ht tra chi tiNt t!ng Kng v7i vi8c 3\c ghi d;
li8u trn nh;ng thiNt b= khc nhau. [bng chong ngap v7i hng
loPt rRt nhi:u cc l7p khc nhau. [bng qu lo leng, mti khi bPn
nem v;ng, s? dLng thnh thPo mDt luQng byte no 3 th bPn dn
dng lm vi8c v7i nh;ng luQng cn lPi.

L7p luQng byte ngh_a
BufferedInputStream
Buffered input stream
BufferedOutputStream
Buffered output stream
ByteArrayInputStream
Input stream 3\c d; li8u tb mDt mSng
byte
ByteArrayOutputStream
Output stream ghi d; li8u 3Nn mDt mSng
byte
DataInputStream
LuQng nh<p c nh;ng ph!ng thKc 3\c
nh;ng ki@u d; li8u chusn trong java
DataOutputStream
LuQng xuRt c nh;ng ph!ng thKc ghi
nh;ng ki@u d; li8u chusn trong java
FileInputStream
LuQng nh<p cho php 3\c d; li8u tb file
FileOutputStream
LuQng xuRt cho php ghi d; li8u xuFng
file
FilterInputStream
Hi8n thMc l7p trbu tang InputStream
FilterOutputStream
Hi8n thMc l7p trbu tang OutputStream
InputStream
L7p trbu tang, l l7p cha cBa tRt cS cc
l7p luQng nh<p ki@u Byte
OutputStream
L7p trbu tang, l l7p cha cBa tRt cS cc
l7p xuRt nh<p ki@u Byte
PipedInputStream
LuQng nh<p byte ki@u Fng (piped)
thlng phSi 3ac gen v7i mDt luQng
xuRt ki@u Fng.
131
PipedOutputStream
LuQng nh<p byte ki@u Fng (piped)
thlng phSi 3ac gen v7i mDt luQng
nh<p ki@u Fng 3@ tPo nn mDt kNt nFi
trao 3Ji d; li8u ki@u Fng.
PrintStream
LuQng xuRt c chKa ph!ng thKc print()
v println()
PushbackInputStream
L mDt luQng nh<p ki@u Byte m ht tra
thao tc trS lPi (push back) v phLc hQi
thao tc 3\c mDt byte (unread)
RandomAccessFile
Ht tra cc thao tc 3\c, ghi 3Fi v7i file
truy c<p nggu nhin.
SequenceInputStream
L mDt luQng nh<p 3ac tPo nn bOng
cch nFi kNt logic cc luQng nh<p khc.
5 5. .2 2. .3 3. .L Lu uS Sn ng g k k t tY Y ( (C Ch ha ar ra ac ct te er r S St tr re ea am ms s) )
Cc luQng k tM 3ac 3=nh ngh_a dng hai l7p phn cRp.
MKc trn cng l hai l7p trbu tang Reader v Writer. L7p
Reader dng cho vi8c nh<p d; li8u cBa luQng, l7p Writer dng
cho vi8c xuRt d; li8u cua luQng. Nh;ng l7p dgn xuRt tb Reader
v Writer thao tc trn cc luQng k tM Unicode.

L7p luQng k tM ngh_a
BufferedReader
LuQng nh<p k tM 3\c d; li8u vo mDt
vng 38m.
BufferedWriter
LuQng xuRt k tM ghi d; li8u t7i mDt vng
38m.
CharArrayReader
LuQng nh<p 3\c d; li8u tb mDt mSng k
tM
CharArrayWriter
LuQng xuRt ghi d; li8u tli mDt mSng k
tM
132
FileReader
LuQng nh<p k tM 3\c d; li8u tb file
FileWriter
LuQng xuRt k tM ghi d; li8u 3Nn file
FilterReader
L7p 3\c d; li8u trung gian (l7p trbu
tang)
FilterWriter
L7p xuRt trung gian trbu tang
InputStreamReader
LuQng nh<p chuy@n bytes thnh cc k tM
LineNumberReader
LuQng nh<p 3Nm dng
OutputStreamWriter
LuQng xuRt chuy@n nh;ng k tM thnh cc
bytes
PipedReader
LuQng 3\c d; li8u bOng c! chN 3lng Fng
PipedWriter
LuQng ghi d; li8u bOng c! chN 3lng Fng
PrintWriter
LuQng ghi vjn bSn ra thiNt b= xuRt (chKa
ph!ng thKc print() v println() )
PushbackReader
LuQng nh<p cho php 3\c v khi phLc
lPi d; li8u
Reader
L7p nh<p d; li8u trbu tang
StringReader
LuQng nh<p 3\c d; li8u tb chuti
StringWriter
LuQng xuRt ghi d; li8u ra chuti
Writer
L7p ghi d; li8u trbu tang
5 5. .2 2. .4 4. .N Nh hA An ng g l lu uS Sn ng g 9 9) )R Rc c 9 9C Cn nh h n ng gh hi ia a t tr r) )= =c c ( (T Th he e P Pr re ed de ef fi in ne ed d
S St tr re ea am ms s) )
TRt cS cc ch!ng trnh viNt bOng java lun tM 3Dng import
gi java.lang. Gi ny c 3=nh ngh_a l7p System, bao gQm mDt
sF 3Hc 3i@m cBa mi trlng run-time, n c ba biNn luQng 3ac
3=nh ngh_a tr7c l in, out v err, cc biNn ny l cc fields
3ac khai bo static trong l7p System.
133
System.out: luQng xuRt chusn, mHc 3=nh l console.
System.out l mDt 3Fi tang ki@u PrintStream.
System.in: luQng nh<p chusn, mHc 3=nh l bn phm.
System.in l mDt 3Fi tang ki@u InputStream.
System.err: luQng lti chusn, mHc 3=nh cmng l console.
System.out cmng l mDt 3Fi tang ki@u PrintStream
giFng System.out.
5 5. .3 3. .S SE E d dX Xn ng g l lu uS Sn ng g B By yt te e
Nh chng ta 3 biNt hai l7p InputStream v OutputStream
l hai siu l7p (cha) 3Fi v7i tRt cS nh;ng l7p luQng xuRt nh<p
ki@u byte. Nh;ng ph!ng thKc trong hai siu l7p ny nm ra
cc lti ki@u IOException. Nh;ng ph!ng thKc 3=nh ngh_a trong
hai siu l7p ny l c th@ dng trong cc l7p con cBa chng. V
v<y t<p cc ph!ng thKc 3 l t<p tFi ti@u cc chKc njng nh<p
xuRt m nh;ng luQng nh<p xuRt ki@u byte c th@ s? dLng.
Nh;ng ph!ng thKc 3=nh ngh_a trong l7p
InputStream v OutputStream
Ph!ng thKc ngh_a
InputStream
int available( )
TrS v: sF luang bytes c th@ 3\c 3ac
tb luQng nh<p
void close( )
[ng luQng nh<p v giSi phng ti
nguyn h8 thFng gen v7i luQng.
Khng thnh cng so nm ra mDt lti
IOException
void mark(int numBytes)
[nh dRu 1 v= tr hi8n tPi trong luQng
nh<p
boolean markSupported( )
Ki@m tra xem luQng nh<p c ht tra
ph!ng thKc mark() v reset() khng.
134
int read( )

[\c byte tiNp theo tb luQng nh<p
int read(byte buffer[ ])

[\c buffer.length bytes v lu vo
trong vng nh7 buffer. KNt quS trS v:
sF bytes th<t sM 3\c 3ac
int read(byte buffer[ ], int
offset,
int numBytes)

[\c numBytes bytes bet 34u tb 3=a chu
offset v lu vo trong vng nh7
buffer. KNt quS trS v: sF bytes th<t sM
3\c 3ac
void reset( )

NhSy con trp 3Nn v= tr 3ac xc 3=nh
b1i vi8c g\i hm mark() l4n sau cng.
long skip(long numBytes)

NhSy qua numBytes d; li8u tb luQng
nh<p
OutputStream
void close( )

[ng luQng xuRt v giSi phng ti
nguyn h8 thFng gen v7i luQng.
Khng thnh cng so nm ra mDt lti
IOException
void flush( )

p d; li8u tb bD 38m phSi ghi ngay
xuFng luQng (nNu c)
void write(int b)

Ghi byte d; li8u chu 3=nh xuFng luQng
void write(byte buffer[ ])

Ghi buffer.length bytes d; li8u tb
mSng chu 3=nh xuFng luQng
void write(byte buffer[ ], int
offset,
int numBytes)

Ghi numBytes bytes d; li8u tb v= tr
offset cBa mSng chu 3=nh buffer xuFng
luQng
5 5. .3 3. .1 1. .& &e ec c d dA A l li i> >u u t tf f C Co on ns so ol le e
Tr7c 3y, khi Java m7i ra 3li 3@ thMc hi8n vi8c nh<p d;
li8u tb Console ngli ta chu dng luQng nh<p byte. V: sau th
135
chng ta c th@ dng cS luQng byte v luQng k tM, nhng trong
mDt sF trlng hap thMc tN 3@ 3\c d; li8u tb Console ngli ta
thch dng luQng ki@u k tM h!n, v l do 3!n giSn v dn bSo tr
ch!ng trnh. i 3y v7i mLc 3ch minh h\a chng ta dng
luQng byte thMc hi8n vi8c nh<p xuRt Console.
V dX: ch!ng trnh minh h\a vi8c 3\c mDt mSng bytes tb
System.in
Import java.io.*;
class ReadBytes
{
public static void main(String args[])
throws IOException
{
byte data[] = new byte[100];
System.out.print("Enter some characters.");
System.in.read(data);
System.out.print("You entered: ");
for(int i=0; i < data.length; i++)
System.out.print((char) data[i]);
}
}
KNt quS thMc thi ch!ng trnh:

5 5. .3 3. .2 2. .X Xu u\ \t t d dA A l li i> >u u r ra a C Co on ns so ol le e
T!ng tM nh nh<p d; li8u tb Console, v7i phin bSn 34u
tin cBa java 3@ xuRt d; li8u ra Console tS chu c th@ s? dLng
136
luQng byte. K@ tb phin bSn 1.1 (c thm luQng k tM), 3@ xuRt
d; li8u ra Console c th@ s? dLng cS luQng k tM v luQng byte.
Tuy nhin, cho 3Nn nay 3@ xuRt d; li8u ra Console thlng
ngli ta vgn dng luQng byte.
Chng ta 3 kh quen thuDc v7i ph!ng thKc print() v
println(), dng 3@ xuRt d; li8u ra Console. Bn cPnh 31o chng
ta cmng c th@ dng ph!ng thKc write().
V dX: minh h\a s? dLng ph!ng thKc System.out.write() 3@
xuRt k tM X ra Console
import java.io.*;
class WriteDemo
{
public static void main(String args[])
{
int b;
b = 'X';
System.out.write(b);
System.out.write('\n');
}
}
KNt quS thMc thi ch!ng trnh:

5 5. .3 3. .3 3. .& &e ec c v v g gh hi i f fi il le e d d n ng g l lu uS Sn ng g B By yt te e
TPo mDt luQng Byte gen v7i file chu 3=nh dng
FileInputStream v FileOutputStream. [@ m1 mDt file, 3!n giSn
chu c4n tPo mDt 3Fi tang cBa nh;ng l7p ny, tn file c4n m1 l
thng sF trong constructor. Khi file m1, vi8c 3\c v ghi d; li8u
137
trn file 3ac thMc hi8n mDt cch bnh thlng thng qua cc
ph!ng thKc cung cRp trong luQng.
5.3.3.1 &ec dA li>u tf file
M1 mDt file 3@ 3\c d; li8u
FileInputStream(String fileName) throws
FileNotFoundException
Nu file khng t.n t&i: th nm ra
FileNotFoundException
[\c d; li8u: dng ph!ng thKc read()
int read( ) throws IOException: 3\c tbng byte tb file v
trS v: gi tr= cBa byte 3\c 3ac. TrS v: -1 khi hNt file, v
nm ra IOException khi c lti 3\c.
[ng file: dng ph!ng thKc close()
void close( ) throws IOException: sau khi lm vi8c xong
c4n 3ng file 3@ giSi phng ti nguyn h8 thFng 3 cRp
pht cho file.
V dX:
/*
Hi6n th9 n2i dung cEa m2t file tn test.txt l$u t&iD:\test.txt
*/
import java.io.*;
class ShowFile
{
public static void main(String args[]) throws IOException
{
int i;
FileInputStream fin;
try
{
fin = new FileInputStream(D:\\test.txt);
}
catch(FileNotFoundException exc)
{
System.out.println("File Not Found");
138
return;
}
catch(ArrayIndexOutOfBoundsException exc)
{
System.out.println("Usage: ShowFile File");
return;
}

// read bytes until EOF is encountered
do
{
i = fin.read();
if(i != -1) System.out.print((char) i);
} while(i != -1);
fin.close();
}
}
KNt quS thMc thi ch!ng trnh:

5.3.3.2 Ghi dA li>u xuLng file
M1 mDt file 3@ ghi d; li8u
FileOutputStream(String fileName) throws
FileNotFoundException
Nu file khng t&o 0$Dc: th nm ra
FileNotFoundException
Ghi d; li8u xuFng: dng ph!ng thKc write()
void write(int byteval) throws IOException: ghi mDt
byte xc 3=nh b1i tham sF byteval xuFng file, v nm ra
IOException khi c lti ghi.
[ng file: dng ph!ng thKc close()
139
void close( ) throws IOException: sau khi lm vi8c xong
c4n 3ng file 3@ giSi phng ti nguyn h8 thFng 3 cRp
pht cho file.
V dX: copy nDi dung mDt file text 3Nn mDt file text khc.
/* Copy nDi dung cBa mDt file text*/
import java.io.*;
class CopyFile
{
public static void main(String args[])throws IOException
{
int i;
FileInputStream fin;
FileOutputStream fout;
try
{
// open input file
try
{
fin = new FileInputStream(D:\\source.txt);
}
catch(FileNotFoundException exc)
{
System.out.println("Input File Not Found");
return;
}

// open output file
try
{
fout = new FileOutputStream(D:\\dest.txt);
}
catch(FileNotFoundException exc)
{
140
System.out.println("Error Opening Output
File");
return;
}
}
catch(ArrayIndexOutOfBoundsException exc)
{
System.out.println("Usage: CopyFile From To");
return;
}

// Copy File
try
{
do
{
i = fin.read();
if(i != -1) fout.write(i);
} while(i != -1);
}
catch(IOException exc)
{
System.out.println("File Error");
}
fin.close();
fout.close();
}
}

KNt quS thMc thi ch!ng trnh: ch!ng trnh so copy nDi dung
cBa file D:\source.txt v ghi vo mDt file m7i D:\dest.txt.
141
5 5. .3 3. .4 4. .& &e ec c v v g gh hi i d dA A l li i> >u u n nh hC C p ph h n n
Ph4n trn chng ta 3 3\c v ghi cc bytes d; li8u l cc k
tM m ASCII. [@ 3\c v ghi nh;ng gi tr= nh= phn cBa cc ki@u
d; li8u trong java, chng ta s? dLng DataInputStream v
DataOutputStream.
DataOutputStream: hi8n thMc interface DataOuput. Interface
DataOutput c cc ph!ng thKc cho php ghi tRt cS nh;ng ki@u
d; li8u c! s1 cBa java 3Nn luQng (theo 3=nh dPng nh= phn).
Ph!ng thKc ngh_a
void writeBoolean
(boolean val)
Ghi xuFng luQng mDt gi tr=
boolean 3ac xc 3=nh b1i val.
void writeByte (int val)

Ghi xuFng luQng mDt byte 3ac
xc 3=nh b1i val.
void writeChar (int val)

Ghi xuFng luQng mDt Char 3ac
xc 3=nh b1i val.
void writeDouble
(double val)
Ghi xuFng luQng mDt gi tr=
Double 3ac xc 3=nh b1i val.
void writeFloat (float
val)
Ghi xuFng luQng mDt gi tr= float
3ac xc 3=nh b1i val.
void writeInt (int val)

Ghi xuFng luQng mDt gi tr= int
3ac xc 3=nh b1i val.
void writeLong (long
val)
Ghi xuFng luQng mDt gi tr= long
3ac xc 3=nh b1i val.
void writeShort (int val)

Ghi xuFng luQng mDt gi tr= short
3ac xc 3=nh b1i val.
Contructor: DataOutputStream(OutputStream outputStream)
OutputStream: l luQng xuRt d; li8u. [@ ghi d; li8u ra file
th 3Fi tang outputStream c th@ l FileOutputStream.
142
DataInputStream: hi8n thMc interface DataInput. Interface
DataInput c cc ph!ng thKc cho php 3\c tRt cS nh;ng ki@u
d; li8u c! s1 cBa java (theo 3=nh dPng nh= phn).
Ph!ng thKc ngh_a
boolean readBoolean( ) [\c mDt gi tr= boolean
Byte readByte( ) [\c mDt byte
char readChar( ) [\c mDt Char
double readDouble( ) [\c mDt gi tr= Double
float readFloat( ) [\c mDt gi tr= float
int readInt( ) [\c mDt gi tr= int
Long readLong( ) [\c mDt gi tr= long
short readShort( ) [\c mDt gi tr= short
Contructor: DataInputStream(InputStream inputStream)
InputStream: l luQng nh<p d; li8u. [@ 3\ d; li8u tb file th
3Fi tang InputStream c th@ l FileInputStream.
V dX: dng DataOutputStream v DataInputStream 3@ ghi v
3\c nh;ng ki@u d; li8u khc nhau trn file.
import java.io.*;
class RWData
{
public static void main(String args[]) throws IOException
{
DataOutputStream dataOut;
DataInputStream dataIn;
int i = 10;
double d = 1023.56;
boolean b = true;
try
{
dataOut = new DataOutputStream(
new FileOutputStream("D:\\testdata"));
}
catch(IOException exc)
143
{
System.out.println("Cannot open file.");
return;
}

try
{
System.out.println("Writing " + i);
dataOut.writeInt(i);
System.out.println("Writing " + d);
dataOut.writeDouble(d);
System.out.println("Writing " + b);
dataOut.writeBoolean(b);
System.out.println("Writing " + 12.2 * 7.4);
dataOut.writeDouble(12.2 * 7.4);
}
catch(IOException exc)
{
System.out.println("Write error.");
}

dataOut.close();
System.out.println();

// Now, read them back.
try
{
dataIn = new DataInputStream(
new FileInputStream("D:\\testdata"));
}
catch(IOException exc)
{
System.out.println("Cannot open file.");
return;
}
144
try
{
i = dataIn.readInt();
System.out.println("Reading " + i);
d = dataIn.readDouble();
System.out.println("Reading " + d);
b = dataIn.readBoolean();
System.out.println("Reading " + b);
d = dataIn.readDouble();
System.out.println("Reading " + d);
}
catch(IOException exc)
{ System.out.println("Read error.");
}
dataIn.close();
}
}
KNt quS thMc thi ch!ng trnh:
D; li8u ghi xuFng file D:\\testdata


KNt quS 3\c v xuRt ra Console:

145
5 5. .4 4. .F Fi il le e t tr ru uy y c cB Bp p n ng gm mu u n nh hi i n n ( (R Ra an nd do om m A Ac cc ce es ss s F Fi il le es s) )
Bn cPnh vi8c x? l xuRt nh<p trn file theo ki@u tu4n tM
thng qua cc luQng, java cmng ht tra truy c<p nggu nhin nDi
dung cBa mDt file no 3 dng RandomAccessFile.
RandomAccessFile khng dgn xuRt tb InputStream hay
OutputStream m n hi8n thMc cc interface DataInput,
DataOutput (c 3=nh ngh_a cc ph!ng thKc I/O c! bSn).
RandomAccessFile ht tra vRn 3: 3=nh v= con trp file bn trong
mDt file dng ph!ng thKc seek(long newPos).
V dX: minh h\a vi8c truy c<p nggu nhin trn file. Ch!ng
trnh ghi 6 sF ki@u double xuFng file, rQi 3\c ln theo thK tM
nggu nhin.
import java.io.*;
class RandomAccessDemo
{
public static void main(String args[]) throws IOException
{
double data[] = {19.4, 10.1, 123.54, 33.0, 87.9, 74.25};
double d;
RandomAccessFile raf;

try
{
raf = new RandomAccessFile("D:\\random.dat",
"rw");
}
catch(FileNotFoundException exc)
{
System.out.println("Cannot open file.");
return ;
}

146
// Write values to the file.
for(int i=0; i < data.length; i++)
{
try
{
raf.writeDouble(data[i]);
}
catch(IOException exc)
{
System.out.println("Error writing to file.");
return ;
}
}

try
{
// Now, read back specific values
raf.seek(0); // seek to first double
d = raf.readDouble();
System.out.println("First value is " + d);
raf.seek(8); // seek to second double
d = raf.readDouble();
System.out.println("Second value is " + d);
raf.seek(8 * 3); // seek to fourth double
d = raf.readDouble();
System.out.println("Fourth value is " + d);
System.out.println();

// Now, read every other value.
System.out.println("Here is every other value: ");
for(int i=0; i < data.length; i+=2)
{ raf.seek(8 * i); // seek to ith double
d = raf.readDouble();
System.out.print(d + " ");
}
147
System.out.println("\n");
}
catch(IOException exc)
{
System.out.println("Error seeking or reading.");
}

raf.close();
}
}
KNt quS thMc thi ch!ng trnh:

5 5. .5 5. .S SE E d dX Xn ng g l lu uS Sn ng g k k t tY Y
Chng ta 3 tm hi@u v s? dLng luQng byte 3@ xuRt/nh<p d;
li8u. Tuy c th@ nhng trong mDt sF trlng hap luQng byte
khng phSi l cch l t1ng 3@ quSn l xuRt nh<p d; li8u ki@u
character, v v<y java 3 3a ra ki@u luQng character phLc vL
cho vi8c xuRt nh<p d; li8u ki@u character trn luQng.
MKc trn cng l hai l7p trbu tang Reader v Writer. L7p
Reader dng cho vi8c nh<p d; li8u cBa luQng, l7p Writer dng
cho vi8c xuRt d; li8u cBa luQng. Nh;ng l7p dgn xuRt tb Reader
v Writer thao tc trn cc luQng k tM Unicode.
Nh;ng ph!ng thKc 3=nh ngh_a trong l7p trbu tang
Reader v Writer
Ph!ng thKc ngh_a
148
Reader
abstract void close( ) [ng luQng
void mark(int numChars) [nh dRu v= tr hi8n tPi trn luQng
boolean markSupported( ) Ki@m tra xem luQng c ht tra
thao tc 3nh dRu mark() khng?
int read( )

[\c mDt k tM
int read(char buffer[ ])

[\c buffer.length k tM cho vo
buffer
abstract int read(char
buffer[ ],
int offset,
int numChars)
[\c numChars k tM cho vo
vng 38m buffer tPi v= tr
buffer[offset]
boolean ready( )

Ki@m tra xem luQng c 3\c 3ac
khng?
void reset( )

Dli con trp nh<p 3Nn v= tr 3nh
dRu tr7c 3
long skip(long numChars) Bp qua numChars cBa luQng nh<p
Writer
abstract void close( ) [ng luQng xuRt. C lti nm ra
IOException
abstract void flush( ) D\n dxp luQng (buffer xuRt)
void write(int ch) Ghi mDt k tM
void write(byte buffer[ ]) Ghi mDt mSng cc k tM
abstract void write(char
buffer[ ],
int offset,
int numChars)
Ghi mDt ph4n cBa mSng k tM
void write(String str) Ghi mDt chuti
void write(String str, int
offset,
int numChars)
Ghi mDt ph4n cBa mDt chuti k tM
149
5 5. .5 5. .1 1. .N Nh hB Bp p C Co on ns so ol le e d d n ng g l lu uS Sn ng g k k t tY Y
Thlng th vi8c nh<p d; li8u tb Console dng luQng k tM
th thu<n lai h!n dng luQng byte. L7p tFt nhRt 3@ 3\c d; li8u
nh<p tb Console l l7p BufferedReader. Tuy nhin chng ta
khng th@ xy dMng mDt l7p BufferedReader trMc tiNp tb
System.in. Thay vo 3 chng ta phSi chuy@n n thnh mDt
luQng k tM. [@ lm 3i:u ny chng ta dng InputStreamReader
chuy@n bytes thnh k tM.
[@ c 3ac mDt 3Fi tang InputStreamReader gen v7i
System.in ta dng constructor cBa InputStreamReader.
InputStreamReader(InputStream inputStream)
TiNp theo dng 3Fi tang InputStreamReader 3 tPo ra 3@
tPo ra mDt BufferedReader dng constructor BufferedReader.
BufferedReader(Reader inputReader)
V dX: TPo mDt BufferedReader gen v7i Keyboard
B Bu uf ff fe er re ed dR Re ea ad de er r b br r = = n ne ew w B Bu uf ff fe er re ed dR Re ea ad de er r( (n ne ew w
InputStreamReader(System.in));
Sau khi thMc hi8n cu l8nh trn, br l mDt luQng k tM gen v7i
Console thng qua System.in.
V dX: Dng BufferedReader 3\c tbng k tM tb Console. Vi8c
3\c kNt thc khi gHp dRu chRm (dRu chRm 3@ kNt thc ch!ng
trnh).
import java.io.*;
class ReadChars
{
public static void main(String args[]) throws IOException
{
char c;
BufferedReader br = newBufferedReader(
150
new InputStreamReader(System.in));

System.out.println("Nhap chuoi ky tu,
gioi han dau cham.");

// read characters
do
{
c = (char) br.read();
System.out.println(c);
} while(c != '.');
}
}
KNt quS thMc thi ch!ng trnh:

V dX: Dng BufferedReader 3\c chuti k tM tb Console.
Ch!ng trnh kNt thc khi gHp chuti 3\c l chuti stop
import java.io.*;
class ReadLines
{
public static void main(String args[]) throws IOException
{
// create a BufferedReader using System.in
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String str;
System.out.println("Nhap chuoi.");
System.out.println("Nhap 'stop' ket thuc chuong trinh.");
151
do
{
str = br.readLine();
System.out.println(str);
} while(!str.equals("stop"));
}
}
KNt quS thMc thi ch!ng trnh:

5 5. .5 5. .2 2. .X Xu u\ \t t C Co on ns so ol le e d d n ng g l lu uS Sn ng g k k t tY Y
Trong ngn ng; java, bn cPnh vi8c dng System.out 3@
xuRt d; li8u ra Console (thlng dng 3@ debug ch!ng trnh),
chng ta c th@ dng luQng PrintWriter 3Fi v7i cc ch!ng
trnh chuyn nghi8p. PrintWriter l mDt trong nh;ng l7p
luQng k tM. Vi8c dng cc l7p luQng k tM 3@ xuRt d; li8u ra
Console thlng 3ac a chuDng h!n.
[@ xuRt d; li8u ra Console dng PrintWriter c4n thiNt phSi
chu 3=nh System.out cho luQng xuRt.
V dX: TPo 3Fi tang PrintWriter 3@ xuRt d; li8u ra Console
PrintWriter pw = new PrintWriter(System.out, true);
V dX: minh h\a dng PrintWriter 3@ xuRt d; li8u ra Console
import java.io.*;
public class PrintWriterDemo
{
public static void main(String args[])
{
PrintWriter pw = new PrintWriter(System.out, true);
int i = 10;
152
double d = 123.67;
double r = i+d

pw.println("Using a PrintWriter.");
pw.println(i);
pw.println(d);
pw.println(i + " + " + d + " = " + r);
}
}
KNt quS thMc thi ch!ng trnh:

5 5. .5 5. .3 3. .& &e ec c/ /g gh hi i F Fi il le e d d n ng g l lu uS Sn ng g k k t tY Y
Thng thlng 3@ 3\c/ghi file ngli ta thlng dng luQng
byte, nhng 3Fi v7i luQng k tM chng ta cmng c th@ thMc hi8n
3ac. -u 3i@m cBa vi8c dng luQng k tM l chng thao tc trMc
tiNp trn cc k tM Unicode. V v<y luQng k tM l ch\n lMa tFt
nhRt khi c4n lu nh;ng vjn bSn Unicode.
Hai l7p luQng thlng dng cho vi8c 3\c/ghi d; li8u k tM
xuFng file l FileReader v FileWriter.
V dX: [\c nh;ng dng vjn bSn nh<p tb bn phm v ghi chng
xuFng file tn l test.txt. Vi8c 3\c v ghi kNt thc khi ngli
dng nh<p vo chuti stop.
import java.io.*;
class KtoD
{
public static void main(String args[]) throws IOException
{
String str;
FileWriter fw;
153
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));

try
{
fw = new FileWriter("D:\\test.txt");
}
catch(IOException exc)
{
System.out.println("Khong the mo file.");
return ;
}

System.out.println("Nhap ('stop' de ket thuc chuong
trinh).");

do
{
System.out.print(": ");
str = br.readLine();
if(str.compareTo("stop") == 0) break;
str = str + "\r\n";
fw.write(str);
} while(str.compareTo("stop") != 0);

fw.close();
}
}
KNt quS thMc thi ch!ng trnh
D; li8u nh<p tb Console:
154

D; li8u ghi xuFng file:

V dX: 3\c v hi@n th= nDi dung cBa file test.txt ln mn hnh.
import java.io.*;
class DtoS
{
public static void main(String args[]) throws Exception
{
FileReader fr = new FileReader("D:\\test.txt");
BufferedReader br = new BufferedReader(fr);
String s;
while((s = br.readLine()) != null)
{
System.out.println(s);
}

fr.close();
}
}
KNt quS thMc thi ch!ng trnh
NDi dung cBa file test.txt:
155

KNt quS 3\c file v hi@n th= ra Console:


5 5. .6 6. .L L= =p p F Fi il le e
L7p File khng phLc vL cho vi8c nh<p/xuRt d; li8u trn
luQng. L7p File thlng 3ac dng 3@ biNt 3ac cc thng tin
chi tiNt v: t<p tin cmng nh th mLc (tn, ngy gil tPo, kch
th7c, )
java.lang.Object
+--java.io.File
Cc Constructor:
TPo 3Fi tang File tb 3lng dgn tuy8t 3Fi
public File(String pathname)
v dX: File f = new File(C:\\Java\\vd1.java);
TPo 3Fi tang File tb tn 3lng dgn v tn t<p tin tch bi8t
public File(String parent, String child)
v dX: File f = new File(C:\\Java, vd1.java);
TPo 3Fi tang File tb mDt 3Fi tang File khc
public File(File parent, String child)
v dX: File dir = new File (C:\\Java);
File f = new File(dir, vd1.java);

156
MDt sF ph!ng thKc thlng gHp cBa l7p File (chi tiNt v: cc
ph!ng thKc 3\c thm trong ti li8u J2SE API Specification)
public String getName() LRy tn cBa 3Fi tang File
public String getPath()

LRy 3lng dgn cBa t<p tin
public boolean isDirectory() Ki@m tra xem t<p tin c phSi
l th mLc khng?
public boolean isFile() Ki@m tra xem t<p tn c phSi l
mDt file khng?

public String[] list() LRy danh sch tn cc t<p tin
v th mLc con cBa 3Fi tang
File 3ang xt v trS v: trong
mDt mSng.

V dX:
import java.awt.*;
import java.io.*;
public class FileDemo
{
public static void main(String args[])
{
Frame fr = new Frame ("File Demo");
fr.setBounds(10, 10, 300, 200);
fr.setLayout(new BorderLayout());

Panel p = new Panel(new GridLayout(1,2));

List list_C = new List();
list_C.add("C:\\");
File driver_C = new File ("C:\\");
String[] dirs_C = driver_C.list();

157
for (int i=0;i<dirs_C.length;i++)
{ File f = new File ("C:\\" + dirs_C[i]);
if (f.isDirectory())
list_C.add("<DIR>" + dirs_C[i]);
else
list_C.add(" " + dirs_C[i]);
}

List list_D = new List();
list_D.add("D:\\");
File driver_D = new File ("D:\\");
String[] dirs_D = driver_D.list();
for (int i=0;i<dirs_D.length;i++)
{ File f = new File ("D:\\" + dirs_D[i]);
if (f.isDirectory())
list_D.add("<DIR>" + dirs_D[i]);
else
list_D.add(" " + dirs_D[i]);
}

p.add(list_C);
p.add(list_D);
fr.add(p, BorderLayout.CENTER);
fr.setVisible(true);
}
}
KNt quS thMc thi ch!ng trnh:

158
C Ch h) )* *n ng g 6 6: : L L6 6P P T TR R N NH H C C$ $ S Sn n D D3 3 L LI I- -U U

6 6. .1 1. .G GI I+ +I I T TH HI I- -U U
H H4 4u u h hN Nt t c c c c c ch h ! !n ng g t tr r n nh h m m y y t t n nh h h hi i8 8n n n n y y 3 3N Nu u t t n nh hi i: :u u l li i n n
q qu ua an n 3 3N Nn n v vi i8 8c c t tr ru uy y x xu uR Rt t t th h n ng g t ti in n t tr ro on ng g c c c c c c! ! s s1 1 d d; ; l li i8 8u u. . C Ch h n nh h
v v t th hN N n n n n c c c c t th ha ao o t t c c h ht t t tr ra a l l< <p p t tr r n nh h c c! ! s s1 1 d d; ; l li i8 8u u l l c ch hK Kc c
n nj jn ng g k kh h n ng g t th h@ @ t th hi iN Nu u c cB Ba a c c c c n ng g n n n ng g; ; l l< <p p t tr r n nh h h hi i8 8n n 3 3P Pi i, , t tr ro on ng g
3 3 c c J Ja av va a. . J JD DB BC C A AP PI I l l t th h v vi i8 8n n c ch hK Ka a c c c c l l7 7p p v v g gi ia ao o d di i8 8n n h ht t
t tr ra a l l< <p p t tr r n nh h v vi i n n J Ja av va a k kN Nt t n nF Fi i v v t tr ru uy y c c< <p p 3 3N Nn n c c c c h h8 8 c c! ! s s1 1 d d; ;
l li i8 8u u. .
P Ph hi i n n b bS Sn n J JD DB BC C A AP PI I m m7 7i i n nh hR Rt t h hi i8 8n n n na ay y l l 3 3. .0 0, , l l m mD Dt t t th h n nh h
p ph h4 4n n t tr ro on ng g J J2 2S SE E, , n nO Om m t tr ro on ng g 2 2 g g i i t th h v vi i8 8n n: :
j ja av va a. .s sq ql l: : c ch hK Ka a c c c c l l7 7p p v v g gi ia ao o d di i n n c c! ! s s1 1 c cB Ba a
J JD DB BC C A AP PI I. .
j ja av va ax x. .s sq ql l: : c ch hK Ka a c c c c l l7 7p p v v g gi ia ao o d di i8 8n n m m1 1 r rD Dn ng g. .
J JD DB BC C A AP PI I c cu un ng g c cR Rp p c c! ! c ch hN N c ch ho o p ph h p p m mD Dt t c ch h ! !n ng g t tr r n nh h v vi iN Nt t
b bO On ng g J Ja av va a c c k kh hS S n nj jn ng g 3 3D Dc c l l< <p p v v7 7i i c c c c h h8 8 c c! ! s s1 1 d d; ; l li i8 8u u, , c c k kh hS S
n nj jn ng g t tr ru uy y c c< <p p 3 3N Nn n c c c c h h8 8 c c! ! s s1 1 d d; ; l li i8 8u u k kh h c c n nh ha au u m m k kh h n ng g c c4 4n n
v vi iN Nt t l lP Pi i c ch h ! !n ng g t tr r n nh h. . J JD DB BC C 3 3! !n n g gi iS Sn n h h a a v vi i8 8c c t tP Po o v v t th hi i h h n nh h
c c c c c c u u t tr ru uy y v vR Rn n S SQ QL L t tr ro on ng g c ch h ! !n ng g t tr r n nh h. .

6 6. .2 2. .K KI I^ ^N N T TR R C C J JD DB BC C

K Ki iN Nn n t tr r c c c cB Ba a c cB Ba a J JD DB BC C t t ! !n ng g t tM M n nh h k ki iN Nn n t tr r c c O OD DB BC C d do o
M Mi ic cr ro os so of ft t x x y y d dM Mn ng g. . T Th he eo o k ki iN Nn n t tr r c c n n y y c c c c t th ha ao o t t c c l li i n n q qu ua an n
3 3N Nn n c c! ! s s1 1 d d; ; l li i8 8u u t tr ro on ng g c ch h ! !n ng g t tr r n nh h 3 3 a ac c t th hM Mc c h hi i8 8n n t th h n ng g q qu ua a
c c c c J JD DB BC C A AP PI I. . S Sa au u 3 3 c c c c J JD DB BC C A AP PI I s so o t tr ru uy y: :n n c c c c y y u u c c4 4u u c cB Ba a
c ch h ! !n ng g t tr r n nh h 3 3N Nn n b bD D q qu uS Sn n l l t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C, , l l b bD D p ph h< <n n
c c n nh hi i8 8m m v vL L l lM Ma a c ch h\ \n n t tr r n nh h 3 3i i: :u u k kh hi i@ @n n t th h c ch h h ha ap p 3 3@ @ c c t th h@ @ l l m m
v vi i8 8c c v v7 7i i c c! ! s s1 1 d d; ; l li i8 8u u c cL L t th h@ @ m m c ch h ! !n ng g t tr r n nh h m mu uF Fn n k kN Nt t n nF Fi i. .
159
N Nh h v v< <y y k ki iN Nn n t tr r c c c cB Ba a J JD DB BC C g gQ Qm m 2 2 t t4 4n ng g: : t t4 4n ng g 3 34 4u u t ti i n n l l c c c c
J JD DB BC C A AP PI I, , c c n nh hi i8 8m m v vL L c ch hu uy y@ @n n c c c c c c u u l l8 8n nh h S SQ QL L c ch ho o b bD D q qu uS Sn n
l l t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C; ; t t4 4n ng g t th hK K 2 2 l l c c c c J JD DB BC C D Dr ri iv ve er r A AP PI I, ,
t th hM Mc c h hi i8 8n n n nh hi i8 8m m v vL L l li i8 8n n h h8 8 v v7 7 t tr r n nh h 3 3i i: :u u k kh hi i@ @n n c cB Ba a h h8 8 q qu uS Sn n t tr ru u
c c! ! s s1 1 d d; ; l li i8 8u u c cL L t th h@ @. .

160
H H n nh h b b n n d d 7 7i i m mi in nh h h h\ \a a c c c c l l7 7p p v v g gi ia ao o d di i8 8n n c c! ! b bS Sn n t tr ro on ng g
J JD DB BC C A AP PI I. .

6 6. .3 3. .C C c c k kh h i i n ni i> >m m c c* * b bQ Qn n
6 6. .3 3. .1 1. .J JD DB BC C D Dr ri iv ve er r
[ [@ @ c c t th h@ @ t ti iN Nn n h h n nh h t tr ru uy y c c< <p p 3 3N Nn n c c c c h h8 8 q qu uS Sn n t tr r= = c c! ! s s1 1 d d; ; l li i8 8u u s s? ?
d dL Ln ng g k k{ { t th hu u< <t t J JD DB BC C, , c ch h n ng g t ta a c c4 4n n p ph hS Si i c c t tr r n nh h 3 3i i: :u u k kh hi i@ @n n
J JD DB BC C c cB Ba a h h8 8 q qu uS Sn n t tr r= = C CS SD DL L m m c ch h n ng g t ta a 3 3a an ng g s s? ? d dL Ln ng g. . T Tr r n nh h
3 3i i: :u u k kh hi i@ @n n J JD DB BC C l l 3 3o oP Pn n c ch h ! !n ng g t tr r n nh h, , d do o c ch h n nh h n nh h x x y y d dM Mn ng g
h h8 8 q qu uS Sn n t tr r= = C CS SD DL L h ho oH Hc c d do o n nh h c cu un ng g K Kn ng g t th hK K b ba a c cu un ng g c cR Rp p, , c c
k kh hS S n nj jn ng g y y u u c c4 4u u h h8 8 q qu uS Sn n t tr r= = C CS SD DL L c cL L t th h@ @ t th hM Mc c h hi i8 8n n c c c c c c u u
l l8 8n nh h S SQ QL L. .
D Da an nh h s s c ch h c c c c t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C c ch ho o c c c c h h8 8 q qu uS Sn n t tr r= = C CS SD DL L
k kh h c c n nh ha au u 3 3 a ac c S Su un n c cu un ng g c cR Rp p v v c c< <p p n nh h< <t t l li i n n t tL Lc c t tP Pi i 3 3= =a a c ch hu u: :
h ht tt tp p: :/ // /i in nd du us st tr ry y. .j ja av va a. .s su un n. .c co om m/ /p pr ro od du uc ct ts s/ /j jd db bc c/ /d dr ri iv ve er rs s. .
C C c c t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C 3 3 a ac c p ph h n n l l m m 0 04 4 l lo oP Pi i k kh h c c n nh ha au u. .
L Lo oP Pi i 1 1: : c c t t n n g g\ \i i l l B Br ri id dg ge e D Dr ri iv ve er r. . T Tr r n nh h 3 3i i: :u u
k kh hi i@ @n n l lo oP Pi i n n y y k kN Nt t n nF Fi i v v7 7i i c c c c h h8 8 C CS SD DL L t th h n ng g q qu ua a
c c4 4u u n nF Fi i O OD DB BC C. . [ [ y y c ch h n nh h l l c ch h n nh h 3 3i i: :u u k kh hi i@ @n n
161
3 3 a ac c s s? ? d dL Ln ng g p ph hJ J b bi iN Nn n n nh hR Rt t t tr ro on ng g n nh h; ;n ng g n ng g y y 3 34 4u u
J Ja av va a x xu uR Rt t h hi i8 8n n. . T Tu uy y n nh hi i n n, , n ng g y y n na ay y t tr r n nh h 3 3i i: :u u
k kh hi i@ @n n l lo oP Pi i n n y y k kh h n ng g c c n n p ph hJ J b bi iN Nn n d do o c c n nh hi i: :u u
h hP Pn n c ch hN N. . T Tr r n nh h 3 3i i: :u u k kh hi i@ @n n l lo oP Pi i n n y y l lu u n n 3 3 a ac c c cu un ng g
c cR Rp p k k m m t tr ro on ng g b bD D J J2 2S SE E v v7 7i i t t n n: :
s su un n. .j jd db bc c. .o od db bc c. .J Jd db bc cO Od db bc cD Dr ri iv ve er r. .

L Lo oP Pi i 2 2: : c c t t n n g g\ \i i l l N Na at ti iv ve e A AP PI I D Dr ri iv ve er r. . T Tr r n nh h
3 3i i: :u u k kh hi i@ @n n l lo oP Pi i n n y y s so o c ch hu uy y@ @n n c c c c l ll li i g g\ \i i c cB Ba a
J JD DB BC C A AP PI I s sa an ng g t th h v vi i8 8n n h h m m ( (A AP PI I) ) t t ! !n ng g K Kn ng g
v v7 7i i t tb bn ng g h h8 8 C CS SD DL L c cL L t th h@ @. . T Tr r n nh h 3 3i i: :u u k kh hi i8 8n n l lo oP Pi i
n n y y t th h l ln ng g c ch hu u d do o n nh h x x y y d dM Mn ng g h h8 8 C CS SD DL L c cu un ng g
c cR Rp p. . [ [@ @ c c t th h: : t th hi i h h n nh h c ch h ! !n ng g t tr r n nh h m m l l8 8n nh h 3 3@ @
l l m m v vi i8 8c c v v7 7i i h h8 8 C CS SD DL L c cL L t th h@ @ c c4 4n n p ph hS Si i 3 3 a ac c c cu un ng g
c cR Rp p 3 3i i k k m m v v7 7i i c ch h ! !n ng g t tr r n nh h. .

L Lo oP Pi i 3 3: : c c t t n n g g\ \i i l l J J D DB BC C- -N Ne et t D Dr ri iv ve er r. . T Tr r n nh h
3 3i i: :u u k kh hi i@ @n n l lo oP Pi i n n y y s so o c ch hu uy y@ @n n c c c c l ll li i g g\ \i i J JD DB BC C
A AP PI I s sa an ng g m mD Dt t d dP Pn ng g c ch hu us sn n 3 3D Dc c l l< <p p v v7 7i i c c c c h h8 8
C CS SD DL L, , v v s sa au u 3 3 a ac c c ch hu uy y@ @n n s sa an ng g l ll li i g g\ \i i c cB Ba a h h8 8
C CS SD DL L c cL L t th h@ @ b bw wi i 1 1 c ch h ! !n ng g t tr r n nh h t tr ru un ng g g gi ia an n. . T Tr r n nh h
3 3i i: :u u k kh hi i@ @n n c cB Ba a c c c c n nh h c cu un ng g K Kn ng g t th hK K 3 3 t th h l ln ng g
t th hu uD Dc c l lo oP Pi i n n y y. . L La ai i t th hN N c cB Ba a t tr r n nh h 3 3i i: :u u k kh hi i@ @n n l lo oP Pi i
162
n n y y l l k kh h n ng g c c4 4n n c cu un ng g c cR Rp p m m l l8 8n nh h k k m m t th he eo o v v
c c t th h@ @ s s? ? d dL Ln ng g c c n ng g m mD Dt t t tr r n nh h 3 3i i: :u u k kh hi i@ @n n 3 3@ @ t tr ru uy y
c c< <p p 3 3N Nn n n nh hi i: :u u h h8 8 C CS SD DL L k kh h c c n nh ha au u. .

L Lo oP Pi i 4 4: : c c t t n n g g\ \i i l l N Na at ti iv ve e P Pr ro ot to oc co ol l D Dr ri iv ve er r. .
T Tr r n nh h 3 3i i: :u u k kh hi i@ @n n l lo oP Pi i n n y y c ch hu uy y@ @n n c c c c l ll li i g g\ \i i
J JD DB BC C A AP PI I s sa an ng g m m l l8 8n nh h c cB Ba a h h8 8 C CS SD DL L c cL L t th h@ @. . [ [ y y
l l c c c c t tr r n nh h 3 3i i: :u u k kh hi i@ @n n t th h4 4n n J Ja av va a, , c c n ng gh h_ _a a l l
k kh h n ng g c c4 4n n p ph hS Si i c c m m l l8 8n nh h c cB Ba a h h8 8 C CS SD DL L c cL L t th h@ @
k kh hi i t th hi i h h n nh h c ch h ! !n ng g t tr r n nh h. .

6 6. .3 3. .2 2. .J JD DB BC C U UR RL L
[ [@ @ c c t th h@ @ k kN Nt t n nF Fi i v v7 7i i C CS SD DL L, , c ch h n ng g t ta a c c4 4n n x x c c 3 3= =n nh h n ng gu uQ Qn n d d; ;
l li i8 8u u c c n ng g v v7 7i i c c c c t th h n ng g s sF F l li i n n q qu ua an n d d 7 7i i d dP Pn ng g 1 1 U UR RL L n nh h s sa au u: :
j jd db bc c: :< <s su ub bp pr ro ot to oc co ol l> >: :< <d ds sn n> >: :< <o ot th he er rs s> >
T Tr ro on ng g 3 3 : :
< <s su ub bp pr ro ot to oc co ol l> >: : 3 3 a ac c d d n ng g 3 3@ @ x x c c 3 3= =n nh h t tr r n nh h 3 3i i: :u u
k kh hi i@ @n n 3 3@ @ k kN Nt t n nF Fi i v v7 7i i C CS SD DL L. .
< <d ds sn n> >: : 3 3= =a a c ch hu u C CS SD DL L. . C C p ph h p p c cB Ba a < <d ds sn n> >p ph hL L
t th hu uD Dc c v v o o t tb bn ng g t tr r n nh h 3 3i i: :u u k kh hi i@ @n n c cL L t th h@ @. .
< <o ot th he er r> >: : c c c c t th ha am m s sF F k kh h c c
V V d dL L: :
163
j jd db bc c: :o od db bc c: :d db bn na am me e l l U UR RL L 3 3@ @ k kN Nt t n nF Fi i v v7 7i i C CS SD DL L
t t n n d db bn na am me e s s? ? d dL Ln ng g c c4 4u u n nF Fi i O OD DB BC C. .
j jd db bc c: :m mi ic cr ro os so of ft t: :s sq ql ls se er rv ve er r: :/ // /h ho os st tn na am me e: :1 14 43 33 3 l l U UR RL L
3 3@ @ k kN Nt t n nF Fi i v v7 7i i C CS SD DL L M Mi ic cr ro os so of ft t S SQ QL L S Se er rv ve er r. .
T Tr ro on ng g 3 3 h ho os st tn na am me e l l t t n n m m y y c c i i S SQ QL L S Se er rv ve er r. .
6 6. .4 4. .K K^ ^T T N Ng gI I C CS SD DL L V V+ +I I J JD DB BC C
V Vi i8 8c c k kN Nt t n nF Fi i v v7 7i i C CS SD DL L b bO On ng g J JD DB BC C 3 3 a ac c t th hM Mc c h hi i8 8n n q qu ua a h ha ai i
b b 7 7c c: : 3 3j jn ng g k k t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C; ; t ti iN Np p t th he eo o t th hM Mc c t th hi i
p ph h ! !n ng g t th hK Kc c g ge et tC Co on nn ne ec ct ti io on n( () ) c cB Ba a l l7 7p p D Dr ri iv ve er rM Ma an na ag ge er r. .
6 6. .4 4. .1 1. .& &o on ng g k k t tr r n nh h 9 9i i@ @u u k kh hi iF Fn n
T Tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C 3 3 a ac c n nP Pp p k kh hi i m m b by yt te ec co od de e c cB Ba a n n 3 3 a ac c
n nP Pp p v v o o J JV VM M. . M MD Dt t c c c ch h 3 3! !n n g gi iS Sn n 3 3@ @ t th hM Mc c h hi i8 8n n c c n ng g v vi i8 8c c n n y y l l
t th hM Mc c t th hi i p ph h ! !n ng g t th hK Kc c C Cl la as ss s. .f fo or rN Na am me e( ( < <J JD DB BC C D Dr ri iv ve er r> > ) ). .
V V d dL L: : 3 3@ @ n nP Pp p t tr r n nh h 3 3i i: :u u k kh hi i@ @n n s s? ? d dL Ln ng g c c4 4u u n nF Fi i O OD DB BC C d do o S Su un n
c cu un ng g c cR Rp p, , c ch h n ng g t ta a s s? ? d dL Ln ng g c c u u l l8 8n nh h s sa au u
C Cl la as ss s. .f fo or rN Na am me e( ( s su un n. .j jd db bc c. .o od db bc c. .J Jd db bc cO Od db bc cD Dr ri iv ve er r ) ). .
6 6. .4 4. .2 2. .T Th hY Yc c h hi i> >n n k kZ Zt t n nL Li i
S Sa au u k kh hi i 3 3 n nP Pp p t tr r n nh h 3 3i i: :u u k kh hi i@ @n n J JD DB BC C, , v vi i8 8c c k kN Nt t n nF Fi i v v7 7i i C CS SD DL L
3 3 a ac c t th hM Mc c h hi i8 8n n v v7 7i i m mD Dt t t tr ro on ng g c c c c p ph h ! !n ng g t th hK Kc c s sa au u t tr ro on ng g l l7 7p p
D Dr ri iv ve er rM Ma an na ag ge er r: :
p pu ub bl li ic c s st ta at ti ic c C Co on nn ne ec ct ti io on n g ge et tC Co on nn ne ec ct ti io on n( (S St tr ri in ng g u ur rl l) )
t th hr ro ow ws s S SQ QL LE Ex xc ce ep pt ti io on n: : t th hM Mc c h hi i8 8n n k kN Nt t n nF Fi i v v7 7i i
C CS SD DL L 3 3 a ac c y y u u c c4 4u u. . B BD D q qu uS Sn n l l t tr r n nh h 3 3i i: :u u k kh hi i@ @n n
s so o t tM M 3 3D Dn ng g l lM Ma a c ch h\ \n n t tr r n nh h 3 3i i: :u u k kh hi i@ @n n p ph h h ha ap p t tr ro on ng g
s sF F c c c c t tr r n nh h 3 3i i: :u u k kh hi i@ @n n 3 3 3 3 a ac c n nP Pp p. .
p pu ub bl li ic c s st ta at ti ic c C Co on nn ne ec ct ti io on n g ge et tC Co on nn ne ec ct ti io on n( (S St tr ri in ng g u ur rl l, ,
S St tr ri in ng g u us se er r, , S St tr ri in ng g p pa as ss s) ) t th hr ro ow ws s S SQ QL LE Ex xc ce ep pt ti io on n: :
t ti iN Nn n h h n nh h k kN Nt t n nF Fi i t t7 7i i C CS SD DL L v v7 7i i t t i i k kh ho oS Sn n u us se er r v v
m m< <t t m m p pa as ss s. .
p pu ub bl li ic c s st ta at ti ic c C Co on nn ne ec ct ti io on n g ge et tC Co on nn ne ec ct ti io on n( (S St tr ri in ng g u ur rl l, ,
P Pr ro op pe er rt ti ie es s i in nf fo o) ) t th hr ro ow ws s S SQ QL LE Ex xc ce ep pt ti io on n: : t t ! !n ng g t tM M
h ha ai i p ph h ! !n ng g t th hK Kc c t tr r n n n ng go o i i r ra a c cu un ng g c cR Rp p t th h m m c c c c
164
t th h n ng g t ti in n q qu ui i 3 3= =n nh h t th hu uD Dc c t t n nh h k kN Nt t n nF Fi i t th h n ng g q qu ua a 3 3F Fi i
t t a an ng g c cB Ba a l l7 7p p P Pr ro op pe er rt ti ie es s. .
K KN Nt t q qu uS S t tr rS S v v: : c cB Ba a c c c c p ph h ! !n ng g t th hK Kc c t tr r n n l l m mD Dt t 3 3F Fi i t t a an ng g c cB Ba a
l l7 7p p j ja av va a. .s sq ql l. .C Co on nn ne ec ct ti io on n 3 3 a ac c d d n ng g 3 3@ @ 3 3P Pi i d di i8 8n n c ch ho o k kN Nt t n nF Fi i 3 3N Nn n
C CS SD DL L. .
6 6. .4 4. .3 3. .V V d dX X
T Tr ro on ng g p ph h4 4n n v v d dL L n n y y c ch h n ng g t ta a s so o t t m m h hi iN Nu u c c c c c c c ch h k kh h c c n nh ha au u
3 3@ @ k kN Nt t n nF Fi i v v7 7i i t t< <p p t ti in n C CS SD Dl l A Ac cc ce es ss s m mo ov vi ie es s. .m md db b c c m mD Dt t b bS Sn ng g t t n n
M Mo ov vi ie es s. . B BS Sn ng g n n y y g gQ Qm m c c c c c cD Dt t n nu um mb be er r, , t ti it tl le e, , c ca at te eg go or ry y v v f fo om ma at t. .

[ [@ @ c c t th h@ @ t ti iN Nn n h h n nh h k kN Nt t n nF Fi i v v7 7i i M Mi ic cr ro os so of ft t A Ac cc ce es ss s t th h n ng g q qu ua a c c4 4u u
n nF Fi i O OD DB BC C s sa au u k kh hi i 3 3 t tP Po o t t< <p p t ti in n C CS SD DL L m mo ov vi ie es s. .m md db b, , c ch h n ng g t ta a
c c4 4n n p ph hS Si i t tP Po o D Da at ta a S So ou ur rc ce e N Na am me e c ch ho o C CS SD DL L b bO On ng g c c c ch h v v o o
C Co on nt tr ro ol l P Pa an ne el l v v c ch h\ \n n O OD DB BC C D Da at ta a S So ou ur rc ce e. .
165

T Ti iN Np p t th he eo o n nh hR Rn n v v o o n n t t A Ad dd d, , b bP Pn n s so o t th hR Ry y h hi i@ @n n t th h= = d da an nh h s s c ch h c c c c
t tr r n nh h 3 3i i: :u u k kh hi i@ @n n C CS SD DL L h hi i8 8n n c c . .

166
B BP Pn n c ch h\ \n n M Mi ic cr ro os so of ft t A Ac cc ce es ss s D Dr ri iv ve er r( (* *. .m md db b) ) v v n nh hR Rn n F Fi in ni is sh h. . C C? ?a a
s sJ J c cR Ru u h h n nh h c ch ho o t t< <p p t ti in n A Ac cc ce es ss s s so o x xu uR Rt t h hi i8 8n n v v n nh h< <p p m mo ov vi ie es sD DS SN N
v v o o D Da at ta a S So ou ur rc ce e N Na am me e

B BP Pn n n nh hR Rn n n n t t S Se el le ec ct t v v c ch h\ \n n t t< <p p t ti in n C CS SD DL L c c4 4n n t tP Po o d da at ta a s so ou ur rc ce e
n na am me e. . S Sa au u 3 3 n nh hR Rn n O OK K 3 3@ @ k kN Nt t t th h c c. .


167
S Sa au u k kh hi i 3 3 h ho o n n t tR Rt t c c n ng g v vi i8 8c c t tP Po o D DS SN N c ch ho o t t< <p p t ti in n m mo ov vi ie es s. .m md db b, ,
c ch h n ng g t ta a c c t th h@ @ s s? ? d dL Ln ng g 3 3o oP Pn n m m s sa au u 3 3@ @ t ti iN Nn n h h n nh h k kN Nt t n nF Fi i v v7 7i i
t t< <p p t ti in n m mo ov vi ie es s. .m md db b. .
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class TestConnection{
public static void main(String args[]) {
Connection connection = null;
if( args.length != 1) {
System.out.println("Syntax: java TestConnection " +
"DSN");
return;
}
try { // load driver
Class.forName("sun.jdbc.odbc.J dbcOdbcDriver");
System.out.println("Loading the driver...");
}
catch( Exception e ) { //problem load driver,class not
exist
e.printStackTrace( );
return;
}
try {
String dbURL = "jdbc:odbc:" + args[0];
System.out.println("Establishing connection...");
connection =
DriverManager.getConnection(dbURL,"","");
System.out.println("Connect to +
connection.getCatalog() + successfully!");
// Do whatever queries or updates you want here!!!
}
catch( SQLException e ) {
e.printStackTrace( );
}
168
finally {
if( connection != null ) {
try { connection.close( ); }
catch( SQLException e ) {
e.printStackTrace( );
}
}
}
}
}
S Sa au u k kh hi i b bi i n n d d= =c ch h 3 3o oP Pn n c ch h ! !n ng g t tr r n nh h t tr r n n, , c ch h n ng g t ta a c c t th h@ @ t th hM Mc c
h hi i8 8n n k kN Nt t n nF Fi i v v7 7i i C CS SD DL L b bO On ng g c c c ch h t th hM Mc c t th hi i c c u u l l8 8n nh h: :
j ja av va a T Te es st tC Co on nn ne ec ct ti io on n m mo ov vi ie es sD DS SN N

6 6. .5 5. .K KI I` `U U D D3 3 L LI I- -U U S SQ QL L V V K KI I` `U U D D3 3 L LI I- -U U J JA AV VA A
T Tr ro on ng g q qu u t tr r n nh h t th ha ao o t t c c v v7 7i i C CS SD DL L, , c ch h n ng g t ta a s so o g gH Hp p p ph hS Si i v vR Rn n 3 3: :
c ch hu uy y@ @n n 3 3J Ji i g gi i; ;a a k ki i@ @u u d d; ; l li i8 8u u t tr ro on ng g C CS SD DL L s sa an ng g k ki i@ @u u d d; ; l li i8 8u u J Ja av va a
h ht t t tr ra a v v n ng g a ac c l la ai i. . V Vi i8 8c c c ch hu uy y@ @n n 3 3J Ji i n n y y 3 3 a ac c t th hM Mc c h hi i8 8n n n nh h
t tr ro on ng g 2 2 b bS Sn ng g s sa au u. .

SQL Type Java Type
BIT Boolean
TINYINT Byte
SMALLINT Short
INTEGER Int
BIGINT Long
REAL Float
FLOAT Double
DOUBLE Double
169
DECIMAL java.math.BigDecimal
NUMERIC java.math.BigDecimal
CHAR java.lang.String
VARCHAR java.lang.String
LONGVARCHAR java.lang.String
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
BINARY byte[ ]
VARBINARY byte[ ]
LONGVARBINARY byte[ ]
BLOB java.sql.Blob
CLOB Java.sql.Clob
ARRAY Java.sql.Array
REF Java.sql.Ref
STRUCT Java.sql.Struct

B&ng chuy0n 34i t# ki0u d5 li7u SQL sang J ava

Java Type SQL Type
boolean BIT
byte TINYINT
short SMALLINT
int INTEGER
long BIGINT
float REAL
double DOUBLE
java.math.BigDecimal NUMERIC
java.lang.String VARCHAR or
LONGVARCHAR
byte[ ] VARBINARY or
LONGVARBINARY
java.sql.Date DATE
java.sql.Time TIME
java.sql.Timestamp TIMESTAMP
java.sql.Blob BLOB
java.sql.Clob CLOB
java.sql.Array ARRAY
java.sql.Ref REF
170
java.sql.Struct STRUCT

B&ng chuy0n 34i t# ki0u d5 li7u J ava sang SQL
6 6. .6 6. .C C C C T TH HA AO O T T C C C C$ $ B Bp pN N T TR R N N C CS SD DL L
C C c c t th ha ao o t t c c t tr ru uy y v vR Rn n C CS SD DL L c ch hu u c c t th h@ @ 3 3 a ac c t th hM Mc c h hi i8 8n n s sa au u k kh hi i
3 3 c c 3 3F Fi i t t a an ng g C Co on nn ne ec ct ti io on n, , 3 3 a ac c t tP Po o r ra a t tb b q qu u t tr r n nh h k kN Nt t n nF Fi i v v o o
C CS SD DL L. . C Ch h n ng g t ta a s s? ? d dL Ln ng g 3 3F Fi i t t a an ng g c cB Ba a l l7 7p p C Co on nn ne ec ct ti io on n 3 3@ @ t tP Po o
r ra a c c c c t th h@ @ h hi i8 8n n c cB Ba a l l7 7p p j ja av va a. .s sq ql l. .S St ta at te em me en nt t. . S Sa au u k kh hi i t tP Po o r ra a c c c c 3 3F Fi i
t t a an ng g c cB Ba a l l7 7p p S St ta at te em me en nt t c ch h n ng g t ta a c c t th h@ @ t th hM Mc c h hi i8 8n n c c c c t th ha ao o t t c c
t tr ro on ng g c c c c 3 3F Fi i t t a an ng g s st ta at te em me en nt t t tr r n n c co on nn ne ec ct ti io on n t t ! !n ng g K Kn ng g. .
N ND Di i d du un ng g t tr ro on ng g m mD Dt t s st ta at te em me en nt t c ch h n nh h l l c c c c c c u u S SQ QL L. . C C u u l l8 8n nh h
S SQ QL L t tr ro on ng g c c c c s st ta at te em me en nt t c ch hu u 3 3 a ac c t th hM Mc c h hi i8 8n n k kh hi i c ch h n ng g t ta a g g? ?i i
c ch h n ng g 3 3N Nn n C CS SD DL L. . N NN Nu u c c u u l l8 8n n S SQ QL L l l m mD Dt t c c u u t tr ru uy y v vR Rn n n nD Di i
d du un ng g t th h k kN Nt t q qu uS S t tr rS S v v: : s so o l l m mD Dt t t th h@ @ h hi i8 8n n c cB Ba a l l7 7p p
j ja av va a. .s sq ql l. .R Re es su ul lt tS Se et t, , n ng g a ac c l lP Pi i ( (c c c c c c u u l l8 8n nh h t th ha ay y 3 3J Ji i n nD Di i d du un ng g
C CS SD DL L) ) s so o t tr rS S v v: : k kN Nt t q qu uS S l l m mD D s sF F n ng gu uy y n n. . C C c c 3 3F Fi i t t a an ng g c cB Ba a
l l7 7p p R Re es su ul lt tS Se et t c ch ho o p ph h p p c ch h n ng g t ta a t tr ru uy y c c< <p p 3 3N Nn n k kN Nt t q qu uS S t tr rS S v v: : c cB Ba a
c c c c c c u u t tr ru uy y v vR Rn n. .
6 6. .6 6. .1 1. .C C c c l l= =p p c c* * b bQ Qn n
java.sql.Statement
Statement l mDt trong 3 l7p JDBC c! bSn dng 3@ th@
hi8n mDt cu l8nh SQL. M\i thao tc trn CSDL 3ac
thMc hi8n thng qua 3 ph!ng thKc cBa l7p Statement.
Ph!ng thKc executeQuery() nh<n vo 1 tham sF l
chuti nDi dung cu l8n SQL v trS v: 1 3Fi tang ki@u
ResultSet. Ph!ng thKc ny 3ac s? dLng trong cc
trlng hap cu l8nh SQL c trS v: cc kNt quS trong
CSDL.
Ph!ng thKc executeUpdate() cmng nh<n vo 1 tham sF
l chuti nDi dung cu l8nh SQL. Tuy nhi8n ph!ng thKc
ny chu s? dLng 3ac 3Fi v7i cc cy l8nh c<p nh<t nDi
dung CSDL. KNt quS trS v: l sF dng b= tc 3Dng bwi
cu l8nh SQL.
171
Ph!ng thKc execute() l trlng hap tJng qut cBa 2
ph!ng thKc trn. Ph!ng thKc nh<n vo chuti nDi dung
cu l8nh SQL. Cu l8nh SQL c th@ l cu l8nh truy vRn
hoHc c<p nh<t. NNu kNt quS cBa cu l8nh l cc dng
trong CSDL th ph!ng thKc trS v: gi tr= true, ngac lPi
trS v: gi tr= false. Trong trlng hap gi tr= true, sau 3
chng ta c th@ dng ph!ng thKc getResultSet() 3@ lRy
cc dng kNt quS trS v:.
java.sql.ResultSet
[Fi tang resultset l cc dng d; li8u trS v: cBa cu
l8nh truy vRn CSDL. L7p ny cung cRp cc ph!ng thKc
3@ rt trch cc cDt trong tbng dng kNt quS trS v:. TRt
cS cc ph!ng thKc ny 3:u c dPng:
type getType(int | String)
Trong 3 tham sF c th@ l sF thK tM cBa cDt hoHc tn cDt
c4n lRy nDi dung.
TPi 1 thli 3i@m chng ta chu c th@ thao tc trn 1 dng
cBa resultset. [@ thao tc trn dng tiNp theo chng ta s?
dLng ph!ng thKc next(). Ph!ng thKc trS v: gi tr= true
trong trlng hap c dng tiNp theo, ngac lPi trS v: gi
tr= false.
6 6. .6 6. .2 2. .V V d dX X t tr ru uy y v v\ \n n C CS SD DL L

public class Movie{
private String movieTitle, category, mediaFormat;
private int number;

public Movie(int n, String title, String cat, String format){
number = n;
movieTitle = title;
category = cat;
mediaFormat = format;
}

172
public int getNumber(){return number;}

public String getMovieTitle(){return movieTitle;}

public String getCategory(){return category;}

public void setCategory(String c){category = c;}

public String getFormat(){return mediaFormat;}

public void setFormat(String f){mediaFormat = f;}

public String toString(){
return number + ": " + movieTitle + " - " + category + "
" + mediaFormat;
}
}


import java.sql.*;

public class MovieDatabase{
private Connection connection;
private PreparedStatement findByNumber, updateCategory;
private CallableStatement findByCategory;

public MovieDatabase(Connection connection) throws
SQLException{
this.connection = connection;
}

public void showAllMovies(){
try{
Statement selectAll = connection.createStatement();
String sql = "SELECT * FROM Movies";
173
ResultSet results = selectAll.executeQuery(sql);
while(results.next()){
int number = results.getInt(1);
String title = results.getString("title");
String category = results.getString(3);
String format = results.getString(4);

Movie movie = new Movie(number, title, category,
format);
System.out.println(movie.toString());
}
results.close();
selectAll.close();
}
catch(SQLException e){
e.printStackTrace();
}
}
}

import java.sql.*;

public class ShowMovies{
public static void main(String [] args){
String url = "jdbc:odbc:" + args[0];
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection connection =
DriverManager.getConnection(url);
MovieDatabase db = new
MovieDatabase(connection);
db.showAllMovies();
connection.close();
}
catch(Exception e){
174
e.printStackTrace();
}
}
}
6 6. .6 6. .3 3. .V V d dX X c cB Bp p n nh hB Bt t C CS SD DL L
P Ph h ! !n ng g t th hK Kc c a ad dd dM Mo ov vi ie e( () ) b b n n d d 7 7i i 3 3 a ac c t th h m m v v o o l l7 7p p
M Mo ov vi ie eD Da at ta ab ba as se e 3 3 3 3= =n nh h n ng gh h_ _a a 1 1 v v d dL L t tr r n n. .
public class MovieDatabase{

public void addMovie(Movie movie){
System.out.println(Adding movie: + movie.toString());
try{
Statement addMovie = connection.createStatement();
String sql = INSERT INTO Movies VALUES(
+ movie.getNumber() + ,
+ + movie.getMovieTitle() + ,
+ + movie.getCategory() + ,
+ + movie.getFormat() + );
System.out.println(Executing statement: + sql);
addMovie.executeUpdate(sql);
addMovie.close();
System.out.println(Movie added successfully!);
}
catch(SQLException e){
e.printStackTrace();
}
}
}

import java.sql.*;

public class AddMovies{
public static void main(String [] args){
String url = jdbc:odbc: + args[0];
175
System.out.println(Attempting to connect to + url);
try{
System.out.println(Loading the driver...);
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
System.out.println(Establishing a connection...);
Connection connection =
DriverManager.getConnection(url);
System.out.println(Connect to
+ connection.getCatalog() + a success!);
MovieDatabase db = new
MovieDatabase(connection);
Movie [] movies = new Movie[6];
movies[0] = new Movie(1, Star Wars: A New Hope,
Science Fiction, DVD);
movies[1] = new Movie(2, Citizen Kane, Drama,
VHS);
movies[2] = new Movie(3, The Jungle Book,
Children, VHS);
movies[3] = new Movie(4, Dumb and Dumber,
Comedy, DVD);
movies[4] = new Movie(5, Star Wars: Attack of the
Clones, Science Fiction, DVD);
movies[5] = new Movie(6, Toy Story, Children,
DVD);
for(int i = 0; i < movies.length; i++){
db.addMovie(movies[i]);
}
System.out.println(Closing the connection...);
connection.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
176
T T i i l li i> >u u t th ha am m k kh hQ Qo o: :
[1] java.sun.com
[2] Herbert Schildt. Java 2. A Beginners Guide. Second
Edition. McGraw-Hill - 2003.
[3] Dr. Harvey M. Deitel - Paul J. Deitel. Java How to
Program, 4th Ed (Deitel). Prentice Hall - 2002
[4] Simon Roberts Philip Heller Michael Ernest. Complete
Java 2 Certification study guide. BPB Publications 2000.
[5] Cay S. Horstmann Gary Cornell. Core Java Volum 1 -
Fundamentals. The Sun Microsystems press. 1997
[6] Cay S. Horstmann Gary Cornell. Core Java Volum 2
Advanced Features. The Sun Microsystems press. 1997

177
P Ph hX X l lX Xc c A A: : T Tr rk kc c n ng gh hi i> >m m k ki iZ Zn n t th hW Wc c
1. Ch\n pht bi@u 3ng
a. InputStream v OuputStream l 2 luQng d; li8u ki@u byte
b. Reader v Writer l 2 luQng d; li8u ki@u character.
c. Cu a) v b) 3ng
d. TRt cS cc cu trn 3:u sai
2. Cho biNt sF byte m 3oPn ch!ng trnh sau ghi ra t<p tin
temp.txt

a. 2 bytes
b. 4 bytes
c. 8 bytes
d. 16 bytes
3. Ch\n pht bi@u 3ng
a. MDt th@ hi8n cBa l7p File c th@ 3ac dng 3@ truy c<p cc
t<p tin trong th mLc hi8n hnh
b. Khi mDt th@ hi8n cBa l7p File 3ac tPo ra th mDt t<p tin
t!ng Kng cmng 3ac tPo ra trn 3_a.
c. Cc th@ hi8n cBa l7p File 3ac dng 3@ truy c<p 3Nn cc t<p
tin v th mLc trn 3_a
d. Cu a) v c) 3ng
178
4. Cho biNt cch tPo mDt th@ hi8n cBa InputStreamReader tb
mDt th@ hi8n cBa InputStream.
a. S? dLng ph!ng thKc createReader() cBa l7p InputStream
b. S? dLng ph!ng thKc createReader() cBa l7p
InputStreamReader
c. TPo mDt th@ hi8n cBa InputStream rQi truy:n vo cho hm
kh1i tPo cBa InputStreamReader
d. TRt cS cc cu trn 3:u sai
5. Ch\n pht bi@u 3ng
a. L7p Writer c th@ 3ac dng 3@ ghi cc k tM c cch m
ha khc nhau ra luQng xuRt
b. L7p Writer c th@ 3ac dng 3@ ghi cc k tM Unicode ra
luQng xuRt
c. L7p Writer c th@ 3ac dng 3@ ghi gi tr= cc ki@u d; li8u
c! s1 ra luQng xuRt
d. Cu a) v b) 3ng
6. Ch\n pht bi@u 3ng:
a. Cc event listeners l cc interface qui 3=nh cc ph!ng
thKc c4n phSi ci 3Ht 3@ x? l cc sM kin lin quan khi sM ki8n
3 xSy ra.
b. MDt event adapter l mDt cung cRp cc ci 3Ht mHc 3=nh cho
cc event listener t!ng Kng
c. L7p WindowAdapter 3ac dng 3@ x? l cc sM ki8n lin
quan 3Nn c?a sJ mn hnh.
d. TRt cS cc cu trn 3:u 3ng
7. Khi c nhi:u component 3ac gen cc bD leng nghe cBa
cng mDt loPi sM ki8n th component no so nh<n 3ac sM ki8n
34u tin?
a. Component 34u tin 3ac gen bD leng nghe sM ki8n
b. Component cuFi cng 3ac gen bD leng nghe sM ki8n
c. Khng th@ xc 3=nh component no so nh<n tr7c
179
d. Khng th@ c nhi:u h!n mDt bD leng nghe cho cng mDt
loPi sM ki8n
8. Ch\n cc component c pht sinh action event
a. Button
b. Label
c. Checkbox
d. Windows
9. Ch\n pht bi@u 3ng
a. Th@ hi8n cBa TextField c th@ pht sinh ActionEvent
b. Th@ hi8n cBa TextArea c th@ pht sinh ActionEvent
c. Th@ hi8n cBa button c th@ pht sinh ActionEvent
d. Cu a) v c) 3ng
10. Ch\n pht bi@u 3ng
a. MouseListener interface 3=nh ngh_a cc ph!ng thKc 3@ x?
l sM ki8n nhRn chuDt.
b. MouseMotionListener interface 3=nh ngh_a cc ph!ng thKc
3@ x? l sM ki8n nhRn chuDt.
c. MouseClickListener interface 3=nh ngh_a cc ph!ng thKc
3@ x? l sM ki8n nhRn chuDt.
d. TRt cS cc cu trn 3:u 3ng
11. GiS s; chng ta c th@ hi8n e cBa bD leng nghe sM ki8n
TextEvent v th@ hi8n t cBa l7p TextArea. Cho biNt cch 3@ gen
bD leng nghe e vo t?
a. t.addTextListener(e)
b. e.addTextListener(t)
c. addTextListener(e,t)
d. addTextListener(t,e)
12. Mn hnh sau s? dLng ki@u trnh by no?
180

a. CardLayout
b. nullLayout
c. BorderLayout
d. SetLayout
13. Mn hnh sau s? dLng ki@u trnh by no?

a. GridLayout
b. FlowLayout
c. BorderLayout
d. GridBagLayout
14. Cho mDt component comp v mDt container cont c ki@u
trnh by l BorderLayout. Cho biNt cch 3@ gen comp vo v= tr
34u cBa cont.
a. addTop(cont,comp)
b. comp.add(North, cont)
c. cont.addTop(comp)
d. cont.add(comp,BorderLayout.NORTH)
15. Cho mDt component comp v mDt container cont c ki@u
trnh by l FlowLayout. Cho biNt cch 3@ gen comp vo cont.
181
a. cont.add(comp)
b. comp.add(cont)
c. cont.addComponent(comp)
d. cont.addAllComponents()
16. Ch\n ph!ng thKc dng 3@ xc 3=nh cch trnh by cBa mDt
khung chKa
a. startLayout()
b. initLayout()
c. layoutContainer()
d. setLayout()
17. Ch\n ph!ng thKc dng 3@ xc 3=nh v= tr v kch th7c cBa
cc component
a. setBounds()
b. setSizeAndPosition()
c. setComponentSize()
d. setComponent()
18. Ch\n ki@u trnh by 3@ 3Ht cc component trn khung chKa
d7i dPng bSng.
a. CardLayout
b. BorderLayout
c. GridLayout
d. FlowLayout
19. Ch\n ph!ng thKc dng 3@ gn nDi dung cho Label
a. setText()
b. setLabel()
c. setTextLabel()
d. setLabelText()
20. Ch\n pht bi@u 3ng
a. TextComponent extends TextArea
b. TextArea extends TextField
182
c. TextField extends TextComponent
d. TextComponent extends TextField
21. Ch\n pht bi@u 3ng
a. L7p CheckboxGroup dng 3@ 3=nh ngh_a c RadioButtons
b. L7p RadioGroup dng 3@ 3=nh ngh_a c RadioButtons
c. TRt cS cc cu trn 3:u 3ng
d. TRt cS cc cu trn 3:u sai
22. Ch\n cu l8nh 3@ tPo ra TextArea c 10 dng v 20 cDt
a. new TexArea(10,20)
b. new TexArea(20,10)
c. new TexArea(200)
d. TRt cS cc cu trn 3:u sai
23. Ch\n cu l8nh 3@ tPo ra mDt danh sch gQm 5 mLc ch\n v
cho php thMc hi8n ch\n nhi:u mLc cng lc
a. new List(5, true)
b. new List(true, 5)
c. new List(5, false)
d. new List(false, 5)
24. Ch\n ph!ng thKc 3@ hi8n th= Frame ln mn hnh
a. setVisible()
b. display()
c. displayFrame()
d. TRt cS cc cu trn 3:u sai
25. Ch\n pht bi@u 3ng
a. L7p Class l l7p cha cBa l7p Object
b. L7p Object l mDt l7p final
c. M\i l7p 3: kN thba trMc tiNp hoHc gin tiNp tb l7p Object
d. TRt cS cc cu trn 3:u sai
183
26. L7p no sau 3y dng 3@ thMc hi8n cc thao tc nh<p xuRt
c! bSn v7i console
a. System
b. Math
c. String
d. StringBuffer
27. L7p no sau 3y khng phSi l l7p bao?
a. String
b. Integer
c. Boolean
d. Character
28. [oPn m sau sai chJ no?


a. [oPn m khng c lti
b. [i:u ki8n cBa cu l8nh if phSi c ki@u boolean thay v
Boolean
c. Chu sF cBa cu l8nh for l int thay v Integer
d. Cu b) v c) 3
29. Ph!ng thKc no sau 3y so lm cho gi tr= biNn s b= thay
3Ji
a. s.concat()
184
b. s.toUpperCase()
c. s.replace()
d. Cu a) v b) 3ng
30. Hy cho biNt kNt xuRt cBa 3oPn ch!ng trnh sau:

a. S1
b. S2
c. S1S2
d. S2S1
31. Ch\n pht bi@u 3ng cho hm kh1i tPo
a. MDt l7p so kNt thba cc hm kh1i tPo tb l7p cha
b. Trnh bin d=ch so tM 3Dng tPo hm kh1i tPo mHc 3=nh nNu
l7p khng 3=nh ngh_a hm kh1i tPo
c. TRt cS cc hm kh1i tPo c ki@u trS v: l void
d. TRt cS cc cu trn 3:u sai
32. Cho biNt kNt xuRt cBa 3oPn ch!ng trnh sau:
185

a. S1
b. S2
c. null
d. S1S2
33. MDt ki@u d; li8u sF c dRu c 2 gi tr= +0 v -0 bOng nhau:
a. [ng
b. Sai
c. Chu 3ng v7i ki@u sF nguyn
d. Chu 3ng v7i ki@u sF thMc
34. Ch\n khai bo tn 3ng
a. Big01LongStringWidthMeaninglessName
b. $int
c. bytes
d. TRt cS cc cu trn 3:u 3ng
186
35. Ch\n khai bo 3ng cho ph!ng thKc main()
a. public static void main( )
b. public void main(String[] arg)
c. public static void main(String[] args)
d. public static int main(String[] arg)
36. Ch\n thK tM 3ng cBa cc thnh ph4n trong mDt t<p tin
nguQn
a. Cu l8nh import, khai bo package, khai bo l7p.
b. Khai bo package 34u tin; thK tM cBa cu l8nh import v
khai bo l7p l ty .
c. Khai bo package, cu l8nh import, khai bo l7p
d. Cu l8nh import tr7c tin; thK tM cBa khai bo package v
khai bo l7p l ty .
37. Cho cu l8nh sau:
int[] x = new int[25];
Ch\n kNt quS 3ng sau khi thi hnh cu l8nh trn
a. x[24] cha 3ac 3=nh ngh_a
b. x[25] c gi tr= 0
c. x[0] = c gi tr= null
d. x.length = 25
38. Cho 3oPn m sau:
1 : class Q6{
2 : public static void main(String args[]){
3 : Holder h = new Holder();
4 : h.held = 100;
5 : h.bump(h);
6 : System.out.println(h.held);
7 : }
8 : }
9 : class Holder{
10 : public int held;
11 : public void bump(Holder theHolder){
187
12 : theHolder.held++;
13 : }
14 : }
Gi tr= in ra cBa cu l8nh 1 dng thK 6 l:
a. 0
b. 1
c. 100
d. 101
39. Cho 3oPn m sau:
1 : class Q7{
2 : public static void main(String args[]){
3 : double d = 12.3;
4 : Decrementer dec = new Decrementer();
5 : dec.decrement(d);
6 : System.out.println(d);
7 : }
8 : }
9 : class Decrementer{
10 : public void decrement(double decMe){
11 : decMe = decMe 1.0;
12 : }
13 : }
Gi tr= in ra cBa cu l8nh 1 dng thK 6 l:
a. 0.0
b. -1.0
c. 12.3
d. 11.3
40. Mi:n gi tr= cBa biNn ki@u short l:
a. N phL thuDc vo n:n ph4n cKng bn d7i
b. Tb 0 3Nn 2
16
1
c. Tb -2
15
3Nn 2
15
1
d. Tb -2
31
3Nn 2
31
1
188
41. Mi:n gi tr= cBa biNn ki@u byte l:
a. N phL thuDc vo n:n ph4n cKng bn d7i
b. Tb 0 3Nn 2
8
1
c. Tb -2
7
3Nn 2
7
1
d. Tb -2
15
3Nn 2
15
1
42. Cho biNt gi tr= cBa x, a v b sau khi thi hnh 3oPn m sau:
1 : int x, a = 6, b = 7;
2 : x = a++ + b++;
a. x = 15, a = 7, b = 8
b. x = 15, a = 6, b = 7
c. x = 13, a = 7, b = 8
d. x = 13, a = 6, b = 7
43. Bi@u thKc no sau 3y l hap l8
a. int x = 6;x = !x;
b. itn x = 6; if (!(x > 3)) {}
c. int x = 6; x = ~x;
d. Cu b) v c) 3ng
44. Bi@u thKc no sau 3y cho x c gi tr= d!ng:
a. int x = -1; x = x >>> 5;
b. int x = -1; x = x >>> 32;
c. byte x = -1; x = x >>> 5;
d. int x = -1; x = x >> 5;
45. Bi@u thKc no sau 3y hap l8
a. String x = Hello; int y = 9; x +=y;
b. String x = Hello; int y = 9; x = x + y;
c. String x = null; int y = (x != null) && (x.length() > 0) ?
x.length() : 0;
d. TRt cS cc cu trn 3:u 3ng
46. [oPn m no sau 3y in ra mn hnh ch; Equal:
a.
189
int x = 100; float y = 100.0F;
if (x == y)
{
System.out.println(Equal);
}
b.
Integer x = new Integer(100);
Integer y = new Integer(100);
if (x == y)
{
System.out.println(Equal);
}
c.
String x = 100; String y = 100;
if (x == y)
{
System.out.println(Equal);
}
d. Cu a. v c. 3ng
47. Cho biNt kNt quS sau khi thi hnh ch!ng trnh sau:
1 : public class Short{
2 : public static void main(String[] args){
3 : StringBuffer s = new StringBuffer(Hello);
4 : if ((s.length() > 5) &&
5 : s.append( there).equals(False)))
6 : ;//do nothing
7 : System.out.println(value is + s);
8 : }
9 : }
a. Gi tr= xuRt l Hello
b. Lti bin d=ch tPi dng 4 v 5
c. Khng c gi tr= xuRt
d. Thng bo NullPointerException
190
48. Cho biNt kNt quS sau khi thMc hi8n ch!ng trnh sau:
1 : public class Xor{
2 : public static void main(String[] args){
3 : byte b = 10;//00001010
4 : byte c = 15;//00001111
5 : b = (byte)(b ^ c);
6 : System.out.println(b contains + b);
7 : }
8 : }
a. KNt quS l: b contains 10
b. KNt quS l: b contains 5
c. KNt quS l: b contains 250
d. KNt quS l: b contains 245
49. Cho biNt kNt quS sau khi bin d=ch v thi hnh ch!ng trnh
sau:
1 : public class Conditional{
2 : public static void mai n(String[] args){
3 : int x = 4;
4 : System.out.println(value is +
5 : ((x > 4 ? 99.99 : 9));
6 : }
7 : }
a. KNt quS l: value is 99.99
b. KNt quS l: value is 9
c. KNt quS l: value is 9.0
d. Lti bin d=ch tPi dng sF 5
50. Cho biNt kNt quS cBa 3oPn m sau:
1 : int x = 3; int y = 10;
2 : System.out.println(y % x);
a. 0
b. 1
c. 2
d. 3
191
51. Ch\n cu khai bo khng hap l8
a. String s;
b. abstract double d;
c. abstract final double hyperbolCosine();
d. TRt cS cc cu trn 3:u 3ng
52. Ch\n cu pht bi@u 3ng
a. MDt l7p trbu tang khng th@ chKa ph!ng thKc final
b. MDt l7p final khng th@ chKa cc ph!ng thKc trbu tang
c. CS a) v b) 3:u 3ng
d. CS a) v b) 3:u sai
53. Ch\n cch s?a t nhRt 3@ 3oPn m sau bin d=ch 3ng
3 : final class Aaa
4 : {
5 : int xxx;
6 : void yyy(){xxx = 1;}
7 : }
8 :
9 :
10 : class Bbb extends Aaa
11 : {
12 : final Aaa finalRef = new Aaa();
13 :
14 : final void yyy()
15 : {
16 : System.out.println(In method yyy());
17 : finalRef.xxx = 12345;
18 : }
19 : }
a. Xa tb final 1 dng 1
b. Xo tb final 1 dng 10
c. Xa tb final 1 dng 1 v 10
d. Khng c4n phSi chunh s?a g
192
54. Ch\n pht bi@u 3ng cho ch!ng trnh sau
1 : class StaticStuff
2 : {
3 : static int x = 10;
4 :
5 : static {x += 5;}
6 :
7 : public static void main(String args[])
8 : {
9 : System.out.pritln(x = + x);
10 : }
11 :
12 : static {x /= 5}
13 : }
a. Lti bin d=ch tPi dng 5 v 12 bwi v thiNu tn ph!ng thKc
v ki@u trS v:
b. Ch!ng trnh chPy v cho kNt quS x = 10
c. Ch!ng trnh chPy v cho kNt quS x = 15
d. Ch!ng trnh chPy v cho kNt quS x = 3
55. Ch\n pht bi@u 3ng cho ch!ng trnh sau:
1 : class HasStatic
2 : {
3 : private static int x = 100;
4 :
5 : public static void main(String args[])
6 : {
7 : HasStatic hs1 = new HasStatic();
8 : hs1.x++;
9 : HasStatic hs2 = new HasStatic();
10 : hs2.x++;
11 : hs1 = new HasStatic();
12 : hs1.x++;
13 : HasStatic.x++;
14 : System.out.println(x = + x);
193
15 : }
16 : }
a. Ch!ng trnh chPy v cho kNt quS x = 102
b. Ch!ng trnh chPy v cho kNt quS x = 103
c. Ch!ng trnh chPy v cho kNt quS x = 104
d. TRt cS cc cu trn 3:u sai
56. Cho 3oPn m sau:
1 : class SuperDuper
2 : {
3 : void aMethod(){}
4 : }
5 :
6 : class Sub extends SuperDuper
7 : {
8 : void aMethod(){}
9 : }
Hy ch\n tb kha chu phPm vi hap l8 3Kng tr7c aMethod()
1 dng 8
a. default
b. protected
c. public
d. TRt cS cc cu trn 3:u 3ng
[oPn m sau dng cho 2 cu hpi tiNp theo
1 : package abcde;
2 :
3 : public class Bird{
4 : protected static int referneceCount = 0;
5 : public Bird(){referenceCount++;}
6 : protected void fly(){}
7 : static int getRefCount(){return referenceCount;}
8 : }
57. Ch\n pht bi@u 3ng cho l7p Bird trn v l7p Parrot sau:
194
1 : package abcde;
2 :
3 : class Parrot extends abcde.Bird{
4 : public void fly(){
5 : //
6 : }
7 : public int getRefCount(){
8 : return referenceCount;
9 : }
10 : }
a. Lti bin d=ch 1 dng 4 t<p tin Parrot.java v ph!ng thKc
fly() l protected trong l7p cha v l7p Bird v Parrot nOm trong
cng package
b. Lti bin d=ch 1 dng 4 t<p tin Parrot.java v ph!ng thKc
fly() l protected trong l7p cha v public trong l7p con.
c. Lti bin d=ch 1 dng 7 t<p tin Parrot.java v ph!ng thKc
getRefCount() l static trong l7p cha.
d. Ch!ng trnh bin d=ch thnh cng nhng so pht sinh
Exception khi chPy nNu ph!ng thKc fly() cBa l7p Parrot khng
3ac g\i
58. Ch\n pht bi@u 3ng cho l7p Bird trn v l7p Nightingale
sau:
1 : package singers;
2 :
3 : class Nightingale extends abcde.Bird{
4 : Nightingale(){ refernceCount++;}
5 :
6 : public static void main(String args[]){
7 : System.out.print(Before: + refernceCount);
8 : Nightingale florence = new Nightingale();
9 : System.out.print(After: + refernceCount);
10 : florence.fly();
11 : }
12 : }
195
a. KNt quS trn mn hnh l: Before: 0 After: 2
b. KNt quS trn mn hnh l: Before: 0 After: 1
c. Lti bin d=ch 1 dng 4 cBa l7p Nightingale v khng th@
overidde thnh vin static
d. Lti bin d=ch 1 dng 10 cBa l7p Nightingale v ph!ng thKc
fly() l protected trong l7p cha.
59. Ch\n pht bi@u 3ng
a. Chu ki@u d; li8u c! s1 m7i 3ac chuy@n 3Ji ki@u tM 3Dng;
3@ chuy@n 3Ji ki@u d; li8u cBa biNn tham chi@u phSi s? dLng
php p ki@u
b. Chu biNn tham chiNu m7i 3ac chuy@n 3Ji ki@u tM 3Dng; 3@
chuy@n ki@u cBa 1 biNn ki@u c! s1 phSi s? dLng php ton p
ki@u
c. CS ki@u d; li8u c! s1 v ki@u tham chiNu 3:u c th@ chuy@n
3Ji tM 3Dng v p ki@u
d. Php p ki@u 3Fi v7i d; li8u sF c th@ c4n php ki@m tra khi
thMc thi
60. Dng l8nh no sau 3y so khng th@ bin d=ch:
1 : byte b = 5;
2 : char c = 5;
3 : short s = 55;
4 : int i = 555;
5 : float f = 555.5f;
6 : b = s;
7 : i = c;
8 : if (f > b)
9 : f = i;
a. Dng 3
b. Dng 4
c. Dng 5
d. Dng 6
61. Ch\n dng pht sinh lti khi bin d=ch
196
1 : byte b = 2;
2 : byte b1 = 3;
3 : b = b * b1;
a. Dng 1
b. Dng 2
c. Dng 3
d. TRt cS cc cu trn 3:u 3ng
62. Trong 3oPn m sau ki@u d; li8u cBa biNn result c th@ l
nh;ng ki@u no?
1 : byte b = 11;
2 : short s =13;
3 : result = b * ++s;
a. byte, short, int, long, float, double
b. boolean, byte, short, char, int, long, float, double
c. byte, short, char, int, long, float, double
d. int, long, float, double
63. Cho 3oPn ch!ng trnh sau:
1 : class Cruncher{
2 : void crunch(int i){
3 : System.out.println(int version):
4 : }
5 : void crunch(String s){
6 : System.out.println(String version);
7 : }
8 :
9 : public static void main(String[] args){
10 : Cruncher crun = new Cruncher();
11 : char ch = p;
12 : crun.crunch(ch);
13 : }
14 : }
a. Dng 5 so khng bin d=ch v ph!ng thKc trS v: ki@u void
khng th@ overridde
197
b. Dng 12 so khng bin d=ch v khng c phin bSn no cBa
ph!ng thKc crunch() nh<n vo tham sF ki@u char
c. [oPn m bin d=ch 3ac nhng so pht sinh Exception 1
dng 12
d. Ch!ng trnh chPy v in ra kNt quS: int version
64. Ch\n pht bi@u 3ng
a. Tham chiNu cBa 3Fi tang c th@ 3ac chuy@n 3Ji trong
php gn nhng khng th@ thMc hi8n trong php g\i ph!ng
thKc
b. Tham chiNu cBa 3Ji tang c th@ 3ac p ki@u trong php
g\i ph!ng thKc nhng khng th@ thMc hi8n trong php gn
c. Tham chi@u cBa 3Fi tang c th@ 3ac chuy@n 3Ji trong
php g\i ph!ng thKc v php gn nhng tun theo nh;ng quy
tec khc nhau
d. Tham chiNu cBa 3Fi tang c th@ 3ac chuy@n 3Ji trong
php g\i ph!ng thKc v php gn v tun theo nh;ng quy tec
giFng nhau
65. Cho 3oPn m nh bn d7i. Hy cho biNt dng no khng
th@ bin d=ch
1 : Object ob = new Object();
2 : String stringarr[] = new String[50];
3 : Float floater = new Float(3.14f);
4 : ob = stringarr;
5 : ob = stringarr[5];
6 : floater = ob;
7 : ob = floater;
a. Dng 4
b. Dng 5
a. Dng 6
b. Dng 7



198













Hnh sau p dLng cho cc cu 66, 67, 68
66. Cho 3oPn m sau:
1 :Dog rover, fido;
2 :Animal anim;
3 :
4 :rover = new Dog();
5 :anim = rover;
6 :fido = (Dog)anim;
Hy ch\n pht bi@u 3ng
a. Dng 5 khng th@ bin d=ch
b. Dng 6 khng th@ bin d=ch
c. [oPn m bin d=ch thnh cng nhng so pht sinh
Exception tPi dng 6
d. [oPn m bin d=ch thnh cng v c th@ thi hnh
67. Cho 3oPn m sau:
1 :Cat sunflower;
2 :Washer wawa;
3 :SwampThing pogo;
4 :
5 :sunflower = new Cat();
Swamp
Thing
Mammal
Animal
Dog Cat
(implements
Washer)
Racoon
(implements
Washer)
199
6 :wawa = sunflower;
7 :pogo = (SwampThing)wawa;
Hy ch\n pht bi@u 3
a. Dng 6 khng th@ bin d=ch; c4n c mDt php p ki@u 3@
chuy@n tb ki@u Cat sang ki@u Washer
b. Dng 7 khng th@ bin d=ch v khng th@ p tb ki@u
interface sang ki@u class
c. [oPn m so d=ch v chPy nhng php p ki@u 1 dng 7 l
thba v c th@ bp di
d. [oPn m bin d=ch thnh cng nhng so pht sinh
Exceptiono 1 dng 7 v ki@u l7p cBa 3Fi tang trong biNn wawa
lc thi hnh khng th@ chuy@n sang ki@u SwampThing
68. Cho 3oPn m sau
1 :Racoon rocky;
2 :SwampThing pogo;
3 :Washer w;
4 :
5 :rocky = new Racooon();
6 :w = rocky;
7 :pogo = w;
a. Dng 6 so khng bin d=ch; c4n phSi c php p ki@u 3@
chuy@n tb ki@u Racoon sang ki@u Washer
b. Dng 7 so khng bin d=ch; c4n c php p ki@u 3@ chuy@n
tb ki@u Washer sang ki@u SwampThing
c. [oPn m so bin d=ch nhng so pht sinh Exception 1 dng
7 v chuy@n 3Ji ki@u khi thMc thi tb interface sang class l
khng 3ac php
d. [oPn m so bin d=ch v so pht sinh Exception 1 dng 7 v
ki@u l7p cBa w tPi thli 3i@m thMc thi khng th@ chuy@n sang
ki@u SwampThing
69. Cho 3oPn m sau:
1 : for (int i = 0; i < 2; i++){
2 : for (int j = 0; j < 3; j++){
200
3 : if (i == j){
4 : continue;
5 : }
6 : System.out.println(i = + i + j = + j);
7 : }
8 : }

Dng no so l mDt trong sF cc kNt quS 3ac in ra?
a. i = 0 j = 0
b. i = 2 j = 1
c. i = 0 j = 2
d. i = 1 j = 1
70. Cho 3oPn m sau:
1 : outer: for (int i = 0; i < 2; i++){
2 : for (int j =0; j < 3; j++){
3 : if (i == j){
4 : continue outer;
5 : }
6 : System.out.println(i = + i + j = + j);
7 : }
8 : }
Dng no so l mDt trong sF cc kNt quS 3ac in ra?
a. i = 0 j = 0
b. i = 0 j = 1
c. i = 0 j = 2
d. i = 1 j = 0
71. Ch\n vng lHp 3ng
a.
1 : while (int i < 7){
2 : i++;
3 : System.out.println(i is + i);
4 : }
b.
201
5 : int i = 3;
6 : while (i){
7 : System.out.println(i is + i);
8 : }
c.
1 : int j = 0;
2 : for(int k = 0; j + k != 10; j++, k++){
3 : System.out.println(j is + j + k is + k);
4 : }
d.
1 : int j = 0;
2 : do{
3 : System.out.println(j is + j++);
4 : if (j == 3) { continue loop;}
5 : }while (j < 10);
72. Cho biNt kNt xuRt cBa 3oPn m sau
1 : int x = 0, y = 4, z = 5;
2 : if ( x > 2){
3 : if (y < 5){
4 : System.out.println(message one);
5 : }
6 : else{
7 : System.out.println(message two);
8 : }
9 : }
10 : else if (z > 5){
11 : System.out.println(message three);
12 : }
13 : else{
14 : System.out.println(message four);
15 : }
a. message one
b. message two
c. message three
202
d. message four
73. Ch\n pht bi@u 3ng cho 3oPn m sau:
1 : int j = 2;
2 : switch (j){
3 : case 2:
4 : System.out.println(value is two);
5 : case 2 + 1:
6 : System.out.println(value is three);
7 : break;
8 : default:
9 : System.out.println(value is + j);
10 : break;
11 : }
a. [oPn m khng hap l8 bwi bi@u thKc 1 dng 5
b. BiNn j trong cRu trc switch() c th@ l mDt trong cc ki@u:
byte, short, int hoHc long
c. KNt xuRt cBa ch!ng trnh chu l dng: value is two
d. KNt xuRt cBa ch!ng trnh chu l dng: value is two v
value is three
74. Cho biNt kNt quS sau khi d=ch v thMc thi 3oPn ch!ng trnh
sau:
1. import java.awt.*;
2.
3. public class Test extends Frame {
4. Test() {
5. setSize(300,300);
6. Button b = new Button(Apply);
7. add(b);
8. }
9.
10. public static void main(String args[]) {
11. Test f = new Test();
12. f.setVisible(true);
203
13. }
14. }
a) C lti bin d=ch tPi dng 11 b1i v constructor 1 dng 4
khng khai bo public.
b) Ch!ng trnh bin d=ch thnh cng nhng c so nm ra
exception khi thMc thi cu l8nh 1 dng thK 7.
c) Ch!ng trnh hi@n th= frame trFng.
d) Ch!ng trnh hi@n th= 1 nt nhRn (Button) s? dLng font ch;
mHc 3=nh cho nhn cBa Button. Button chu 3B l7n 3@ bao quanh
nhn cBa n.
e) Ch!ng trnh hi@n th= nt nhRn (Button) dng font ch; mHc
3=nh cho nhn nt. Nt nhRn so chon tRt cS vng hi@n th= cBa
frame.
75. NNu 1 frame dng bD quSn l trnh by (layout manager) l
GridLayout v khng chKa bRt kq panel hay container no khc
bn trong n th tRt cS nh;ng components khi 3a vo trong
frame ny c cng kch th7c nh nhau (ngang, d\c)?
a) [ng.
b) Sai.
76. NNu 1 frame dng bD quSn l trnh by (layout manager)
mHc 3=nh v khng chKa bRt kq panel no bn trong th tRt cS
nh;ng components bn trong frame l cng kch th7c (ngang,
d\c) ?
a) [ng.
b) Sai.
77. V7i bD quSn l trnh by BorderLayout khng nhRt thiNt cc
vng phSi c chKa cc components.
a) [ng.
b) Sai.
78. BD quSn l trnh by mHc 3=nh cho 1 khung chKa ki@u Panel
l:
204
a) FlowLayout
b) BorderLayout
c) GridLayout
d) GridBagLayout
79. MDt Container c bD quSn l trnh by l GridBagLayout th
mti component so c kch th7c bOng nhau khi thm vo khung
chKa (container) ny?
a) [ng
b) Sai
80. BPn c th@ tPo ra c?a sJ chnh cBa Kng dLng bOng cch g\i:
Frame f = new Frame(Main Frame);
Nhng khi bPn chPy ch!ng trnh th Frame khng hi@n th=.
Dng no bn d7i so lm hi@n th= Frame.
a) f.setSize(300, 200);
b) f.setBounds(10, 10, 500, 400);
c) f.setForeground(Color.white);
d) f.setVisible(true);
81. [Fi tang no bn d7i c th@ chKa 1 menubar (ch\n
nh;ng cu 3ng)
a) Panel
b) ScrollPane
c) Frame
d) Menu
82. Sau khi tPo 1 frame bOng cu l8nh Frame f = new Frame()
v tPo menu bar bOng cu l8nh MenuBar mb = new MenuBar(),
lm thN no 3@ gen MenuBar tn mb vo f.
a) f.add(mb)
b) f.setMenu(mb)
c) f.addMenu(mb)
d) f.setMenuBar(mb)

205
P Ph hX X L LX Xc c B B: : & & p p n n t tr rk kc c n ng gh hi i> >m m k ki iZ Zn n t th hW Wc c
1.c; 2.b; 3.d; 4.c; 5.d; 6.d; 7.c; 8.a; 9.d; 10.a; 11.a; 12.c; 13.b;
14.d; 15.a; 16.d; 17.a; 18.c; 19.a; 20.c; 21.a; 22.a; 23.a; 24.a;
25.c; 26.a; 27.a; 28.d; 29.d; 30.c; 31.b; 32.a; 33.b; 34.d; 35.c;
36.c; 37.d; 38.d; 39.c; 40.c; 41.c; 42.c; 43.d; 44.a; 45.d; 46.d;
47.a; 48.b; 49.c; 50.b; 51.d; 52.b; 53.a; 54.d; 55.c; 56.d; 57.c;
58.a; 59.c; 60.d; 61.c; 62.d; 63.d; 64.d; 65.c; 66.d; 67.d; 68.b;
69.c; 70.d; 71.c; 72.d; 73.d; 74.e; 75.a; 76.b; 77.a; 78.a; 79.b;
80.d; 81.c; 82.d

You might also like