You are on page 1of 130

Lp trnh Hng i tng vi J ava

Bin son: ThS. Trn Xun Thanh Trang 1



Li ni u

Lp trnh hng i tng l phng php lp trnh ph bin hin nay. Bi ging Lp
trnh hng i tng vi Java l mn hc cung cp cho sinh vin ngnh Cng ngh thng tin
nhng kin thc c bn v phng php lp trnh hng i tng v bc u lm quen vi
ngn ng lp trnh Java. y l ngn ng lp trnh m ngun m ca hng SunMicrosystem
ang c s dng rng ri nh mt ngn ng lp trnh chuyn nghip.
Bi ging dnh cho sinh vin h i hc v Cao ng ngnh Cng ngh thng tin trng
i Hc Thnh . Bi ging ny c bin son da trn cng chi tit mn Lp trnh
hng i tng vi Java ca khoa Cng ngh thng tin. Ni dung bi ging c bin son
da trn nhiu ngun khc nhau nhm p ng tt nht cho vic hc trn lp cng nh t hc
nh ca sinh vin h o to tn ch.
Do bi ging c bin son ln u nn khng trch khi nhng thiu st rt mong cc
qu thy c v cc bn sinh vin ng gp kin bi ging c hon thin hn.
Xin chn thnh cm n!
Bin son
Trn Xun Thanh
Khoa CNTT- trng H Thnh
E-mail: txthanh@thanhdo.edu.vn.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 2


Mc lc

CHNG 1 : TNG QUAN V OOP V NGN NG JAVA ................................ 4
1.1. Tng quan v OOP ............................................................................................. 4
1.2. Tng quan v Java .............................................................................................. 6
Applets ....................................................................................................................... 9
ng dng thc thi qua dng lnh .............................................................................. 9
ng dng ha ....................................................................................................... 9
Servlet ........................................................................................................................ 9
ng dng c s d liu ........................................................................................... 10
CHNG 2 : CN BN V NGN NG JAVA ................................................... 13
2.1. Cc thnh phn ngn ng ................................................................................. 13
2.2. Bin, hng v cc kiu d liu ......................................................................... 14
2.3. Cc cu trc iu khin .................................................................................... 24
CHNG 3 : I TNG V LP ........................................................................ 31
3.1. i tng v lp............................................................................................... 31
3.2. Bin lp v phng thc lp ............................................................................ 32
3.3. Phng thc finalize() ...................................................................................... 36
3.4.Gi (packages) ................................................................................................... 37
3.5. ng gi (encapsulation) ................................................................................. 37
CHNG 4 : THA K V A HNH ................................................................... 39
4.1. Tha k (inheritance) ....................................................................................... 39
4.1.2. Khi bo phng thc chng ........................................................................ 39
4.2. a hnh (polymorphism) ................................................................................. 40
4.3. Phng thc tu tng v lp tru tng ....................................................... 42
4.4. Giao din (interface) ......................................................................................... 43
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 3
4.5. Lp ni ............................................................................................................. 44
4.6. Lp v sinh ....................................................................................................... 44
4.7. V d minh ha ................................................................................................. 45
CHNG 5 : MNG V CHUI ............................................................................. 52
5.1. Mng 1 chiu .................................................................................................... 52
5.2. Chui (string) ................................................................................................... 54
5.3. Cc v d minh ho ........................................................................................... 57
CHNG 6: LP TRNH WINDOW VI AWT ..................................................... 62
6.1. Gii thiu chung ............................................................................................... 62
6.2. Cc container v cc component ...................................................................... 62
6.3. X l s kin .................................................................................................... 77
6.4. Cc v d minh ha ........................................................................................... 84
CHNG 7 : X L NGOI L (EXCEPTION) ................................................... 93
7.1. i tng Exception ........................................................................................ 93
7.2. Catch exception ................................................................................................ 94
7.3. Throw exception ............................................................................................... 97
7.4. Danh sch cc ngoi l ................................................................................... 100
CHNG 8: XUT NHP TP TIN ..................................................................... 101
8.1. Gii thiu chung ............................................................................................. 101
8.2. Cc loi tp tin ................................................................................................ 101
8.3. Nguyn tc c/ghi tp tin ............................................................................. 105
8.4.File truy cp ngu nhin (Random Access Files) ........................................... 111
8.5. S dng lung k t ....................................................................................... 113
8.6. Lp File .......................................................................................................... 117
8.7. Khi nim lung ............................................................................................. 118

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 4


CHNG 1 : TNG QUAN V OOP V NGN NG JAVA
1.1. Tng quan v OOP
1.1.1. Gii thiu chung
Lp trnh hng i tng (object oriented programming- OOP), hay cn gi l lp
trnh nh hng i tng, l k thut lp trnh h tr cng ngh i tng. OOP c xem
l gip tng nng sut, n gin ha phc tp khi bo tr cng nh m rng phn mm bng
cch cho php lp trnh vin tp trung vo cc i tng phn mm bc cao hn. Ngoi ra,
nhiu ngi cn cho rng OOP d tip thu hn cho nhng ngi mi hc v lp trnh hn l
cc phng php trc .
Mt cch gin lc, y l khi nim v l mt n lc nhm gim nh cc thao tc vit
m cho ngi lp trnh, cho php h to ra cc ng dng m cc yu t bn ngoi c th tng
tc vi cc chng trnh ging nh l tng tc vi cc i tng vt l.
Nhng i tng trong mt ngn ng OOP l cc kt hp gia m v d liu m chng
c nhn nhn nh l mt n v duy nht. Mi i tng c mt tn ring bit v tt c cc
tham chiu n i tng c tin hnh qua tn ca n. Nh vy, mi i tng c kh
nng nhn vo cc thng bo, x l d liu (bn trong ca n), v gi ra hay tr li n cc i
tng khc hay n mi trng

1.1.2. Mt s khi nim
i tng (object):
Cc d liu v ch th c kt hp vo mt n v y to nn mt i tng.
n v ny tng ng vi mt chng trnh con v v th cc i tng s c
chia thnh hai b phn chnh: phn cc phng thc (method) v phn cc thuc
tnh (attribute).
Trong thc t, cc phng thc ca i tng l cc hm v cc thuc tnh ca
n l cc bin, cc tham s hay hng ni ti ca mt i tng (hay ni cch khc
tp hp cc d liu ni ti to thnh thuc tnh ca i tng). Cc phng thc l
phng tin s dng mt i tng trong khi cc thuc tnh s m t i tng
c nhng tnh cht g. Cc phng thc v cc thuc tnh thng gn cht vi thc t
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 5
cc c tnh v s dng ca mt i tng. Cc i tng thng c tru tng
ha qua vic nh ngha ca cc lp (class).
Tp hp cc gi tr hin c ca cc thuc tnh to nn trng thi ca mt i
tng. Mi phng thc hay mi d liu ni ti cng vi cc tnh cht c nh
ngha (bi ngi lp trnh) c xem l mt c tnh ring ca i tng. Nu
khng c g lm ln th tp hp cc c tnh ny gi chung l c tnh ca i tng.
Lp trnh hng i tng l mt phng php lp trnh c cc tnh cht chnh sau:
- Tnh tru tng (abstraction): y l kh nng ca chng trnh b qua hay khng
ch n mt s kha cnh ca thng tin m n ang trc tip lm vic ln, ngha l
n c kh nng tp trung vo nhng ct li cn thit. Mi i tng phc v nh l
mt "ng t" c th hon tt cc cng vic mt cch ni b, bo co, thay i trng
thi ca n v lin lc vi cc i tng khc m khng cn cho bit lm cch no
i tng tin hnh c cc thao tc. Tnh cht ny thng c gi l s tru
tng ca d liu. Tnh tru tng cn th hin qua vic mt i tng ban u c
th c mt s c im chung cho nhiu i tng khc nh l s m rng ca n
nhng bn thn i tng ban u ny c th khng c cc bin php thi hnh. Tnh
tru tng ny thng c xc nh trong khi nim gi l lp tru tng hay lp
c s tru tng.
- Tnh ng gi (encapsulation) v che giu thng tin (information hiding): Tnh
cht ny khng cho php ngi s dng cc i tng thay i trng thi ni ti ca
mt i tng. Ch c cc phng thc ni ti ca i tng cho php thay i trng
thi ca n. Vic cho php mi trng bn ngoi tc ng ln cc d liu ni ti ca
mt i tng theo cch no l hon ton ty thuc vo ngi vit m. y l tnh
cht m bo s ton vn ca i tng.
- Tnh a hnh (polymorphism): Th hin thng qua vic gi cc thng
ip (message). Vic gi cc thng ip ny c th so snh nh vic gi cc hm
bn trong ca mt i tng. Cc phng thc dng tr li cho mt thng ip s
ty theo i tng m thng ip c gi ti s c phn ng khc nhau. Ngi
lp trnh c th nh ngha mt c tnh (chng hn thng qua tn ca cc phng
thc) cho mt lot cc i tng gn nhau nhng khi thi hnh th dng cng mt tn
gi m s thi hnh ca mi i tng s t ng xy ra tng ng theo c tnh ca
tng i tng m khng b nhm ln.
Th d khi nh ngha hai i tng "hinh_vuong" v "hinh_tron" th c mt
phng thc chung l "chu_vi". Khi gi phng thc ny th nu i tng l
"hinh_vuong" n s tnh theo cng thc khc vi khi i tng l "hinh_tron".
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 6
- Tnh k tha (inheritance): c tnh ny cho php mt i tng c th c sn cc
c tnh m i tng khc c thng qua k tha. iu ny cho php cc i
tng chia s hay m rng cc c tnh sn c m khng phi tin hnh nh ngha
li. Tuy nhin, khng phi ngn ng nh hng i tng no cng c tnh cht
ny.
1.2. Tng quan v Java
1.2.1 Lch s pht trin
Java l g? Java l ngn ng lp trnh hng i tng (ta C++) do Sun Microsystem
a ra vo gia thp nin 90. Chng trnh vit bng ngn ng lp trnh java c th chy trn
bt k h thng no c ci my o java (Java Virtual Machine-JVM).
Ngn ng lp trnh Java do James Gosling v cc cng s ca Cng ty Sun
Microsystem pht trin.
u thp nin 90, Sun Microsystem tp hp cc nh nghin cu thnh lp nn nhm t tn l
Green Team. Green c trch nhim xy dng cng ngh mi cho ngnh in t tiu dng.
gii quyt vn ny nhm nghin cu pht trin xy dng mt ngn ng lp trnh mi t
tn l Oak tng t nh C++ nhng loi b mt s tnh nng nguy him ca C++ v c kh
nng chy trn nhiu nn phn cng khc nhau. Cng lc world wide web bt u pht trin
v Sun thy c tim nng ca ngn ng Oak nn u t ci tin v pht trin. Sau
khng lu ngn ng mi vi tn gi l Java ra i v c gii thiu nm 1995.
Java l tn gi ca mt hn o Indonexia, l ni nhm nghin cu pht trin
chn t tn cho ngn ng lp trnh Java trong mt chuyn i tham quan v lm vic trn
hn o ny. Hn o Java ny l ni rt ni ting vi nhiu khu vn trng cafe, chnh l
l do chng ta thng thy biu tng ly caf trong nhiu sn phm phn mm, cng c lp
trnh Java ca Sun cng nh mt s hng phn mm khc a ra.

1.2.2 c im ngn ng
Sun Microsystem chu trch nhim pht trin cc my o Java chy trn cc h iu
hnh trn cc kin trc CPU khc nhau.
- Thng dch: Java l mt ngn ng lp trnh va bin dch va thng dch. Chng trnh
ngun vit bng ngn ng lp trnh Java c ui *.java u tin c bin dch thnh tp tin c
ui *.class v sau s c trnh thng dch thng dch thnh m my.
- c lp nn: Mt chng trnh vit bng ngn ng Java c th chy trn nhiu my tnh c
h iu hnh khc nhau (Windows, Unix, Linux, ) min sao c ci t my o java
(Java Virtual Machine). Vit mt ln chy mi ni (write once run anywhere).
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 7

H nh 1.1 Cch bin dch truyn thng
i vi cc chng trnh vit bng C, C++ hoc mt ngn ng no khc, trnh bin dch s
chuyn tp lnh thnh m my (machine code),hay lnh ca b vi x l. Nhng lnh ny ph
thuc vo CPU hin ti trn my bn. Nn khi mun chy trn loi CPU khc, chng ta phi
bin dch li chng trnh. Hnh 2.1 th hin qu trnh thc thi chng trnh vit bng C++
trn cc loi my khc nhau.
Qu trnh thc thi chng trnh vit bng Java trn cc loi my khc nhau:

H nh 1.2 Dch chng trnh Java

- Hng i tng: Hng i tng trong Java tng t nh C++ nhng Java l mt ngn
ng lp trnh hng i tng hon ton. Tt c mi th cp n trong Java u lin quan
n cc i tng c nh ngha trc, thm ch hm chnh ca mt chng trnh vit bng
Java ( l hm main) cng phi t bn trong mt lp. Hng i tng trong Java khng c
tnh a k tha (multi inheritance) nh trong C++ m thay vo Java a ra khi nim
interface h tr tnh a k tha. Vn ny s c bn chi tit trong chng 3.
- a nhim - a lung (MultiTasking - Multithreading): Java h tr lp trnh a nhim, a
lung cho php nhiu tin trnh, tiu trnh c th chy song song cng mt thi im v tng
tc vi nhau.
- Kh chuyn (portable): Chng trnh ng dng vit bng ngn ng Java ch cn chy c
trn my o Java l c th chy c trn bt k my tnh, h iu hnh no c my o Java.
Vit mt ln, chy mi ni (Write Once, Run Anywhere).
Macinto
sh
Trnh bin dch

Bytecode
c lp nn
(Platform
independent)


Trnh
thng
dch
Java

(Java
Interpreter)
IB
M
Spar
c

Macintosh
compile
r
compile
r
compile
r
IB
M
M
Spar
c
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 8
- H tr mnh cho vic pht trin ng dng: Cng ngh Java pht trin mnh m nh vo
i gia Sun Microsystem cung cp nhiu cng c, th vin lp trnh phong ph h tr cho
vic pht trin nhiu loi hnh ng dng khc nhau c th nh: J2SE (Java 2 Standard Edition)
h tr pht trin nhng ng dng n, ng dng client-server; J2EE (Java 2 Enterprise
Edition) h tr pht trin cc ng dng thng mi, J2ME (Java 2 Micro Edition) h tr pht
trin cc ng dng trn cc thit b di ng, khng dy,
1.2.3 Mi trng pht trin ng dng
vit m ngun java chng ta c th s dng trnh son tho NotePad hoc mt
s mi trng pht trin h tr ngn ng java nh: Jbuilder ca hng Borland, Visual
Caf ca hang Symantec, JDeveloper ca hng Oracle, Visual J++ ca Microsoft,
NetBean ca hng Sun Microsystem, Jcreator ca XINOX software Trong khun
kh gio trnh ny cng nh hng dn sinh vin thc hnh chng ti dng cng c
JCreator LE v3.50 c th download ti http://www.jcreator.com/download.htm hoc
NetBean 7.0 c th download ti http://www.netbeans.org/downloads/.
B cng c pht trin JDK (Java Development Kit)
Sun Microsystem a ra ngn ng lp trnh Java qua sn phm c tn l Java
Development Kit (JDK). Ba phin bn chnh l:
Java 1.0 - S dng ln u vo nm 1995
Java 1.1 a ra nm 1997 vI nhiu u im hn phin bn trc.
Java 2 Phin bn mi nht
JDK bao gm Java Plug-In, chng cho php chy trc tip Java Applet hay
JavaBean bng cch dng JRE thay cho s dng mi trng thc thi m c nh ca
trnh duyt.
JDK cha cc cng c sau:
- Trnh bin dch, 'javac'
C php: javac [options] sourcecodename.java
- Trnh thng dch, 'java'
C php: java [options] classname
- Trnh dch ngc, 'javap'
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 9
javap dch ngc bytecode v in ra thng tin v cc thuc tnh (cc trng),
cc phng thc ca mt lp.
C php: javap [options] classname
- Cng c sinh ti liu, 'javadoc'
Tin ch ny cho php ta to ra tp HTML da trn cc li gii thch trong
m chng trnh (phn nm trong cp du /*.... */).
C php: javadoc [options] sourcecodename.java
- Chng trnh tm li - Debug, 'jdb
C php: jdb [options] sourcecodename.java
Hay jdb -host -password [options] sourcecodename.java
1.2.4 Cu trc ng dng Java
Chng ta c th xy dng cc loi chng trnh Java nh sau:
Applets
Applet l chng trnh c to ra s dng trn Internet thng qua cc trnh duyt h
tr Java nh IE hay Netscape. Bn c th dng Java xy dng Applet. Applet c nhng
bn trong trang Web. Khi trang Web hin th trong trnh duyt, Applet s c ti v v thc
thi ti trnh duyt.
ng dng thc thi qua dng lnh
Cc chng trnh ny chy t du nhc lnh v khng s dng giao din ha. Cc
thng tin nhp xut c th hin ti du nhc lnh.
ng dng ha
y l cc chng trnh Java chy c lp cho php ngi dng tng tc qua giao din
ha.
Servlet
Java thch hp pht trin ng dng nhiu lp. Applet l chng trnh ha chy
trn trnh duyt ti my trm. cc ng dng Web, my trm gi yu cu ti my ch. My
ch x l v gi kt qu tr li my trm. Cc Java API chy trn my ch chu trch nhim x
l ti my ch v tr li cc yu cu ca my trm. Cc Java API chy trn my ch ny m
rng kh nng ca cc ng dng Java API chun. Cc ng dng trn my ch ny c gi l
cc Servlet. hoc Applet ti my ch. X l Form ca HTML l cch s dng n gin nht
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 10
ca Servlet. Chng cn c th c dng x l d liu, thc thi cc giao dch v thng
c thc thi thng qua my ch Web.
ng dng c s d liu
Cc ng dng ny s dng JDBC API kt ni ti c s d liu. Chng c th l Applet
hay ng dng, nhng Applet b gii hn bi tnh bo mt.

1.2.5 Cc cu trc chng trnh Java
Chng trnh JAVA u tin
Chng ta hy bt u t chng trnh Java c in nht vi mt ng dng n gin.
Chng trnh sau y cho php hin th mt thng ip:
// This is a simple program called First.java
class First
{
public static void main(String args[])
{
System.out.println(My first program in Java);
}
}
Tn file ng vai tr rt quan trng trong Java. Chng trnh bin dch Java chp nhn
phn m rng .java. Trong Java, m lnh phi nm trong cc lp. Bi vy tn lp v tn file
phi trng nhau. Java phn bit ch hoa v ch thng (case-sensitive). V d tn file First
v first l hai file khc nhau.
bin dch m ngun, ta s dng trnh bin dch java. Trnh bin dch xc nh tn ca file
ngun ti dng lnh nh m t di y:
C:\jdk1.2.1\bin>javac First.java
Trnh dch java to ra file First.class cha cc m bytecodes. Nhng m ny cha th thc thi
c. chng trnh thc thi c ta cn dng trnh thng dch java interpreter
Lnh c thc hin nh sau:
C:\jdk1.2.1\bin>java First
Kt qu s hin th trn mn hnh nh sau: My first program in Java
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 11

Phn tch chng trnh u tin
// This is a simple program called First.java
K hiu // dng thuyt minh dng lnh. Trnh bin dch s b qua dng thuyt
minh ny. Java cn h tr thuyt minh nhiu dng. Loi thuyt minh ny c th bt u vi /*
v kt thc vi */
/*This is a comment that
extends to two lines*/
/ *This is
a multi line
comment */
Dng k tip khai bo lp c tn First. to mt lp thm ta bt u vi t kho class, k
n l tn lp (v cng chnh l tn file).

class First
Tn lp ni chung nn bt u bng ch in hoa. T kho class khai bo nh ngha lp.
First l tn ca lp. Mt nh ngha lp nm trn vn nm gia hai ngoc mc m ({) v
ng (}). Cc ngoc ny nh du bt u v kt thc mt khi lnh.

public static void main(String args[ ])
y l phng thc chnh, t y chng trnh bt u vic thc thi ca mnh. Tt c
cc ng dng java u s dng mt phng thc main ny. Chng ta s tm hiu tng t
trong lnh ny.
T kho public l mt ch nh truy xut. N cho bit thnh vin ca lp c th c truy
xut t bt c u trong chng trnh. Trong trng hp ny, phng thc main c khai
bo public, bi vy JVM c th truy xut phng thc ny.
T kho static cho php main c gi ti m khng cn to ra mt th hin (instance) ca
lp. Nhng trong trng hp ny, bn copy ca phng thc main c php tn ti trn b
nh, thm ch khng c mt th hin ca lp c to ra. iu ny rt quan trng v JVM
trc tin gi phng thc main thc thi chng trnh. V l do ny phng thc main cn
phi l tnh (static). N khng ph thuc vo cc th hin ca lp c to ra.
T kho void thng bo cho my tnh bit rng phng thc s khng tr li bt c gi tr no
khi thc thi chng trnh.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 12
Phng thc main() s thc hin mt s tc v no , n l im mc m t tt c cc
ng dng Java c khi ng.
String args[] l tham s dng trong phng thc main. Cc bin s trong du ngoc n
nhn tng thng tin c chuyn vo main. Nhng bin ny l cc tham s ca phng thc.
Thm ch ngay khi khng c mt thng tin no c chuyn vo main, phng thc vn
c thc hin vi cc d liu rng khng c g trong du ngoc n.
args[] l mt mng kiu String. Cc i s (arguments) t cc dng lnh c lu vo
mng. M nm gia du ngoc mc ({ }) ca main c gi l method block. Cc lnh
c thc thi trong main cn c vit trong khi ny.

System.out.println(My first program in Java);
Dng lnh ny hin th chui My first program in Java trn mn hnh. Pht biu
println() to ra mt cng xut (output). Phng thc ny cho php hin th chui c truyn
vo ra System.out. y System l mt lp nh trc, n cho php truy nhp vo h
thng v out l mt chui xut c kt ni vi du nhc (console).

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 13

CHNG 2 : CN BN V NGN NG JAVA
2.1. Cc thnh phn ngn ng
Phn u ca mt chng trnh Java xc nh thng tin mi trng. lm c vic
ny, chng trnh c chia thnh cc lp hoc cc gi ring bit. Nhng gi ny s c ch
dn trong chng trnh. Thng tin ny c ch ra vi s tr gip ca lnh nhp import. Mi
chng trnh c th c nhiu hn mt lnh nhp. Di y l mt v d v lnh nhp:
import java. awt.*;
Lnh ny nhp gi awt. Gi ny dng to cc i tng GUI. y java l tn ca
th mc cha gi awt. K hiu * ch tt c cc lp thuc gi ny.
Trong java, tt c cc m, bao gm cc bin v cch khai bo nn c thc hin trong phm vi
mt lp. Bi vy, tng khai bo lp c tin hnh sau lnh nhp. Mt chng trnh n gin
c th ch c mt vi lp. Nhng lp ny c th m rng thnh cc lp khc. Mi lnh u
c kt thc bi du chm phy ;. Chng trnh cn c th bao gm cc ghi ch, ch dn.
Khi dch, chng trnh dch s t loi b cc ghi ch ny.
Dng c bn ca mt lp c xc nh nh sau :
Import java.io.*;
class classname
{
/* y l dng ghi ch*/
int num1,num2; // Khai bo bin vi cc du phy gia cc bin
Show()
{
// Method body
statement (s); // Kt thc bi du chm phy
}
}
Token l n v ring l, nh nht, c ngha i vi trnh bin dch ca mt chng trnh
Java. Mt chng trnh java l tp hp ca cc token
Cc token c chia thnh nm loi:
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 14
nh danh (identifiers): Dng th hin tn bin, phng thc, hoc cc lp. Chng
trnh bin dch s xc nh cc tn ny l duy nht trong chng trnh. Khi khai bo nh
danh cn lu cc im sau y:
Mi nh danh c bt u bng mt ch ci, mt k t gch di (_) hay du
$. Cc k t tip theo c th l ch ci, ch s, du $ hoc mt k t c gch
di.
Mi nh danh ch c cha hai k t c bit ny l du gch di (_) v du
$. Ngoi ra khng c php s dng bt k k t c bit no khc.
Cc nh danh khng c cha du cch (space).
T kho/t d phng (Keyword/Reserve Words): Mt s nh danh c Java xc
nh trc. Ngi lp trnh khng c php s dng chng nh mt nh danh. V d
class, import l nhng t kho.
K t phn cch (separator): Thng bo cho trnh bin dch vic phn nhm cc phn t
ca chng trnh. Mt vi k t phn cch ca java c ch ra di y: { } ; ,
Nguyn dng (literals): L cc gi tr khng i trong chng trnh. Nguyn dng c th
l cc s, chui, cc k t hoc cc gi tr Boolean. V d 21, A, 31.2, This is a
sentence l nhng nguyn dng.
Cc ton t: Cc qu trnh nh gi, tnh ton c thc hin trn d liu hoc cc i
tng. Java c mt tp ln cc ton t. Chng ta s tho lun chi tit chng ny.
2.2. Bin, hng v cc kiu d liu
Cc ng dng lun x l d liu u vo v xut d liu kt qu u ra. u vo,
u ra, v kt qu ca cc qu trnh tnh ton u lin quan n d liu. Trong mi trng tnh
ton, d liu c phn lp theo cc tiu ch khc nhau ph thuc vo bn cht ca n. mi
tiu ch, d liu c mt tnh cht xc nh v c mt kiu th hin ring bit.
Java cung cp mt vi kiu d liu. Chng c h tr trn tt c cc nn. V d, d liu
loi int (integer) ca Java c th hin bng 4 bytes trong b nh ca tt c cc loi my bt
lun u chy chng trnh Java. Bi vy cc chng trnh Java khng cn phi thay i khi
chy trn cc nn khc nhau.
2.2.1. Trong Java kiu d liu c chia thnh hai loi:
- Cc kiu d liu nguyn thy (primitive)
Kiu d liu di theo Phm vi biu din M t
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 15
s bit gi tr
byte 8 -128 n 127 S liu kiu byte l mt loi
in hnh dng lu tr mt
gi tri bng mt byte. Chng
c s dng rng ri khi x
l mt file vn bn
char 16 \u0000 to u\ffff Kiu Char s dng lu tn
hoc cc d liu k t .V d
tn ngI lao ng
boolean 1 True hoc False D liu boolean dng lu
cc gi tr ng hoc sai
V d : Ngi lao ng c p
ng c yu cu ca cng ty
hay khng ?
short 16 -32768 n 32767 Kiu short dng lu cc s
c gi tr nh di 32767.V
d s lng ngi lao ng.
int 32 -2,147,483,648 n
+2,147,483,648
Kiu int dng lu mt s
c gi tr ln n
2,147,483,648.V d tng
lng m cng ty phi tr cho
nhn vin.
long 64 -
9,223,372,036854,7
75,808 n
+9,223,372,036854,
775,808
Kiu long c s dng
lu mt s c gi tr rt ln
n
9,223,372,036854,775,808
.V d dn s ca mt nc
float 32 -3.40292347E+38
n
+3.40292347E+38
Kiu float dng lu cc s
thp phn n
3.40292347E+38 V d : gi
thnh sn phm
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 16
double 64 -
1,797693134862315
70E+308 n
+1,79769313486231
570E+308
Kiu double dng lu cc
s thp phn c gi tr ln n
1,79769313486231570E+308
V d gi tr tn dng ca ngn
hng nh nc.
Bng 2.1 Kiu d liu nguyn thu
- Kiu d liu tham chiu (reference)
Kiu d liu M t
Mng (Array) Tp hp cc d liu cng kiu. V d : tn sinh vin
Lp (Class) Tp hp cc bin v cc phng thc.V d : lp Sinhvin
cha ton b cc chi tit ca mt sinh vin v cc phng thc
thc thi trn cc chi tit .
Giao din
(Interface)
L mt lp tru tng c to ra cho php ci t a tha k
trong Java.
Bng 2.2 Kiu d liu tham chiu
2.2.2. p kiu (Type casting)
C th bn s gp tnh hung khi cng mt bin c dng integer vi mt bin c dng
float. x l tnh hung ny, Java s dng tnh nng p kiu (type casting) ca cc phn mm
trc C, C++. Lc ny mt kiu d liu s chuyn i sang kiu khc. Khi s dng tnh cht
ny, bn cn thn trng v khi iu chnh d liu c th b sai gi tr.
on m sau y thc hin php cng mt gi tr du phy ng (float) vi mt gi tr nguyn
(integer).
float c=34.896751f; int b = (int)c +10;
u tin gi tr du phy ng c c i thnh gi tr nguyn 34. Sau n c cng vi 10
v kt qu l gi tr 44 c lu vo b.
S ni rng (widening) qu trnh lm trn s theo hng ni rng khng lm mt thng tin
v ln ca mi gi tr.Bin i theo hng ni rng chuyn mt gi tr sang mt dng khc
c rng ph hp hn so vi nguyn bn. Bin i theo hng li thu nh li (narrowwing)
lm mt thng tin v ln ca gi tr c chuyn i. Chng khng c thc hin khi thc
hin php gn. v d trn gi tr thp phn sau du phy s b mt.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 17
2.2.3. Cc bin
Cc ng dng s dng cc bin lu tr cc d liu cn thit hoc cc d liu c to
ra trong qu trnh thc thi chng trnh. Cc bin c xc nh bi mt tn bin v c mt
phm vi tc ng. Phm vi tc ng ca bin c xc nh mt cch r rng trong chng
trnh. Mi bin c khai bo trong mt khi chng trnh ch c tc ng trong phm vi khi
, khng c ngha v khng c php truy nhp t bn ngoi khi.
Vic khai bo mt bin bao gm 3 thnh phn: kiu bin, tn ca n v gi tr ban u c
gn cho bin (khng bt buc). khai bo nhiu bin ta s dng du phy phn cch cc
bin, Khi khai bo bin, lun nh rng Java phn bit ch thng v ch in hoa (case -
sensitive).
C php:
Datatype indentifier [=value] [, indentifier[=value] ];
V d: khai bo mt bin nguyn (int) c tn l counter dng lu gi tr ban u l 1, ta
c th thc hin pht biu sau y:
int counter = 1;
Java c nhng yu cu hn ch t tn bin m bn c th gn gi tr vo. Nhng hn ch ny
cng ging cc hn ch khi t tn cho cc nh danh m ta tho lun cc phn trc ca
chng ny.
2.2.4. Hng s
Hng s l nhng gi tr khng thay i trong qu trnh x l tnh ton.
Trong Java hng c khai bo bng t kha final
V d: final float PI=3.14f;
2.2.5. Ton t (Operation)
Mt chng trnh thc t bao hm vic to ra cc bin. Cc ton t kt hp cc gi tr
n hoc cc biu thc con thnh nhng biu thc mi, phc tp hn v c th tr v gi tr.
iu ny lin quan n vic thc hin cc php ton logic, s hc, quan h v so snh trn cc
biu thc.
a. Cc ton t s hc
Cc ton hng ca cc ton t s hc phi dng s. Cc ton hng kiu boolean khng s
dng c, song cc ton hng k t cho php s dng loi ton t ny. Mt vi kiu ton t
c lit k trong bng di y.

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 18
Ton t M t
+ Cng.Tr v gi tr tng hai ton hng
V d: 5+3 tr v kt qu l 8
- Tr
Tr v gi tr khc nhau gia hai ton hng hoc gi tr ph nh ca ton
hng.
V d: 5-3 kt qu l 2 v 10 tr v gi tr m ca 10
* Nhn
Tr v gi tr l tch hai ton hng.
V d: 5*3 kt qu l 15
/ Chia
Tr v gi tr l thng ca php chia
V d: 6/3 kt qu l 2
% Php ly modulo
Gi tr tr v l phn d ca php chia
V d: 10%3 gi tr tr v l 1
++ Tng dn
Tng gi tr ca bin ln 1. V d a++ tng ng vi a= a+1
-- Gim dn
Gim gi tr ca bin 1 n v. V d a-- tng ng vi a=a-1
+= Cng v gn gi tr
Cng cc gi tr ca ton hng bn tri vo ton hng bn phi v gn gi
tr tr v vo ton hng bn tri.
V d: c+=a tng ng c=c+a
-= Tr v gn gi tr
Tr cc gi tr ca ton hng bn tri vo ton ton hng bn phi v gn
gi tr tr v vo ton hng bn tri.
V d: c-= a tng ng vI c=c-a
*= Nhn v gn
Nhn cc gi tr ca ton hng bn tri vi ton ton hng bn phi v gn
gi tr tr v vo ton hng bn tri.
V d: c *= a tng ng vi c=c*a
/= Chia v gn
Chia gi tr ca ton hng bn tri cho ton ton hng bn phi v gn gi
tr tr v vo ton hng bn tri.
V d: c /= a tng ng vi c=c/a
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 19
%= Ly s d v gn
Chia gi tr ca ton hng bn tri cho ton ton hng bn phi v gn gi
tr s d vo ton hng bn tri.
V d: c%=a tng ng vi c=c%a
Bng 2.2 Cc ton t s hc
Chng trnh sau m t vic s dng ton t s hc
class ArithmeticOp {
public static void main(String args[]){
int p=5,q=12,r=20,s;
s=p+q;
System.out.println(p+q is +s);
s=p%q;
System.out.println(p%q is +s);
s*=r;
System.out.println(s*=r is +s);
System.out.println(Value of p before operation is +p);
p++;
System.out.println(Value of p after operation is +p);
double x=25.75,y=14.25,z;
z=x-y;
System .out.println(x-y is +z);
z-=2.50;
System.out.println(z-=2.50 is +z);
System.out.println(Value of z before operation is+z);
z--;
System.out.println(Value of z after operation is+z);
z=x/y;
System .out.println(x/y is +z);
}
}
u ra ca chng trnh l:
p+q is 17
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 20
p%q is 5
s*=r is 100
Value of p before operation is 9.0
Value of z after operation is 8.0
x/y is 1.8070175438596429
b. Ton t Bit
Cc ton t dang Bit cho php ta thao tc trn tng Bit ring bit trong cc kiu d liu
nguyn thu. Ton t Bit da trn c s i s Boolean. N thc hin php tnh trn hai bit c
v tr tng ng trn hai ton hng to ra mt kt qa mi. Mt vi dng ton t kiu ny
c lit k di y
Ton t M t
~ Ph nh bit (NOT)
Tr v gi tr m ca mt s. V d a=10 th ~a=-10
& Ton t AND
Tr v gi tr l 1 nu cc ton hng l 1 v 0 trong cc trng hp khc. V d
nu a=1v b=0 th a&b tr v gi tr 0
| Ton t OR
Tr v gi tr l 1 nu mt trong cc ton hng l 1 v 0 trong cc trng hp
khc. V d nu a=1v b=0 th a | b tr v gi tr 1
^ Exclusive OR
Tr v gi tr l 1 nu ch mt trong cc ton hng l 1 v tr v 0 trong cc
trng hp khc. V d nu a=1v b=1 th a^b tr v gi tr 0
>> Dch sang phi
Chuyn ton b cc bt cu mt s sang phi mt v tr, gi nguyn du ca s
m. Ton hng bn tri l s b dch cn s bn phi ch s v tr m cc bt cn
dch.
V d x=31 tc l 00011111 vy x>>2 s l 00000111.
<< Dch sang tri
Chuyn ton b cc bt cu mt s sang tri mt v tr, gi nguyn du cu s
m. Ton hng bn tri l s b dch cn s bn phi ch s v tr m cc bt cn
dch.
Bng 2.3 Cc ton t Bit
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 21
c. Cc ton t quan h
Cc ton t quan h kim tra mi quan h gia hai ton hng. Kt qu ca mt biu thc c
dng cc ton t quan h l nhng gi tr Boolean (logic ng hoc sai). Cc ton t quan
h c s dng trong cc cu trc iu khin.
Ton t M t
= = So snh bng
Ton t ny kim tra s tng ng ca hai ton hng
V d if (a= =b) tr v gi tri True nu gi tr ca a v b nh nhau
!= So snh khc
Kim tra s khc nhau ca hai ton hng
V d if (a!=b) Tr v gi tr true nu a khc b
> Ln hn
Kim tra gi tr ca ton hng bn phi ln hn ton hng bn tri hay khng
V du if(a>b) . Tr v gi tr true nu a ln hn b,ngc lai (nh hn hoc
bng ), tr v False
< Nh hn
Kim tra gi tr ca ton hng bn phi c nh hn ton hng bn tri hay khng
V du if(a<b) . Tr v gi tr true nu a nh hn b , ngc li (ln hn hoc
bng tr v False
>= Ln hn hoc bng
Kim tra gi tr ca ton hng bn phi c ln hn hoc bng ton hng bn tri
hay khng
V du if(a>=b) . Tr v gi tr true nu a ln hn hoc bng b , ngc li (nh
hn tr v False
<= Nh hn hoc bng
Kim tra gi tr ca ton hng bn phi c nh hn hoc bng ton hng bn tri
hay khng
V du if(a<=b) . Tr v gi tr true nu a nh hn hoc bng b , ngc li (ln
hn tr v false)
Bng 2.4 Cc ton t quan h
on chng trnh sau y m t vic s dng cc ton t quan h
class RelationalOp {
public static void main (String args[]){
float a= 10.0f;
double b=10.0;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 22
if (a== b)
System.out.println(a and b are equal);
else
System.out.println(a and b are not equal);
}
}
Kt qu chng trnh s hin th: a and b are not equal
Trong chng trnh trn c a v b l nhng s c du phy ng, dng d liu c khc nhau, a
l kiu float cn b l kiu double. Tuy vy chng khng phi l cng mt kiu. Bi vy khi
kim tra gi tr ca cc ton hng, kiu d liu cn phi c kim tra.
d. Cc ton t logic
Cc ton t logic lm vic vi cc ton hng Boolean. Mt vi ton t kiu ny c ch ra
di y
Ton t M t
&& V (AND)
Tr v mt gi tr ng (True) nu ch khi c hai ton t c gi tr True
V d: if (sciencemarks>90) && (mathmarks>75) th gn Y cho bin c
nhn hc bng
|| Hoc (OR)
Tr v gi tr True nu mt gi tr l True hoc c hai u l True
V d Nu age_category is Senior_citizen || special_category is handicapped
th gim gi tua l hnh. Gi cng s c gim nu t nht mt iu kin c
tha mn
! Ton hng n t NOT. Chuyn gi tr t True sang False v ngc li.
V d: Qu trnh thc thi cc dng lnh tip tc cho n khi kt thc chng
trnh.
Bng 2.5 Cc ton t logic
e. Cc ton t iu kin
Ton t iu kin l mt loi ton t c bit v n gm ba thnh phn cu thnh biu thc
iu kin
C php :
<biu thc 1> ? <biu thc 2>: <biu thc 3>;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 23
biu thc 1
Biu thc logic. Tr tr v gi tr True hoc False
biu thc 2
Gi tr tr v nu biu thc 1 xc nh l True
biu thc 3
Gi tr tr v nu biu thc 1 xc nh l False
Cu lnh sau y kim tra c nhng ngi i lm bng v thng c tui ln hn 65 khng v
gn mt tiu chun cho h. Nu nhng ngi ny c tui l 55, tiu chun gn l Regular
CommuterCategory =(CommuterAge>65)?Senior Citizen: Regular
f. Ton t gn
Ton t gn (=) dng gn mt gi tr vo mt bin. Bn c th gn nhiu gi tr n
nhiu bin cng mt lc.
V d on lnh sau gn mt gi tr cho bin num. Th gi tr trong bin num c gn cho
nhiu bin trn mt dng lnh n.
int num = 20000;
int p,q,r,s;
p=q=r=s=num;
Dng lnh cui cng c thc hin t phi qua tri. u tin gi tr bin num c gn cho
s, sau gi tr ca s c gn cho r v c tip nh vy.
g. Th t u tin ca cc ton t
Cc biu thc c vit ra ni chung gm nhiu ton t. Th t u tin quyt nh trt t
thc hin cc ton t trn cc biu thc. Bng di y lit k th t thc hin cc ton t
trong Java
Th t Ton t
1. Cc ton t n nh +,-,++,--
2. Cc ton t s hc v cc ton t dch nh *,/,+,-,<<,>>
3. Cc ton t quan h nh >,<,>=,<=,= =,!=
4. Cc ton t logic v Bit nh &&,II,&,I,^
5. Cc ton t gn nh =,*=,/=,+=,-=
Bng 2.6 Th t u tin
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 24
h. Thay i th t u tin
thay i th t u tin trn mt biu thc, bn c th s dng du ngoc n (). Tng
phn ca biu thc c gii hn trong ngoc n c thc hin trc tin. Nu bn s dng
nhiu ngoc n lng nhau th ton t nm trong ngoc n pha trong s thc thi trc, sau
n cc vng pha ngoi. Nhng trong phm vi mt ngoc n th quy tc th t u tin vn
gi nguyn tc dng.
2.3. Cc cu trc iu khin
2.3.1. Cu lnh if-else
Cu lnh if-else kim tra kt qu ca mt iu kin v thc thi mt thao tc ph hp trn
c s kt qu . Dng ca cu lnh if-elsse rt n gin
C php
If (conditon)
{ action 1 statements; }
else
{ action 2 statements; }
Condition: Biu thc Boolean nh ton t so snh. Biu thc ny tr v gi tr True hoc
False
action 1: Cc dng lnh c thc thi khi gi tr tr v l True
else: T kho xc nh cc cu lnh tip sau c thc hin nu iu kin tr v gi tr False
action 2: Cc cu lnh c thc thi nu iu kin tr v gi tr False
V d:
on chng trnh sau kim tra xem cc s l chn hay l v hin th thng bo ph hp
class CheckNumber
{
public static void main(String args[])
{
int num =10;
if(num %2 == 0)
System.out.println (num+ is an even number);
else
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 25
System.out.println (num +is an odd number);
}
}
on chng trnh trn num c gn gi tr nguyn l 10. Trong cu lnh if-else iu kin
num %2 tr v gi tr 0 v iu kin thc hin l True. Thng bo 10 is an even number
c in ra. Lu rng cho n gi ch c mt cu lnh tc ng c vit trong on if v
else, bi vy khng cn phi c a vo du ngoc mc.
2.3.2. Cu lnh switch-case
Pht biu switch-case c th c s dng ti cu lnh if-else. N c s dng trong
tnh hung mt biu thc cho ra nhiu kt qu. Vic s dng cu lnh switch-case cho php
vic lp trnh d dng v n gin hn.
C php
swich (expression)
{
case value:action 1 statement;
break;
case value:action 2 statement;
break;
:
:
case valueN: actionN statement; break;
default: default_action statement;
}
expession - Bin cha mt gi tr xc nh
value1,value 2,.valueN: Cc gi tr hng s ph hp vi gi tr trn bin expression .
action1,action2actionN: Cc pht biu c thc thi khi mt trng hp tng ng c gi
tr True
break: T kho c s dng b qua tt c cc cu lnh sau v ginh quyn iu khin
cho cu trc bn ngoi switch
default: T kha tu chn c s dng ch r cc cu lnh no c thc hin ch khi tt
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 26
c cc trng hp nhn gi tr False
default - action: Cc cu lnh c thc hin ch khi tt c cc trng hp nhn gi tr False
on chng trnh sau xc nh gi tr trong mt bin nguyn v hin th ngy trong tun c
th hin di dng chui. kim tra cc gi tr nm trong khong 0 n 6
V d: chng trnh s thng bo li nu nm ngoi phm vi trn.
class SwitchDemo
{
public static void main(String agrs[])
{
int day =4;
switch(day)
{
case 0 : System.out.println(Sunday);
break;
case 1 : System.out.println(Monday);
break;
case 2 : System.out.println(Tuesday);
break;
case 3 : System.out.println(Wednesday);
break;
case 4 : System.out.println(Thursday);
break;
case 5: System.out.println(Friday);
break;
case 6 : System.out.println(Satuday);
break;
default: System.out.println(Invalid day of week);
}
}
}
Nu gi tr ca bn day l 4 ,chng trnh s hin th Thursday,v c tip nh vy .
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 27
2.3.3. Vng lp While
Vng lp while c s dng khi vng lp c thc hin mi cho n khi iu kin
thc thi vn l True. S lng ln lp khng c xc nh trc song n s ph thuc vo
tng iu kin.
C php
while(condition)
{
action statement;
:
:
}
condition: Biu thc Boolean, n tr v gi tr True hoc False. Vng lp s tip tc cho n
khi no gi tr True c tr v.
action statement: Cc cu lnh c thc hin nu condition nhn gi tr True
V d: on chng trnh sau tnh giai tha ca s 5.Giai tha c tnh nh tch 5*4*3*2*1.
class WhileDemo
{
public static void main(String args[])
{
int a = 5,fact = 1;
while (a >= 1) {
fact *=a;
a--;
}
System.out.println(The Factorial of 5 is +fact);
}
}
v d trn, vng lp c thc thi cho n khi iu kin a>=1 l True. Bin a c khai bo
bn ngoi vng lp v c gn gi tr l 5. Cui mi vng lp, gi tri ca a gim i 1. Sau nm
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 28
vng gi tr ca a bng 0. iu kin tr v gi tr False v vng lp kt thc. Kt qu s c
hin th The factorial of 5 is 120
2.3.4. Vng lp for
Vng lp for c s dng khi vng lp c s ln lp bit trc.
C php
for (Biu thc 1; Biu thc 2; Biu thc 3)
{
action statement;
:
:
}
Biu thc1: khi to ban u
Biu thc 2: iu kin lp, vng lp cn thc hin khi bt2 cn ng
Biu thc 3: thit lp li
action statement: Cc cu lnh c thc hin nu condition nhn gi tr True
V d: on chng trnh sau hin thi tng ca 5 s chn u tin
class ForDemo
{
public static void main(String args[])
{
int i=1,sum=0;
for (i=1;i<=10;i+=2)
sum+=i;
System.out.println (sum of first five old numbers is +sum);
}
}
v d trn, i v sum l hai bin c gn cc gi tr u l 1 v 0 tng ng. iu kin c
kim tra v khi n cn nhn gi tr True, cu lnh tc ng trong vng lp c thc hin. Tip
theo gi tr ca i c tng ln 2 to ra s chn tip theo. Mt ln na, iu kin li c
kim tra v cu lnh tc ng li c thc hin. Sau nm vng, i tng ln 11, iu kin tr v
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 29
gi tr False v vng lp kt thc. Thng bo: Sum of first five odd numbers is 25 c hin
th.
2.3.5. Vng lp do/while
Vng lp do/while c s dng khi vng lp c thc hin mi cho n khi iu kin
thc thi vn l True. S lng ln lp khng c xc nh trc song n s ph thuc vo
tng iu kin.
C php
do{
action statement;
:
}while (condition)
condition: Biu thc Boolean, n tr v gi tr True hoc False. Vng lp s tip tc cho n
khi no gi tr True c tr v.
action statement: Cc cu lnh c thc hin nu condition nhn gi tr True
V d: on chng trnh sau tnh giai tha ca s 5.Giai tha c tnh nh tch 5*4*3*2*1.
class WhileDemo
{
public static void main(String args[])
{
int a = 5,fact = 1;
do {
fact *=a;
a--;
} while (a >= 1)
System.out.println(The Factorial of 5 is +fact);
}
}
v d trn, vng lp c thc thi cho n khi iu kin a>=1 l True. Bin a c khai bo
bn ngoi vng lp v c gn gi tr l 5. Cui mi vng lp, gi tri ca a gim i 1. Sau nm
vng gi tr ca a bng 0. iu kin tr v gi tr False v vng lp kt thc. Kt qu s c
hin th The factorial of 5 is 120.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 30
2.3.6. Cu trc lnh nhy (jump)
Lnh break: trong cu trc switch chng ta dng cu lnh break thot thi cu trc switch
trong cng cha n. Tng t nh vy, trong cu trc lp, cu lnh break dng that khi
cu trc lp trong cng cha n.
Lnh continue: dng tip tc vng lp trong cng cha n (ngc vi break).
Nhn (label): Khng ging nh C/C++, Java khng h tr lnh goto nhy n 1 v tr no
ca chng trnh. Java dng kt hp nhn (label) vi t kha break v continue thay
th cho lnh goto.

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 31
CHNG 3 : I TNG V LP
3.1. i tng v lp
3.2.1. Lp (class)
a. Khi nim
Chng ta c th xem lp nh mt khun mu (template) ca i tng (Object). Trong
bao gm d liu ca i tng (fields hay properties) v cc phng thc(methods) tc
ng ln thnh phn d liu gi l cc phng thc ca lp. Cc i tng c xy dng
bi cc lp nn c gi l cc th hin ca lp (class instance).

b. Khai bo/nh ngha lp
[access rights(tin t)] class <ClassName>
{
<kiu d liu> <field_1>;
<kiu d liu> <field_2>;
constructor
method_1
method_2
}
class: l t kha ca java
ClassName: l tn chng ta t cho lp
field_1, field_2: cc thuc tnh, cc bin, hay cc thnh phn d liu ca lp.
constructor: l s xy dng, khi to i tng lp.
method_1, method_2: l cc phng thc/hm th hin cc thao tc x l, tc ng ln cc
thnh phn d liu ca lp.
access rights: Quyn truy xut (public, private, protected)
V d: Khi bo lp SinhVien
public class SinhVien{
// khai bo cc phng thc v thuc tnh

}
3.2.2. i tng (object)
i tng l s c th ha ca lp. i tng c khai bo tng mnh bng t kha
new theo c php:
ClassName objectName = new ClassName();
V d: Khi bo i tng sinh vien A (A l mt sinh vin c th thuc lp SinhVien)
SinhVien A=new SinhVien( );
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 32
3.2. Bin lp v phng thc lp
3.2.1. Thuc tnh - bin lp (attribute)
Vng d liu (fields) hay thuc tnh (properties) ca lp c khai bo bn trong lp
nh sau:
class <ClassName>
{
// khai bo nhng thuc tnh ca lp
<tin t> <kiu d liu> < thuc tnh>;
//
}
xc nh quyn truy xut ca cc i tng khc i vi vng d liu ca lp ngi ta
thng dng 3 tin t sau:
- public: c th truy xut t tt c cc i tng khc
- private: mt lp khng th truy xut vng private ca 1 lp khc.
- protected: vng protected ca 1 lp ch cho php bn thn lp v nhng lp dn
xut t lp truy cp n.
V d: khai bo lp xemay
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 tnh c gi tr l 2 trong tt c
// cc th hin to ra t lp xemay
public static int sobanhxe = 2;
}
Thuc tnh nhasx, modelc th c truy cp n t tt c cc i tng khc.
Thuc tnh chiphisx ch c th truy cp c t cc i tng c kiu xemay
Thuc tnh thoigiansx, so c th truy cp c t cc i tng c kiu xemay v cc i
tng ca cc lp con dn xut t lp xemay
Lu : Thng thng an ton cho vng d liu ca cc i tng ngi ta trnh dng tin
t public, m thng chn tin t private ngn cn quyn truy cp n vng d liu ca mt
lp t cc phng thc bn ngoi lp .
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 33

3.2.2. Phng thc (method)
Hm hay phng thc (method) trong Java l khi lnh thc hin cc chc nng, cc hnh vi
x l ca lp ln vng d liu.
a. Khai bo phng thc:
<Tin t> <kiu tr v> <Tn phng thc> (<danh sch i s>)
{
<khi lnh>;
[return];
}
xc nh quyn truy xut ca cc i tng khc i vi cc phng thc ca lp ngi ta
thng dng cc tin t sau:
- public: phng thc c th truy cp c t bn ngoi lp khai bo.
- protected: c th truy cp c t lp khai bo v nhng lp dn xut t n.
- private: ch c truy cp bn trong bn thn lp khai bo.
- static: phng thc lp dng chung cho tt c cc th hin ca lp, c ngha l
phng thc c th c thc hin k c khi khng c i tng ca lp cha
phng thc .
- final: phng thc c tin t ny khng c khai bo chng cc lp dn xut.
- abstract: phng thc khng cn ci t (khng c phn source code), s c hin
thc trong cc lp dn xut t lp ny.
- synchoronized: dng ngn cc tc ng ca cc i tng khc ln i tng
ang xt trong khi ang ng b ha. Dng trong lp trnh miltithreads.
<kiu tr v>: c th l kiu void, kiu c s hay mt lp.
<Tn phng thc>: t theo qui c ging tn bin.
<danh sch thng s>: c th rng
Lu :
Thng thng trong mt lp cc phng thc nn c khai bo dng t kha public, khc vi
vng d liu thng l dng tin t private v mc ch an ton. Nhng bin nm trong mt
phng thc ca lp l cc bin cc b (local) v nn c khia to sau khi khai bo.
V d:
public class xemay
{
public String nhasx;
public String model;
private float chiphisx;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 34
protected int thoigiansx;
// so luong so cua xe may: 3, 4 so
protected int so;
// l bin tnh c gi tr l 2 trong tt c
// cc th hin to ra t lp xemay
public static int sobanhxe = 2;
public float tinhgiaban()
{
return 1.5 * chiphisx;
}
}

b. Khi to mt i tng (Constructor)
Contructor tht ra l mt loi phng thc c bit ca lp. Constructor dng gi t ng
khi khi to mt th hin ca lp, c th dng khi gn nhng gi tr mc nh. Cc
constructor khng c gi tr tr v, v c th c tham s hoc khng c tham s. Constructor
phi c cng tn vi lp v c gi n dng t kha new.
Nu mt lp khng c constructor th java s cung cp cho lp mt constructor mc nh
(default constructor). Nhng thuc tnh, bin ca lp s c khi to bi cc gi tr mc nh
(s: thng l gi tr 0, kiu lun l l gi tr false, kiu i tng gi tr null, )
Lu : thng thng an ton, d kim sot v lm ch m ngun chng trnh chng ta nn
khai bo mt constructor cho lp.
V d:
public class xemay
{
//
public xemay()
}
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;
// hoc
// this.nhasx = s_nhasx;
// this.model = s_model;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 35
// this.chiphisx = f_chiphisx;
// this.thoigiansx = i_thoigiansx;
// this.so = i_so;
}
}
c. Bin this
Bin this l mt bin n tn ti trong tt c cc lp trong ngng ng java. Mt class trong
Java lun tn ti mt bin this, bin this c s dng trong khi chy v tham kho n bn
thn lp cha n.
V d:
<tin t> class A
{
<tin t> int <field_1>;
<tin t> String <field_2>;
// Contructor ca lp A
public A(int par_1, String par_2)
{
this.field_1 = par_1;
this.field_2 = par_2;
}
<tin t> <kiu tr v> <method_1>()
{
//
}
<tin t> <kiu tr v> <method_2>()
{
this.method_1()
//
}
}


d. Khai bo chng phng thc (overloading method)
Vic khai bo trong mt lp nhiu phng thc c cng tn nhng khc tham s (khc kiu
d liu, khc s lng tham s) gi l khai bo chng phng thc (overloading method).
V d:
public class xemay
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 36
{
// khai bo fields
public float tinhgiaban()
return 2 * chiphisx;
}
public float tinhgiaban(float huehong)
{
return (2 * chiphisx + huehong);
}
}
e. c im hng i tng trong java
H tr nhng nguyn tc c bn ca lp trnh hng i tng, tt c cc ngn ng lp
trnh k c java u c ba c im chung: tnh ng gi (encapsulation), tnh a hnh
(polymorphism), v tnh k tha (inheritance).
3.3. Phng thc finalize()
Trong java khng c kiu d liu con tr nh trong C, ngi lp trnh khng cn phi
qu bn tm v vic cp pht v gii phng vng nh, s c mt trnh dn dp h thng m
trch vic ny. Trnh dn dp h thng s dn dp vng nh cp pht cho cc i tng trc
khi hy mt i tng.
Phng thc finalize() l mt phng thc c bit c ci t sn cho cc lp. Trnh dn dp
h thng s gi phng thc ny trc khi hy mt i tng. V vy vic ci t mt s thao
tc gii phng, dn dp vng nh cp pht cho cc i tng d liu trong phng thc
finalize() s gip cho ngi lp trnh ch ng kim sot tt qu trnh hy i tng thay v
giao cho trnh dn dp h thng t ng. ng thi vic ci t trong phng thc finalize() s
gip cho b nh c gii phng tt hn, gp phn ci tin tc chng trnh.
V d:
class A
{
// Khai bo cc thuc tnh
public void method_1()
{
//
}
protected void finalize()
{
// C th dng ng tt c cc kt ni
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 37
// vo c s d liu trc khi hy i tng.
//
}
}
3.4.Gi (packages)
Vic ng gi cc lp li to thnh mt th vin dng chung gi l package. Mt
package c th cha mt hay nhiu lp bn trong, ng thi cng c th cha mt package
khc bn trong.
khai bo mt lp thuc mt gi no y ta phi dng t kha package. Dng khai bo gi
phi l dng u tin trong tp tin khai bo lp. Cc tp tin khai bo lp trong cng mt gi
phi c lu trong cng mt th mc.
Lu : Vic khai bo import tt c cc lp trong gi s lm tn b nh. Thng thng chng ta
ch nn import nhng lp cn dng trong chng trnh.
V d:
package phuongtiengiaothong;
class xemay
{
//
}
class xega extends xemay
{
//
}
Khi mun s dng lp xemay vo chng trnh ta s khai bo nh sau:

import phuongtiengiaothong.xemay;

3.5. ng gi (encapsulation)
C ch ng gi trong lp trnh hng i tng gip cho cc i tng du i mt
phn cc chi tit ci t, cng nh phn d liu cc b ca n, v ch cng b ra ngoi nhng g
cn cng b trao i vi cc i tng khc. Hay chng ta c th ni i tng l mt thnh
t h tr tnh ng gi.
n v ng gi c bn ca ngn ng java l class. Mt class nh ngha hnh thc ca mt i
tng. Mt class nh r nhng thnh phn d liu v cc on m ci t cc thao tc x l
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 38
trn cc i tng d liu . Java dng class xy dng nhng i tng. Nhng i tng
l nhng th hin (instances) ca mt class.
Mt lp bao gm thnh phn d liu v thnh phn x l. Thnh phn d liu ca mt lp
thng bao gm cc bin thnh vin v cc bin th hin ca lp. Thnh phn x l l cc thao
tc trn cc thnh phn d liu, thng trong java ngi gi l phng thc. Phng thc l
mt thut ng hng i tng trong java, trong C/C++ ngi ta thng dng thut ng l
hm.


Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 39
CHNG 4 : THA K V A HNH
4.1. Tha k (inheritance)
4.1.1. Lp k tha
Mt lp con (subclass) c th k tha tt c nhng vng d liu v phng thc ca mt
lp khc lp cha (siu lp - superclass).









Nh vy vic to mt lp mi t mt lp bit sao cho cc thnh phn (fields v methods)
ca lp c cng s thnh cc thnh phn (fields v methods) ca lp mi. Khi ta gi lp
mi l lp dn xut (derived class) t lp c (superclass). C th lp c cng l lp c dn
xut t mt lp no y, nhng i vi lp mi va to th lp c l mt lp siu lp trc
tip (immediate supperclass).
Dng t kha extends ch lp dn xut.
V d:
// super class B
class B{
//
}
// sub class A
class A extends B
{
//
}
4.1.2. Khi bo phng thc chng
Tnh k tha gip cho cc lp con nhn c cc thuc tnh/phng thc public v
protected ca lp cha. ng thi cng c th thay th cc phng thc ca lp cha bng cch
khai bo chng. Chng hn phng thc tinhgiaban() p dng trong lp xega s cho kt qu
gp 2.5 ln chi ph sn xut thay v gp 2 chi ph sn xut ging nh trong lp xemay.
Superclass(B)

// attribute

// methods

Subclass (A)

// attribute

// methods

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 40
V d:
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 cp 3 tin t/t kha h tr tnh k tha ca lp:
- public: lp c th truy cp t cc gi, chng trnh khc.
- final: Lp hng, lp khng th to dn xut (khng th c con), hay i khi ngi ta
gi l lp v sinh.
- abstract: Lp tru tng (khng c khai bo cc thnh phn v cc phng thc
trong lp tru tng). Lp dn xut s khai bo, ci t c th cc thuc tnh,
phng thc ca lp tru tng.
Ch : Trong Java khng cho php a k tha, ngha l 1 lp con ch k tha duy nht t 1
lp cha (khc vi C++), ngc li 1 lp cha c th cho php nhiu lp con k tha.
4.2. a hnh (polymorphism)
Tnh a hnh cho php ci t cc lp dn xut khc nhau t mt lp ngun. Mt i
tng c th c nhiu kiu khc nhau gi l tnh a hnh.
V d:
class A_Object
{
//
void method_1()
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 41
{
//
}
}
class B_Object extends A_Object
{
//
void method_1()
{
//
}
}
class C
{
public static void main(String[] args)
{
// To mt mng 2 phn t kiu A
A_Object arr_Object = new A_Object[2];
B_Object var_1 = new B_Object();
// Phn t u tin ca mng arr_Object[0]tham
// chiu n 1 i tng kiu B_Object dnxut
// t 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 lp for trong on chng trnh trn:
- Vi i = 0 th bin var_2 c kiu l B_Object, v lnh var_2.method_1() s gi thc hin
phng thc method_1 ca lp B_Object.
- Vi i = 1 th bin var_2 c kiu l A_Object, v lnh var_2.method_1() s gi thc hin
phng thc method_1 ca lp A_Object.
Trong v d trn i tng var_2 c th nhn kiu A_Object hay B_Object. Hay ni cc khc,
mt bin i tng kiu A_Object nh var_2 trong v d trn c th tham chiu n bt
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 42
k i tng no ca bt k lp con no ca lp A_Object (v d var_2 c th tham chiu n
i tng var_1, var_1 l i tng ca lp B_Object dn xut t lp A_Object). Ngc li
mt bin ca lp con khng th tham chiu n bt k i tng no ca lp cha.
4.3. Phng thc tu tng v lp tru tng
Lp tru tng (abtract class) l lp khng c khai bo cc thuc tnh thnh phn v
cc phng thc. Cc lp dn xut ca n s khai bo thuc tnh, ci t c th cc phng
thc ca lp tru tng.
Phng thc tru tng (abstract method) l phng thc khng c ni dung, ch c
khai bo trong lp tru tng.
V d:
abstract class A
{
abstract void method_1(); // phng thc tru tng
}
public class B extends A
{
public void method_1()
{
// ci t chi tit cho phng thc method_1
// trong lp con B.
//
}
}
public class C extends A
{
public void method_1()
{
// ci t chi tit cho phng thc method_1
// trong lp con C.
//
}
}
Lu : Cc phng thc c khai bo dng cc tin t private v static th khng c khai
bo l tru tng abstract. Tin t private th khng th truy xut t cc lp dn xut, cn tin
t static th ch dng ring cho lp khai bo m thi.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 43
4.4. Giao din (interface)
4.3.1.Khi nim interface
Nh chng ta bit mt lp trong java ch c mt siu lp trc tip hay mt cha duy
nht (n tha k). trnh i tnh phc tp ca a tha k (multi-inheritance) trong lp trnh
hng i tng, Java thay th bng giao tip (interface). Mt lp c th c nhiu giao tip
(interface) vi cc lp khc tha hng thm vng d liu v phng thc ca cc giao tip
ny.

4.3.2.Khai bo interface
Interface c khai bo nh mt lp. Nhng cc thuc tnh ca interface l cc hng
(khai bo dng t kha final) v cc phng thc ca giao tip l tru tng (mc d khng c
t kha abstract).
Trong cc lp c ci t cc interface ta phi tin hnh ci t c th cc phng thc ny.
V d:
public interface sanpham
{
static final String nhasx = Honda VN;
static final String dienthoai = 08-8123456;
public int gia(String s_model);
}
// khai bo 1 lp c ci t interface
public class xemay implements sanpham
{
// ci t li phng thc ca giao din trong lp
public int gia(String s_model)
{
if (s_model.equals(2005))
return (2000);
else
return (1500);
}
public String chobietnhasx()
{
return (nhasx);
}
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 44
C mt vn khc vi lp l mt giao din (interface) khng ch c mt giao din cha trc
tip m c th dn xut cng lc nhiu giao din khc (hay c nhiu giao din cha). Khi
n s k tha tt c cc gi tr hng v cc phng thc ca cc giao din cha. Cc giao din
cha c lit k thnh chui v cch nhau bi du phy ,. Khai bo nh sau:
public interface InterfaceName extends interface1, interface2, interface3
{
//
}
4.5. Lp ni

Lp ni l lp c khai bo bn trong 1 lp khc. Lp ni th hin tnh ng gi cao
v c th truy xut trc tip bin ca lp cha.
V d:
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 d trn th chng trnh dch s to ra hai lp vi hai files khc nhau: A.class v
B.class
4.6. Lp v sinh
Lp khng th c lp dn xut t n (khng c lp con) gi l lp v sinh, hay ni
cch khc khng th k tha c t mt lp v sinh. Lp v sinh dng hn ch, ngn
nga cc lp khc dn xut t n.
khai bo mt lp l lp v sinh, chng ta dng t kha final class. Tt c cc phng
thc ca lp v sinh u v sinh, nhng cc thuc tnh ca lp v sinh th c th khng v
sinh.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 45
V d:
public final class A
{
public final int x;
private int y;
public final void method_1()
{
//
}
public final void method_2()
{
//
}
}

4.7. V d minh ha
V d: Minh ha tnh a hnh (polymorphism) trong phn cp k tha thng qua vic m t v
x l mt s thao tc c bn trn cc i tng hnh hc.
// nh ngha lp tru tng c s tn Shape trong
// tp tin Shape.java
public abstract class Shape extends Object
{
// tr v din tch ca mt i tng hnh hc shape public double area()
{
return 0.0;
}
// tr v th tch ca mt i tng hnh hc shape
public double volume()
{
return 0.0;
}
/* Phng thc tru tng cn phi c hin thc trong nhng lp con tr v tn i tng
hnh hc shape thch hp*/
public abstract String getName();
}
// end class Shape

// nh ngha lp Point trong tp tin Point.java
public class Point extends Shape
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 46
{
protected int x, y; // Ta x, y ca 1 im
// constructor khng tham s.
public Point()
{
setPoint( 0, 0 );
}
// constructor c tham s.
public Point(int xCoordinate, int yCoordinate)
{
setPoint( xCoordinate, yCoordinate );
}
// gn ta x, y cho 1 im
public void setPoint( int xCoordinate, int yCoordinate )
{
x = xCoordinate;
y = yCoordinate;
}
// ly ta x ca 1 im
public int getX()
{
return x;
}

/* Phng thc tru tng cn phi c hin thc trong nhng lp con tr v tn i tng
hnh hc shape thch hp*/
public abstract String getName();
} // end class Shape

// nh ngha lp Point trong tp tin Point.java
public class Point extends Shape
{
protected int x, y; // Ta x, y ca 1 im
// constructor khng tham s.
public Point()
{
setPoint( 0, 0 );
}
// constructor c tham s.
public Point(int xCoordinate, int yCoordinate)
{
setPoint( xCoordinate, yCoordinate );
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 47
// gn ta x, y cho 1 im
public void setPoint( int xCoordinate, int yCoordinate )
{
x = xCoordinate;
y = yCoordinate;
}
// ly ta x ca 1 im
public int getX()
{
return x;
}

// ly ta y ca 1 im
public int getY()
{
return y;
}
// Th hin ta ca 1 im di dng chui
public String toString()
{
return "[" + x + ", " + y + "]";
}
// tr v tn ca i tng shape
public String getName()
{
return "Point";
}
} // end class Point
nh ngha mt lp cha Shape l mt lp tru tng dn xut t Object v c 3 phng thc
khai bo dng tin t public. Phng thc getName() khai bo tru tng v vy n phi c
hin thc trong cc lp con. Phng thc area() (tnh din tch) v phng thc volume() (tnh
th tch) c nh ngha v tr v 0.0. Nhng phng thc ny s c khai bo chng trong
cc lp con thc hin chc nng tnh din tch cng nh th tch ph hp vi nhng i
tng hnh hc tng ng (ng trn, hnh tr, )
Lp Point: dn xut t lp Shape. Mt im th c din tch v th tch l 0.0, v vy nhng
phng thc area() v volume() ca lp cha khng cn khai bo chng trong lp Point, chng
c tha k nh nh ngha trong lp tru tng Shape. Nhng phng thc khc nh
setPoint() gn ta x, y cho mt im, cn phng thc getX(), getY() tr v ta x,
y ca mt im. Phng thc getName() l hin thc cho phng thc tru tng trong lp
cha, nu nh phng thc getName() m khng c nh ngha th lp Point l mt lp tru
tng.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 48
// nh ngha lp Circle trong tp tin Circle.java
public class Circle extends Point
{
// Dn xut t lpPoint
protected double radius;
// constructor khng tham s
public Circle()
{
// ngm gi n constructor ca lp cha
setRadius( 0 );
}
// constructor c tham s
public Circle( double circleRadius, int xCoordinate,int yCoordinate )
{
// gi constructorca lp cha
super( xCoordinate, yCoordinate );
setRadius( circleRadius );
}
// Gn bn knh ca ng trn
public void setRadius( double circleRadius )
{
radius = ( circleRadius >= 0 ? circleRadius:0 );
}
// Ly bn knh ca ng trn
public double getRadius()
{
return radius;
}
// Tnh din tch ng trn Circle
public double area()
{
return Math.PI * radius * radius;
}
// Biu din ng trn bng mt chui
public String toString()
{
return "Center = " + super.toString() +"; Radius = " + radius;
}
// tr v tn ca shape
public String getName()
{
return "Circle";
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 49
} // end class Circle
Lp Circle dn xut t lp Point, mt ng trn c th tch l 0.0, v vy phng thc
volume() ca lp cha khng khai bo chng, n s tha k t lp Point, m lp Point th tha
k t lp Shape. Din tch ng trn khc vi mt im, v vy phng thc tnh din tch
area() c khai bo chng. Phng thc getName() hin thc phng thc tru tng
khai bo trong lp cha, nu phng thc getName() khng khai bo trong lp Circle th n s
k tha t lp Point. Phng thc setRadius dng gn mt bn knh (radius) mi cho mt
i tng ng trn, cn phng thc getRadius tr v bn knh ca mt i tng ng
trn.
// nh ngha lp hnh tr Cylinder
// trong tp tin Cylinder.java.
public class Cylinder extends Circle
{
// chiu cao ca Cylinder
protected double height;
// constructor khng c tham s
public Cylinder()
{
// ngm gi n constructor ca lp cha
setHeight( 0 );
}
// constructor c tham s
public Cylinder(double cylinderHeight, double cylinderRadius, int xCoordinate,int yCoordinate)
{
// Gi constructor ca lp cha
super( cylinderRadius, xCoordinate, yCoordinate );
setHeight( cylinderHeight );
}
// Gn chiu cao cho Cylinder
public void setHeight( double cylinderHeight )
{
height = ( cylinderHeight >= 0) ? cylinderHeight : 0 ;
// Ly chiu cao ca Cylinder
public double getHeight()
{
return height;
}
// Tnh din tch xung quanh ca Cylinder
public double area()
{
return 2 * super.area() + 2 * Math.PI * radius * height;
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 50
// Tnh th tch ca Cylinder
public double volume()
{
return super.area() * height;
}
// Biu din Cylinder bng mt chui
public String toString()
{
return super.toString() + "; Height = " + height;
}
// tr v tn ca shape
public String getName()
{
return "Cylinder";
}
} // end class Cylinder
Lp Cylinder dn xut t lp Circle. Mt Cylinder (hnh tr) c din tch v th tch khc vi
mt Circle (hnh trn), v vy c hai phng thc area() v volume() cn phi khai bo chng.
Phng thc getName() l hin thc phng thc tru tng trong lp cha, nu phng thc
getName() khng khai bo trong lp Cylinder th n s k tha t lp Circle. Phng thc
setHeight dng gn chiu cao mi cho mt i tng hnh tr, cn phng thc getHeight
tr v chiu cao ca mt i tng hnh tr.
// Test.java
// Kim tra tnh k tha ca Point, Circle, Cylinder vi lp tru tng Shape.
// Khai bo th vin
import java.text.DecimalFormat;
public class Test
{
// Kim tra tnh k tha ca cc i tng hnh hc
public static void main( String args[] )
{
// To ra cc i tng hnhhc
Point point = new Point( 7, 11 );
Circle circle = new Circle( 3.5, 22, 8 );
Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 );
// To mt mng cc i tng hnh hc
Shape arrayOfShapes[] = new Shape[ 3 ];
// arrayOfShapes[ 0 ] l mt i tng Point
arrayOfShapes[ 0 ] = point;
// arrayOfShapes[ 1 ] l mt i tng Circle
arrayOfShapes[ 1 ] = circle;
// arrayOfShapes[ 2 ] l mt i tng cylinder
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 51
arrayOfShapes[ 2 ] = cylinder;
// Ly tn v biu din ca mi i tng hnh hc
String output = point.getName() + ": " + point.toString() + "\n" +
circle.getName() + ": " + circle.toString() + "\n" +
cylinder.getName() + ": " + cylinder.toString();
DecimalFormat precision2 = new DecimalFormat( "0.00" );
// duyt mng arrayOfShapes ly tn, din tch, th tch
// ca mi i tng hnh hc trong mng.
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

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 52

CHNG 5 : MNG V CHUI
5.1. Mng 1 chiu
5.1.1. Khai bo v to mng
Mng c dng lu tr cc khon mc (items) cng kiu d liu lin k nhau trong
b nh. Mi ln ta khai bo kch thc ca mt mng, n s khng th thay i. D liu trn
mng c th l kiu d liu nguyn thu hoc i tng. Cng nh cc bin, ta c th gn cc
gi tr vo mng ti cc phn t c to ra trong mng. Nu khng, Java s gn gi tr mc
nh vo tt c cc phn t ca mng, gi tr mc nh ph thuc vo kiu d liu. V d : nu
kiu d liu l nguyn (int) th gi tr mc nh ban u s l 0.
Mng c th c khai bo bng 3 cch :
Cch khai bo M t C php V d
Ch n thun
khai bo
Ch n thun khai
bo mng
Datatype identifier[] char ch[ ];
//khai bo mng k t
c tn ch
Khai bo v
to mng
Khai bo v cp
pht b nh cho cc
phn t mng s
dng ton t new
Datatype identifier[]
= new datatype [size ]
char ch[] = new
char [10 ];
//Khai bo mt mng
ch v lu tr 10 k t
Khai bo,
kin to v
khi to
Khai bo mng, cp
pht b nh cho n
v gn cc gi tr
ban u cho cc
phn t ca mng
Datatype identifier[]
= {value1,value2};
char ch []
= {A,B,C,D };
//khai bo mng ch v
lu 4 ch ci kiu k
t
Bng 2.3 Khai bo mng
xc nh tn v s phn t ca mng ta cn xem xt cc phn t mng.S phn t bt u
vi 0 cho phn t u,1 cho phn t th hai v c tip nh vy.

5.1.2. Sp xp mng
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 53
S dng cc thut ton sp xp nh: Thut ton i ch trc tip, thut ton ni bt, thut
ton chn trc tip, thut ton vun ng,
ng dng cc thut ton trn sp xp dy s (mng s) theo chiu tng dn, hoc gim
dn vi dy s nhp vo t bn phm.
5.1.3. Mng i tng
Tng t nh mng d liu thng thng. Chng ta c th khai bo cc mng i tng
t cc lp c nh ngha.
V d:
// khai bao lp
class A{
// khai bo thuc tnh
// phng thc

}
// khai bo mng i tng m c kch thc l 10.
A[] m=new A[10];

// s dng c mng m ta phi khi to tng i tng l thnh phn ca mng
//(thng s dng cu trc lp).

5.1.4. Mng a chiu.
Cc mng a chiu trong Java c coi nh l cc mng i tng cha cc tham chiu
n cc mng khc
S chiu c quy nh bi s cp ngoc vung [].
Sau u l mt s v d:
- B khi to mng cho mng hai chiu:
int[][] mac1 = { { 1, 2, 3, }, { 4, 5, 6, } };
- Mt mng ng c to ra.
int[][] mac2 = new int[n][m];
- Mt mng vi cc vc-t c kch thc khc nhau. Mng ph w xc nh di
ca cc vc-t ny.
V d:
public class MultiArr {
public static void main(String[] arg) {
int w[] = { 2, 3, 4 };
int n = 3;
int[][] m3 = new int[n][]; // sizes of the rows are set dynamically
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 54
for(int i = 0; i < m3.length; i++) {
m3[i] = new int[w[i]];
for (int j = 0; j < m3[i].length; j++)
m3[i][j] = i + j;
}
for (int i = 0; i < m3.length; i++) {
System.out.println("Size of the " + i + "-th row " + m3[i].length);
String out = " ";
for(int j = 0; j < m3[i].length; j++) out += " " + m3[i][j];
System.out.println(out);
}
}
}
5.2. Chui (string)
Chui l tp cc k t ng lin nhau c gii hn trong du ngoc kp nh: hello word;
hoc.itop.vn
Sau y chng ta hy cng tm hiu cc vn v chui trong java.
5.3.1. Khai bo v khi to Java cung cp cc kiu khai bo v khi to string nh sau:
- Khai bo mt xu rng
V d: String str1=new String( ); //khi to str1 l mt xu trng
- Khai bo v khi to mt xu bng mt chui cho trc.
V d: String str2=new String(Hello word); //khi to str2 bng Hello word
- Khai bo v khi to mt xu bng mt mng k t cho trc.
V d: char ch[ ]={ a , b , c , d , e }; String str3=new String[ch];
Kt qu str3 l xu abcde Khai bo v khi to mt xu bng cch chn mt vi k t
trong mt mng k t cho trc.
V d: char ch[ ]={ a , b , c , d , e };
String str4=new String[ch,0,2];
Kt qu str4 l xu ab, v khi to ny s khi to xu str4 l ly 2 k t t v tr th 0.
5.3.2. Thao tc ni chui (cng 2 chui)
- Cng 2 chui bng du cng (+)
V d: String str1=new String(Hello word );
System.out.printf( toi muon noi +str1);
Kt qu ca on m trn s in ra dong ch: toi muon noi Hello word
Ch :java c kh nng t chuyn bt c d liu kiu s no khi cng vo String.
V d: int n=100;
Float m=100.123;
System.out.printf( so nguyen la +n+ so thuc la +m);
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 55
Kt qu s in ra chui s: so nguyen la 100 so thuc la 100.123c ngha l java s chuyn
n v m thnh kiu string ri sau s ni vo chui pha trc.
Khi cng chui bng du cng ,kt qu s a ra bng cch ni 2 chui vo v tr cui cng
ca chui u tin. Cch ni chui ny thng c s dng khi in ra mn hnh hoc
chuyn kiu d liu s sang string.
- Ni 2 chui bng phng thc concat( )
Khc vi vic ni chui bng du cng l ni 2 chui ti v tr cui cng ca chui u
tin.thay vo phng thc ny s tr v mt chui mi.
V d: String str1,str2,str3;
str1= Welcome ;
str2= hoc.itop.vn ;
str3=str1.concat(str2);
kt qu l str3 s bng Welcome hoc.itop.vn
5.3.3. Cc hm x l vi chui trong java
- substring
v d: String str1=new String( hoc.itop.vn );
String str2=str1.substring(0,3);
Kt qu l str2 bng hoc.c ngha l phng thc substring s ly 3 k t trong xu
str1 bt u t k t th 0.
- length tr v di chui
v d: String str1=new String( hoc.itop.vn );
int n=str1.length( );
kt qu l n=11 ngha l phng thc length( ) s tr v di xu k t
- charAt
v d: String str1=new String( itop.vn );
char ch=str1.charAt(3);
kt qu l ch=p ngha l phng thc charAt( 3) s tr v k t th 3 tnh t v tr
th 0 trong xu str1
- equals: phng thc ny so snh 2 chui.kt qu tr v c kiu Boolean
v d: String str1=new String( hello );
String str2=new String( ITOP );
Boolean k=str1.equals(str2);
Kt qu tr v l k=false ngha l phng thc equals s so snh tng k t trong 2
chui.
Ch l trong java c phn bit kiu ch hoa v ch thng nh: iTop # ITOP
- compareTo:
So snh 2 chui ln lt th t tng k t ca 2 chui ngha l: int
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 56
a=str1.compareTo(str2);
a=0 nu s2=s1
a>0 nu s2>s1
a<0 nu s2<s1
V d: String str1=new String( kc );
String str2=new String( kavcb );
int a=str1.compareTo(str2);\\ kt qu l a>0 v kc > kavcb
- toCharArray
L phng thc i chui thnh mng k t.
V d: String str1==new String( itop.vn );
char [ ] ch=str1.toCharArray( ); //
//kt qu l mng ch={ i , t , o , p , . , v , n }
- indexOf
V d:
String str1=new String( hoc.itop.vn);
String str2=new String(op);
String str3=new String(ab);
int n=str1.indexOf(str2);
int m=str1.indexOf(str3);
//kt qu l n=7 v m=-1 ngha l phng thc ny s tr v v tr ca chui str2 v str3
trong chui str1.nu khng tm thy s tr v gi tr -1
- startsWith( )
Tr v gi tr kiu Boolean
V d: String str1= hoc.itop.vn ;
String str2= hoc ;
boolean k=str1.startsWith(str2);
kt qu l k=true ngha l phng thc ny s kim tra xem chui mt c bt u bng
chui 2 hay khng
- endsWith( )
Cng nh hm startsWith( ) kt qu tr v l kiu boolean.
V d: String str1= hoc.itop.vn ;
String str2= com ;
boolean k=str1.endsWith(str2);
kt qu l k=false ngha l hm ny s kim tra xem chui str1 c kt thc l chui str2
hay khng.
- copyValueOf( )
phng thc ny tr v mt chui c rt ra t mt mng k t.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 57
V d: char ch[ ]={ a , b , c , d , e };
String str1=String.copyValueOf(2,2);
Kt qu l str1=cd ngha l xu str1 c rt ra t mng ch bng cch ly 2 phn t
ca mng v ly t v tr th 2.
- toUpperCase( )
Phng thc ny s tr v ch hoa ca chui
V d: String str1= hello ;
String str2=str1.toUpperCase( );
Kt qu l str2= HELLO ;
- toLowerCase( )
Phng thc ny s tr v ch thng ca chui
V d: String str1= hello ;
String str2=str1.toLowerCase( );
Kt qu l str2= hello ;
- Chuyn kiu d liu t String sang s cc phng thc chuyn kiu d liu t String
sang s nm trong gi th vin java.lang ta c bng cc phng thc nh sau:


V d: String str1=new String(124);
int n=Integer.parseInt(str1);
kt qu l n=124
5.3. Cc v d minh ho
V d 1: Nhp k t t bn phm
import java.io.*;
/* gi ny cung cp th vin xut nhp h thng thng qua nhng lung d //liu v h thng file.*/
class InputChar
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 58
{
public static void main(String args[])
{
char ch = ;
try
{
ch = (char) System.in.read();
}
catch(Exception e)
{
System.out.println(Nhp li!);
}
System.out.println(Ky tu vua nhap: + ch);
}
}
V d 2: Nhp d liu s
import java.io.*;
class inputNum
{
public static void main(String[] args)
{
int n=0;
try
{
BufferedReader in = new BufferedReader(new InputStreamReader(
System.in));
String s;
s = in.readLine();
n = Integer.parseInt(s);
}
catch(Exception e)
{
System.out.println(Nhp d liu b li !);
}
System.out.println(Bn va nhp s: + n);
}
}
V d 3: Nhp v xut gi tr cc phn t ca mt mng cc s nguyn.
class ArrayDemo
{
public static void main(String args[])
{
int arrInt[] = new int[10];
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 59
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]);
}
}

V d 4: Tm phn t c gi tr nh nht (Min) v ln nht (Max) trong mt mng.

// tm min

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);
}
}

// tm max
class MinMax2
{
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];
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 60
if(nums[i] > max) max = nums[i];
}
System.out.println("Min and max: " + min + " " + max);
}
}

V d 5: Sp xp mng dng phng php sp xp ni bt (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
System.out.print("Sorted array is:");
for(int i=0; i < size; i++)
System.out.print(" " + nums[i]);

System.out.println();
}
}

V d 6: Nhp v xut gi tr ca cc phn t trong mt mng hai chiu.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 61
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();
}
}
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 62
CHNG 6: LP TRNH WINDOW VI AWT
6.1. Gii thiu chung
Chng ny cung cp cho sinh vin nhng kin thc c bn xy dng giao din
(Graphic User Interface - GUI) ca chng trnh ng dng bng ngn ng java:
- Nhng nguyn tc thit k giao din.
- Nhng th vin, gi xy dng giao din: gm nhng lp (class), nhng giao tip (interface)
qun l s kin v nhng thnh phn (components) xy dng nn giao din ngi dng.
- B qun l trnh by (layout managers)
- X l s kin
Trong khun kh gio trnh lp trnh java cn bn ny chng ti trnh by vic thit k GUI
dng th vin awt (abstract windows toolkit). Vic thit kt GUI s trc quan, uyn chuyn
hn khi chng ta s dng th vin JFC (Java Foundation Class) s gii c gii thiu trong
chuyn java nng cao.

Gii thiu th vin awt
Th vin awt l b th vin dng xy dng giao din ngi dng cho mt chng
trnh ng dng c y cc thnh phn c bn nh: Label, Button, Checkbox, Radiobutton,
Choice, List, Text Field, Text Area, Scrollbar, Menu, Frame Ging nh cc API ca
Windows, java cung cp cho ngi lp trnh th vin awt. Nhng khc vi cc hm API, th
vin awt khng ph thuc h iu hnh. Th vin awt l nn tng, c s gip cho chng ta tip
cn vi th vin m rng JFC hiu qu hn.
Cu trc cy phn cp ca tt c nhng lp trong th vin awt chng ta c th xem chi tit
trong ti liu km theo b cng c j2se (phn API Specification)
6.2. Cc container v cc component
6.2.1.Component
Component l mt i tng c biu din ha c hin th trn mn hnh m ngi
dng c th tng tc c. Chng hn nh nhng nt nhn (button), nhng checkbox, nhng
scrollbar, Lp Component l mt lp tru tng.
java.lang.Object
java.awt.Component
6.2.2.Container
Container l i tng vt cha hay nhng i tng c kh nng qun l v nhm cc
i tng khc li. Nhng i tng con thuc thnh phn awt nh: button, checkbox, radio
button, scrollbar, list, ch s dng c khi ta a n vo khung cha (container).
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 63
Mt s i tng container trong Java:
- Panel: i tng khung cha n gin nht, dng nhm cc i tng, thnh
phn con li. Mt Panel c th cha bn trong mt Panel khc.
java.lang.Object
+java.awt.Component
+java.awt.Container
+java.awt.Panel
- Frame: khung cha Frame l mt ca s window hn hoi mc trn cng bao gm
mt tiu u v mt ng bin (border) nh cc ng dng windows thng thng
khc. Khung cha Frame thng c s dng to ra ca s chnh ca cc ng
dng.
java.lang.Object
+java.awt.Component
+java.awt.Container
+java.awt.Window
+java.awt.Frame
- Dialogs: y l mt ca s dng hp hi thoi (ca s dng ny cn c gi l pop-
up window), ca s dng ny thng c dng a ra thng bo, hay dng
ly d liu nhp t ngoi vo thng qua cc i tng, thnh phn trn dialog nh
TextField chng hn. Dialog cng l mt ca s nhng khng y chc nng nh
i tng khung cha Frame.
java.lang.Object
+java.awt.Component
+java.awt.Container
+java.awt.Window
+java.awt.Dialog
- ScrollPanes: l mt khung cha tng t khung cha Panel, nhng c thm 2 thanh
trt gip ta t chc v xem c cc i tng ln chon nhiu ch trn mn hnh
nh nhng hnh nh hay vn bn nhiu dng.
java.lang.Object
+java.awt.Component
+java.awt.Container
+java.awt.ScrollPane
6.2.3.Layout Manager
Khung cha container nhn cc i tng t bn ngoi a vo v n phi bit lm th
no t chc sp xp ch cho cc i tng . Mi i tng khung cha u c mt b
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 64
qun l chu trch nhim thc hin cng vic y l b qun l trnh by (Layout Manager).
Cc b qun l trnh by m th vin AWT cung cp cho ta bao gm:
- FlowLayout: Sp xp cc i tng t tri qua phi v t trn xung di. Cc i
tng u gi nguyn kch thc ca mnh.
- BorderLayout: Cc i tng c t theo cc ng vin ca khung cha theo cc
cnh West, East, South, North v Center tc ng, Ty, Nam, Bc v Trung tm hay
Tri, Phi, Trn, Di v Gia ty theo cch nhn ca chng ta.
- GridLayout: To mt khung li v hnh vi cc bng nhau. Cc i tng s t
va kch thc vi tng . Th t sp xp cng t tri qua phi v t trn xung
di.
- GridBagLayout: Tng t nh GridLayout, cc i tng khung cha cng c
a vo mt li v hnh.
Tuy nhin kch thc cc i tng khng nht thit phi va vi 1 m c th l 2, 3 hay
nhiu hn ty theo cc rng buc m ta ch nh thng qua i tng GridBagConstraint.
- Null Layout: Cch trnh by t do. i vi cch trnh by ny ngi lp trnh phi t
ng lm tt c t vic nh kch thc ca cc i tng, cng nh xc nh v tr
ca n trn mn hnh. Ta khng ph thuc vo nhng rng buc ng, ty , nam, bc
g c.

6.2.4.Thit k GUI cho chng trnh
a.To khung cha ca s chng trnh
Thng thng to ca s chnh cho chng trnh ng dng ta tin hnh cc bc:
- To i tng Frame
- Xc nh kch thc ca Frame
- Th hin Frame trn mn hnh
V d:
import java.awt.*;
class FrameDemo
{
public static void main(String args[])
{
// To i tng khung chaFrame
Frame fr = new Frame("My First Window") ;
// Xc nh kch thc, v tr ca Frame
fr.setBounds(0, 0, 640, 480);
// Hin th Frame
fr.setVisible(true);
}
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 65
Kt qu thc thi chng trnh:

b.To h thng thc n
i vi th vin awt, xy dng h thng thc n cho chng trnh ng dng chng ta c
th dng cc lp MenuBar, Menu, MenuItem, MenuShortcut

V d: To h thng thc n cho chng trnh Calculator
import java.awt.*;
import java.awt.event.*;
class Calculator
{
public static void main(String[] args)
{
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");
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 66
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);

// x l bin s kin ng ca s ng dng.
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
};
}
}
Kt qu thc thi chng trnh:

c.Gn Component vo khung cha
gn mt thnh phn, mt i tng component vo mt ca s (khung cha) chng
ta dng phng thc add ca i tng khung cha container.
V d:
import java.awt.*;
class AddDemo
{
public static void main(String args[])
{
// To i tng khung chaFrame
Frame fr = new Frame("AddDemo App");
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 67
// To i tng Component
Button buttOk = new Button(OK);
// Gn i tng nt nhn vo khung cha
fr.add(buttOk);
// Xc nh kch thc, v tr ca Frame
fr.setSize(100, 100);
// Hin th Frame
fr.setVisible(true);
}
}
d.Trnh by cc Component trong khung cha
Nh chng ta bit khung cha container nhn cc i tng t bn ngoi a vo v
n phi bit lm th no t chc sp xp ch cho cc i tng . Mi i tng
khung cha u c mt b qun l chu trch nhim thc hin cng vic y l b qun l
trnh by (Layout Manager). Chng ta s tm hiu chi tit v cc kiu trnh by ca th vin
AWT. Interface LayoutManager nh ngha giao tip cho nhng lp bit c lm th no
trnh by nhng trong nhng containers
- FlowLayout
public class FlowLayout extends Object
implements LayoutManager, Serializable
i vi mt container trnh by theo kiu FlowLayout th:
+ Cc component gn vo c sp xp theo th t t tri sang phi v t trn xung
di.
+ Cc component c kch thc nh mong mun.
+ Nu chiu rng ca Container khng ch cho cc component th chng t ng
to ra mt dng mi.
+ FlowLayout thng c dng sp xp cc button trong 1 panel.
+ Chng ta c th iu chnh khong cch gia cc component.
V d:
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"));
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 68
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:"));
fr.add(new TextField(20));
// phng thc pack() c gi s lm cho ca s
// hin hnh s c kch thc va vi kch thc
// trnh by b tr nhng thnh phn con ca n.
fr.pack();
fr.setVisible(true);
}
}
Kt qu thc thi chng trnh:

- BorderLayout
public class BorderLayout extends Object
implements LayoutManager2, Serializable
i vi mt container trnh by theo kiu BorderLayout th:
+ B trnh by khung cha c chia lm 4 vng: NORTH, SOUTH, WEST, EAST v
CENTER. (ng, Ty, Nam, Bc v trung tm). B trnh by loi ny cho php sp xp
v thay i kch thc ca nhng components cha trong n sao cho va vi 5 vng
NG, TY, NAM, BC, TRUNG TM.
+ Khng cn phi gn component vo cho tt c cc vng.
+ Cc component vng NORTH v SOUTH c chiu cao ty nhng c chiu rng
ng bng chiu rng vng cha.
+ Cc component vng EAST v WEST c chiu rng ty nhng c chiu cao ng
bng chiu cao vng cha.
+ Cc component vng CENTER c chiu cao v chiu rng ph thuc vo cc vng
xung quanh.
V d:
import java.awt.*;
class BorderLayoutDemo extends Frame
{
private Button north, south, east, west, center;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 69
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);
}
}
Kt qu thc thi chng trnh:


- GridLayout
public class GridLayout extends Object
implements LayoutManager
i vi mt container trnh by theo kiu GridLayout th:
+ B trnh by to mt khung li v hnh vi cc bng nhau.
+ Cc i tng s t va kch thc vi tng . Th t sp xp t tri qua phi v
t trn xung di.
V d:
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 70
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:"));
f.add(new TextField());
f.pack();
f.setVisible(true);
}
}
- GridBagLayout
public class GridBagLayout extends Object
implements LayoutManager2 (public interface LayoutManager2 extends
LayoutManager)
i vi mt container trnh by theo kiu GridBagLayout th:
+ Cc componets khi c a vo khung cha s c trnh by trn 1 khung li v
hnh tng t nh GridLayout. Tuy nhin khc vi GridLayout kch thc cc i tng
khng nht thit phi va vi 1 trn khung li m c th l 2, 3 hay nhiu hn ty
theo cc rng buc m ta ch nh thng qua i tng GridBagConstraints.
+ Lp GridBagConstraints dn xut t lp Object. Lp GridBagConstraints dng ch
nh rng buc cho nhng components trnh by trong khung cha container theo kiu
GridBagLayout.
gridx, gridy: v tr ca khung li v hnh m ta s a i tng con vo gridwidth,
gridheight: kch thc hay vng trnh by cho i tng con.
Insets: l mt bin i tng thuc lp Inset dng qui nh khong cch bin phn
cch theo 4 chiu (trn, di, tri, phi).
weightx, weighty: ch nh khong cch ln ra tng i ca cc i tng con vi
nhau
V d:
import java.awt.*;
public class GridBagLayoutDemo
{
public static void main(String arg[])
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 71
{
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
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;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 72
constraints.gridheight = 1;
constraints.gridwidth = 2;
layout.setConstraints(buttons[3], constraints);
// Rang buoc cho nut nhan thu 5
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;
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();
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 73
f.setVisible(true);
}
}
Kt qu thc thi chng trnh:


- Null Layout
Mt khung cha c trnh by theo kiu Null Layout c ngha l ngi lp trnh phi
t lm tt c t vic qui nh kch thc ca khung cha, cng nh kch thc v v tr
ca tng i tng component trong khung cha.
thit lp cch trnh by l Null Layout cho mt container ta ch vic gi phng thc
setLayout(null) vi tham s l null. Mt s phng thc ca lp tru tng Component
dng nh v v qui nh kch thc ca component khi a chng vo khung cha
trnh by theo kiu kiu t do:
Public void setLocation(Point p)
Public void setSize(Dimension p)
Public void setBounds(Rectangle r)
V d:
MyButton.setSize(new Dimension(20, 10));
MyButton.setLocation(new Point(10, 10));
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");
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 74
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);
fr.add(checkBut);
fr.add(li);
fr.setBounds(10, 10, 400, 200);
fr.setVisible(true);
}
}
Kt qu thc thi chng trnh:

f. Cc i tng khung cha Container
Nh chng ta bit container l i tng khung cha c kh nng qun l v cha
cc i tng (components) khc trong n.
Cc components ch c th s dng c khi a n vo 1 i tng khung cha l
container. Mi container thng gn vi mt LayoutManager (FlowLayout,
BorderLayout, GridLayout, GridBagLayout, Null Layout) qui nh cch trnh by v b
tr cc components trong mt container. Cc lai container trong java: Frame, Panel,
Dialog, ScrollPanes.
- Khung cha Frame
java.lang.Object
+--java.awt.Component
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 75
+--java.awt.Container
+--java.awt.Window
+--java.awt.Frame
Khung cha Frame l mt ca s window hn hoi mc trn cng bao gm mt tiu
u v mt ng bin (border) nh cc ng dng windows thng thng khc. Khung cha
Frame thng c s dng to ra ca s chnh ca cc ng dng.
Khung cha Panel c b qun l trnh by (LayoutManager)
mc nh l FlowLayout.
- Khung cha Panel
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Panel
Khung cha Panel c b qun l trnh by (LayoutManager) mc nh l FlowLayout.
i vi khung cha Panel th cc Panel c th lng vo nhau, v vy khung cha Panel thng
c dng b tr cc nhm components bn trong mt khung cha khc.
V d:
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 >>");
first = new Button("First");
Panel southPanel = new Panel();
southPanel.add(next);
southPanel.add(prev);
southPanel.add(first);
// BorderLayout.SOUTH: vng di
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);
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 76
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);
}
}
Kt qu thc thi chng trnh:

- Khung cha Dialog
java.lang.Object
+--java.awt.Component
+--java.awt.Container
+--java.awt.Window
+--java.awt.Dialog
Dialog l mt lp khung cha ta Frame v cn c gi l popup window. C hai loi dialog
ph bin:
Modal Dialog: s kha tt c cc ca s khc ca ng dng khi dialog dng ny cn
hin th.
Non-Modal Dialog: vn c th n cc ca s khc ca ng dng khi dialog dng ny
hin th. Mt ca s dng Dialog lun lun phi gn vi mt ca s ng dng (Frame).
to mt i tng khung cha Dialog ta c th dng mt trong cc constructor ca
n:
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 77
public Dialog (Frame parentWindow, boolean isModal)
public Dialog (Frame parentWindow, String title, boolean isModal)
parentWindow: ca s cha
title: tiu ca Dialog
isModal: true -> l Dialog dng modal
isModal: false -> l Dialog khng phi dng modal (hay non-modal)

6.3. X l s kin
6.3.1.M hnh x l s kin (Event-Handling Model)
trn chng ta ch cp n vn thit k giao din chng trnh ng dng m cha
cp n vn x l s kin. Nhng s kin c pht sinh khi ngi dng tng tc vi
giao din chng trnh (GUI). Nhng tng tc thng gp nh: di chuyn, nhn chut, nhn
mt nt nhn, chn mt MenuItem trong h thng thc n, nhp d liu trong mt vn bn,
ng ca s ng dng, Khi c mt tng tc xy ra th mt s kin c gi n chng
trnh. Thng tin v s kin thng c lu tr trong mt i tng dn xut t lp
AWTEvent. Nhng kiu s kin trong gi java.awt.event c th dng cho c nhng component
AWT v JFC. i vi th vin JFC th c thm nhng kiu s kin mi trong gi
java.swing.event.
Nhng lp s kin ca gi java.awt.event

C 3 yu t quan trng trong m hnh x l s kin:
- Ngun pht sinh s kin (event source)
- S kin (event object)
- B lng nghe s kin (event listener)
Ngun pht sinh s kin: l thnh phn ca giao din m ngi dng tc ng.
S kin: Tm tt thng tin v x kin xy ra, bao gm tham chiu n ngun gc pht sinh s
kin v thng tin s kin s gi n cho b lng nghe x l.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 78
B lng nghe: Mt b lng nghe l mt i tng ca mt lp hin thc mt hay nhiu
interface ca gi java.awt.event hay java.swing.event (i vi nhng component trong th vin
JFC). Khi c thng bo, b lng nghe nhn s kin v x l. Ngun pht sinh s kin phi
cung cp nhng phng thc ng k hoc hy b mt b lng nghe. Ngun pht sinh s
kin lun phi gn vi mt b lng nghe, v n s thng bo vi b lng nghe khi c s kin
pht sinh .
Nh vy ngi lp trnh cn lm hai vic:
- To v ng k mt b lng nghe cho mt component trn GUI.
- Ci t cc phng thc qun l v x l s kin Nhng interfaces lng nghe ca gi
java.awt.event

Mt i tng Event-Listener lng nghe nhng s kin khc nhau pht sinh t cc components
ca giao din chng trnh.
Vi mi s kin khc nhau pht sinh th phng thc tng ng trong nhng Event-Listener s
c gi thc hin.
Mi interface Event-Listener gm mt hay nhiu cc phng thc m chng cn ci t trong
cc lp hin thc (implements) interface . Nhng phng thc trong cc interface l tru
tng v vy lp (b lng nghe) no hin thc cc interface th lng nghe s tr thnh cc lp
tru tng.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 79
6.3.2.X l s kin chut
Java cung cp hai intefaces lng nghe (b lng nghe s kin chut) l MouseListener v
MouseMotionListener qun l v x l cc s kin lin quan n thit b chut. Nhng s
kin chut c th by cho bt k component no trn GUI m dn xut t
java.awt.component.

Cc phng thc ca interface MouseListener:
- public void mousePressed(MouseEvent event): c gi khi mt nt chut c
nhnv con tr chut trn component.
- public void mouseClicked(MouseEvent event): c gi khi mt nt chut c
nhn v nh trn component m khng di chuyn chut.
- public void mouseReleased(MouseEvent event): c gi khi mt nt chut nh
sa khi ko r.
- public void mouseEntered(MouseEvent event): c gi khi con tr chut vo
trong ng bin ca mt component.
- public void mouseExited(MouseEvent event): c gi khi con tr chut ra khi
ng bin ca mt component.

Cc phng thc ca interface MouseMotionListener:
- public void mouseDragged(MouseEvent even ): phng thc ny c gi khi
ngi dng nhn mt nt chut v ko trn mt component.
- public void mouseMoved(MouseEvent event): phng thc ny c gi khi di
chuyn chut trn component.
Mi phng thc x l s kin chut c mt tham s MouseEvent cha thng tin v s kin
chut pht sinh chng hn nh: ta x, y ni s kin chut xy ra. Nhng phng thc tng
ng trong cc interfaces s t ng c gi khi chut tng tc vi mt component. bit
c ngi dng nhn nt chut no, chng ta dng nhng phung thc, nhng hng s ca
lp InputEvent (l lp cha ca lp MouseEvent).
V d: Chng trnh tn MouseTracker bn di minh ha vic dng nhng phng thc ca
cc interfaces MouseListener v MouseMotionListener by v x l cc s kin chut
tng ng.
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()
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 80
{
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() + ", " + 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() + "]" );
// handle event when user moves mouse
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 81
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

Kt qu thc thi chng trnh:


6.3.3.X l s kin bn phm
x l s kin bn phm java h tr mt b lng nghe s kin l interface
KeyListener. Mt s kin bn phm c pht sinh khi ngi dng nhn v nh mt phm trn
bn phm. Mt lp hin thc KeyListener phi ci t cc phng thc keyPressed,
keyReleased v keyTyped. Mi phng thc ny c mt tham s l mt i tng kiu
KeyEvent. KeyEvent l lp con ca lp InputEvent.
Cc phng thc ca interface KeyListener:
- Phng thc keyPressed c gi khi mt phm bt k c nhn.
- Phng thc keyTyped c gi thc hin khi ngi dng nhn mt phm khng
phi phm hnh ng (nh phm mi tn, phm Home, End, Page Up, Page Down,
cc phm chc nng nh: Num Lock, Print Screen, Scroll Lock, Caps Lock, Pause).
- Phng thc keyReleased c gi thc hin khi nh phm nhn sau khi s kin
keyPressed hoc keyTyped.
V d: minh ha vic x l s kin chut thng qua cc phng thc ca interface
KeyListener. Lp KeyDemo bn di hin thc interface KeyListener, v vy tt c 3 phng
thc trong KeyListener phi c ci t trong chng trnh.
// KeyDemo.java
// Demonstrating keystroke events.
// Java core packages
import java.awt.*;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 82
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()
{
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 )
{
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() );
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 83
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
Kt qu thc thi chng trnh:



Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 84
6.4. Cc v d minh ha
V d 1: To b lng nghe bin c cho i tng khung cha Frame, v x l bin c ng ca
s.
import java.awt.*;
import java.awt.event.*;
public class WindowClosingDemo
{
public static void main(String args[])
{
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)
{
System.out.println("windowIconified...");
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 85
}
public void windowOpened(WindowEvent e)
{
System.out.println("windowOpened...");
}
}
C th dng lp tru tng WindowAdapter to ra b lng nghe.
public abstract class WindowAdapter extends Object implements WindowListener
(WindowAdapter hin thc interface WindowListener nn lp o ny cng c 7 phng thc
ging nh giao din WindowListener)
import java.awt.event.*;
class WindowCloser extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
System.out.println("windowClosing..");
System.exit(0);
}
}
V d 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, fals
//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);
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 86
}
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;
}
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
Kt qu thc thi chng trnh:

V d 3: TextComponent
import java.awt.*;
class TextComponentDemo extends Frame
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 87
{
private TextField textField;
private TextArea textArea;
private Button enter, clear;
public TextComponentDemo (String title)
{
super(title);
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)
{
TextComponentDemo f = new TextComponentDemo
("TextComponentDemo ");
f.setSize(300,200);
f.setVisible(true);
f.getTextField().requestFocus();
}
}
import java.awt.*;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 88
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"))
destination.setText("");
counter = 0;
}
}
}
Kt qu thc thi chng trnh:

V d 4: ListDemo
import java.awt.*;
public class ListDemo extends Frame
{ private List li;
private Label selected;
public ListDemo(String title)
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 89
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");
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();
if (!(source instanceof List))
{ return;
}
else
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 90
List li = (List) source;
String selected = li.getSelectedItem();
lab.setText(selected);
}
}
}
Kt qu thc thi chng trnh:

V d 5: Xy dng 1 lp khung cha Dialog dng hin th message ging nh hm
MessageBox trn Windows.
import java.awt.*;
import java.awt.event.*;
class DialogDemo
{
public static void main(String[] args)
{
createMenu();
}
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();
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 91
}
});
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);
}
});
}
// 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
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 92
Label Message = new Label(msg);
// Thiet lap che do trinh bay layout cho cac doi tuong.
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
Kt qu thc thi chng trnh:

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 93
CHNG 7 : X L NGOI L (EXCEPTION)
7.1. i tng Exception
7.1.1. Gii thiu chung v Exception
Exception l mt loi li c bit. Li ny xut hin vo lc thc thi chng trnh. Cc
trng thi khng bnh thng xy ra trong khi thi hnh chng trnh to ra cc exception.
Nhng trng thi ny khng c bit trc trong khi ta ang xy dng chng trnh. Nu bn
khng x l cc trng thi ny th chng trnh c th b kt thc t ngt. V d, vic chia cho
0 s to mt li trong chng trnh. Ngn ng Java cung cp c ch dng x l ngoi l rt
hiu qu. Vic x l ny lm hn ch ti a trng hp h thng b hng (crash) hay h thng
b ngt t ngt. Tnh nng ny lm cho Java tr thnh mt ngn ng lp trnh mnh.

Mt chng trnh nn c c ch x l ngoi l thch hp. Nu khng, chng trnh s
b ngt khi mt ngoi l xy ra. Trong trng hp , tt c cc ngun ti nguyn m h
thng cp khng c gii phng. iu ny gy lng ph ti nguyn. trnh trng
hp ny, tt c cc ngun ti nguyn m h thng cp nn c thu hi li. Tin trnh
ny i hi c ch x l ngoi l thch hp.

V d, xt thao tc vo ra (I/O) trong mt tp tin. Nu vic chuyn i kiu d liu
khng thc hin ng, mt ngoi l s xy ra v chng trnh b hy m khng ng tp
tin li. Lc tp tin d b h hi v cc ngun ti nguyn c cp pht cho tp tin
khng c tr li cho h thng.
Khi mt ngoi l xy ra, i tng (object) tng ng vi ngoi l c to ra.
i tng ny sau c truyn cho phng thc l ni m ngoi l xy ra. i tng
ny cha thng tin chi tit v ngoi l. Thng tin ny c th c nhn v v c x l.
Cc mi trng runtime nh IllegalAccessException, EmptyStackException v.v c
th to ra ngoi l. Chng trnh i khi c th t to ra ngoi l. Lp Throwable c
Java cung cp l lp trn cng ca lp Exception (lp u tin trong cy tha k), lp
ny l lp cha ca tt c cc ngoi l khc.
7.1.2. M hnh x l ngoi l
Trong Java, m hnh x l ngoi l gim st vic thc thi m pht hin ngoi l.
M hnh x l ngoi l ca Java c gi l catch and throw. Trong m hnh ny, khi
mt ngoi l xy ra, ngoi l s b chn v chng trnh chuyn n mt khi x l
ngoi l. Ngi lp trnh phi x l cc ngoi l khc nhau c th pht sinh trong
chng trnh. Cc ngoi l phi c x l, hoc thot khi chng trnh khi n xy ra.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 94
7.2. Catch exception
Khi try-catch c s dng thi hnh m hnh catch v throw ca vic x
l ngoi l. Khi try cha mt tp lnh c th thi hnh c. Cc ngoi l c th b
chn khi thi hnh tp lnh ny. Phng thc c kh nng to ra ngoi l c th c
khai bo trong khi try. Mt hay nhiu khi catch c th theo sau mt khi try. Cc
khi catch ny bt cc ngoi l c kh nng to ra trong trong khi try
try
{
// on m c kh nng gy ra ngoi l
}
catch(Exception e1)
{
// Nu cc lnh trong khi try to ra ngoi l c loi e1, th thc hin //x l
ngoi l nu khng chuyn xung khi 'catch' tip theo
}
catch(Exception e2)
{
// Nu cc lnh trong khi try to ra ngoi l c loi e2, th thc hin //x l
ngoi l nu khng chuyn xung khi 'catch' tip theo

}
catch(Exception eN)
{
// Nu cc lnh trong khi try to ra ngoi l c loi eN, th thc hin //x l
ngoi l nu khng chuyn xung khi 'catch' tip theo
}
finally
{
// khi lnh nay lun c thc hin cho d ngoi l c xy ra hay khng.
}
V d:
try
{
doFileProcessing(); // phng thc do ngi s dng nh ngha
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 95
displayResults();
}
catch (Exeption e) // th hin ca ngoi l
{
System.err.println(Error : + e.toString());
e.printStackTrace();
}

y, e l i tng ca lp Exception. Chng ta c th s dng i tng ny in
cc chi tit v ngoi l. Cc phng thc toString v printStackTrace c s dng
m t cc ngoi l xy ra. Hnh sau ch ra kt xut ca phng thc
printStackTrace()
x l c ngoi l no, ta phi ch ra kiu ngoi l tng ng. catch(Exception e)
Khi ngoi l khng bit thuc kiu no, chng ta c th s dng lp Exception bt
ngoi l .
Khi catch() bt gi bt c cc li xy ra trong khi thi hnh phng thc
doFileProcessing hay display. Nu mt li xy ra trong khi thi hnh phng thc
doFileProcessing(), lc phng thc displayResults() s khng bao gi c gi.
Chng trnh s chuyn n thc hin khi catch. c nhiu lp x l li hn, nh
l LookupException thay v mt i tng ngoi l chung (Exception e), li thc t c
th l mt i tng thuc lp 'LookupException hay mt trong s nhng lp con ca
n. Li s c truyn qua khi try catch cho ti khi gp catch ca n, nu khng tm
thy chng trnh phi dng thc hin v thot.

Cc khi cha nhiu Catch

Nhiu khi catch x l cc loi ngoi l khc nhau mt cch c lp. Mt chng trnh
cng c th cha cc khi try lng nhau. V d on m di y:
try
{
statement 1;
statement 2;
try
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 96
statement1;
statement2;
}
catch(Exception e) // ca khi try trong
{

}
}
catch(Exception e) // ca khi try ngoi
{
}


Khi s dng cc try lng nhau, khi try bn trong c thi hnh u tin. Bt k
ngoi l no b chn trong khi try s b bt gi trong cc khi catch theo sau. Nu
khi catch thch hp khng c tm thy th cc khi catch ca cc khi try bn
ngoi s c xem xt. Nu khng, Java Runtime Environment x l cc ngoi l.

Khi finally

Khi mt ngoi l xut hin, phng thc ang c thc thi c th b dng m khng
c hon thnh. Nu iu ny xy ra, th cc on m pha sau (v d nh on m c
chc nng thu hi ti nguyn, nh cc lnh ng tp vit cui phng thc) s khng
bao gi c gi. Java cung cp khi finally gii quyt vic ny. Khi finally thc
hin tt c cc vic thu dn khi mt ngoi l xy ra. Khi ny c th c s dng kt
hp vi khi try. Khi finally cha cc cu lnh thu hi ti nguyn v cho h thng
hay lnh in ra cc cu thng bo. Cc lnh ny bao gm:

ng tp tin.
ng ResultSet (c s dng trong chng trnh c s d liu).
ng li cc kt ni c to trong c s d liu.
V d:
try
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 97
doSomethingThatMightThrowAnException();
}
finally
{
cleanup();
}

Phng thc cleanup() c gi nu phng thc
doSomethingThatMightThrowAnException() gy ra ngoi l. Mt khc cleanup()
cng c gi ngay khi khng c ngoi l no xy ra v thc hin tip phn sau khi
lnh finally.

Khi finally l tu , khng bt buc. Khi ny c t sau khi catch cui cng.
Chng trnh s thc thi cu lnh u tin ca khi finally ngay sau khi gp cu lnh
return hay lnh break trong khi try.

Khi finally bo m lc no cng c thc thi, bt chp c ngoi l xy ra hay
khng
7.3. Throw exception
Cc ngoi l c th c to ra bng cch s dng t kho throw. T kha throw ch ra
mt ngoi l va xy ra. Ton hng ca throw l mt i tng thuc lp c tha k t
Throwable.

on lnh sau ch ra cch s dng ca lnh throw:

try
{
if (flag<0)
{
throw new MyException(); // user-defined
}
}

Mt phng thc c th to ra nhiu ngoi l. lm c iu ny ny, ta ch cn lit k
danh sch cc ngoi l m phng thc c th to ra trong phn nh ngha phng thc. Gi
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 98
s rng phng thc x() gi phng thc y(). Phng thc y() to ra mt ngoi l nhng
khng c x l. Trong trng hp ny, phng thc gi x() nn khai bo rng n c kh
nng to ra ngoi l nh ngoi l ca phng thc c gi y(). Ta nn khai bo khi try
catch trong phng thc x() m bo rng ngoi l khng c truyn cho cc phng thc
m gi phng thc ny (phng thc gi x()).

on m sau minh ha cch s dng ca t kho throws to nhiu ngoi l:

public class Example
{
// Cc ngoi l cch nhau bi du phy
public void exceptionExample() throws ExException, LookupException
{
try
{
// cc lnh
}
catch(ExException exmp)
{
}
catch(LookupException lkpex)
{
}
}
}

Trong v d trn, phng thc exceptionExample c t kho throws. T kho ny c theo
sau bi danh sch cc ngoi l m phng thc ny c th to ra Trong trng hp ny l
ExException v LookupException. Hm x l ngoi l cho cc phng thc ny nn khai
bo cc khi catch c th x l tt c cc ngoi l m cc phng c th gy ra.
Lp Exception thc thi giao din Throwable v cung cp cc tnh nng lm vic vi
ngoi l. N c ngha trong trng hp cc lp ngoi l c nh ngha bi ngi dng.
lm iu ny, mt lp con ca lp Exception c to ra. u im ca vic tha k lp
Exception l loi ngoi l mi ny c th c 'catch' c lp vi cc loi Throwable khc.
V d:

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 99
class ArraySizeException extends NegativeArraySizeException
{
ArraySizeException() // constructor
{
super(You have passed an illegal array size);
}
}
class ThrowDemo
{
int size, array[];
ThrowDemo(int s)
{
size=s;
try
{
checkSize();
}
catch(ArraySizeException e)
{
System.out.println(e);
}
}
void checkSize() throws ArraySizeException
{
if (size < 0)
throw new ArraySizeException();
else
System.out.println(The array size is ok.);
array = new int[3];
for (int i=0; i<3; i++)
array[i] = i+1;
}
public static void main(String arg[])
{
new ThrowDemo(Integer.parseInt(arg[0]));
}
}
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 100

Lp c nh ngha bi ngi dng ArraySizeException l lp con ca lp
NegativeArraySizeException. Khi mt i tng c to t lp ny, thng bo v ngoi l
c in ra. Phng thc checkSize() c gi to ra ngoi l ArraySizeException m
c ch ra bi lnh throws. Kch thc ca mng c kim tra trong cu trc if. Nu kch
thc l s m th i tng ca lp ArraySizeException c to.
7.4. Danh sch cc ngoi l
Bng sau y lit k mt s ngoi l:

Ngoi l Lp cha ca th t phn cp ngoi l
RuntimeException Lp c s cho nhiu ngoi l java.lang
ArthmeticException Li v s hc, v d nh chia cho 0.
IllegalAccessException Lp khng th truy cp.
IllegalArgumentException i s khng hp l.
ArrayIndexOutOfBoundsExeption Li trn mng.
NullPointerException Khi truy cp i tng null.
SecurityException C ch bo mt khng cho php thc
hin.
ClassNotFoundException Khng th np lp yu cu.
NumberFormatException Vic chuyn i t chui sang s thc
khng thnh cng.
AWTException Ngoi l v AWT
IOException Lp cha ca cc lp ngoi l I/O
FileNotFoundException Khng th nh v tp tin
EOFException Kt thc mt tp tin.
NoSuchMethodException Phng thc yu cu khng tn ti.
InterruptedException Khi mt lung b ngt.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 101
CHNG 8: XUT NHP TP TIN
8.1. Gii thiu chung
Vic lu tr d liu trong cc bin chng trnh, cc mng c tnh cht tm thi v d
liu s mt i khi bin ra khi tm nh hng ca n hoc khi chng trnh kt thc. Files gip
cho cc chng trnh c th lu tr mt lng ln d liu, cng nh c th lu tr d liu trong
mt thi gian di ngay c khi chng trnh kt thc. Trong chng ny chng ta s tm hiu
lm th no cc chng trnh java c th to, c, ghi v x l cc files tun t v cc file truy
cp ngu nhin thng qua mt s v d minh ha.
X l files l mt vn ht sc c bn, quan trng m bt k mt ngn ng lp trnh no cng
phi h tr nhng th vin, hm x l mt s thao tc c bn nht i vi kiu d liu file.
Xl files l mt phn ca cng vic x l cc lung, gip cho mt chng trnh c th c,
ghi d liu trong b nh, trn files v trao d liu thng qua cc kt ni trn mng.
8.2. Cc loi tp tin
8.2.1. Phn loi lung v tp tin
Chng ny s cung cp cho chng ta nhng kin thc c bn v lung (streams) v
files:
- Th vin cc lp v lung trong java: lung byte, lung k t.
- Xut nhp Console dng lung byte, lung k t.
- Xut nhp files dng lung k t v lung byte.
- Vn x l files truy cp ngu nhin dng lp RandomAccessFile.
- Xl file v th mc dng lp File.

8.2.2.Khi nim lung
Tt c nhng hot ng nhp/xut d liu (nhp d liu t bn phm, ly d liu t
mng v, ghi d liu ra a, xut d liu ra mn hnh, my in, ) u c quy v mt khi
nim gi l lung (stream). Lung l ni c th sn xut v tiu th thng tin. Lung
thng c h thng xut nhp trong java gn kt vi mt thit b vt l. Tt c cc lung u
c chung mt nguyn tc hot ng ngay c khi chng c gn kt vi cc thit b vt l khc
nhau. V vy cng mt lp, phng thc xut nhp c th dng chung cho cc thit b vt l
khc nhau. Chng hn cng mt phng thc c th dng ghi d liu ra console, ng thi
cng c th dng ghi d liu xung mt file trn a. Java hin thc lung bng tp hp cc
lp phn cp trong gi java.io. Java nh ngha hai kiu lung: byte v k t (phin bn gc
ch nh ngha kiu lung byte, v sau lung k t c thm vo trong cc phin bn v
sau).
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 102
Lung byte (hay lung da trn byte) h tr vic xut nhp d liu trn byte, thng c
dng khi c ghi d liu nh phn. Lung k t c thit k h tr vic xut nhp d liu kiu
k t (Unicode). Trong mt vi trng hp lung k t s dng hiu qu hn lung byte,
nhng mc h thng th tt c nhng xut nhp u phi qui v byte. Lung k t h tr hiu
qu ch i vi vic qun l, x l cc k t.
a. Lung byte (Byte Streams)
Cc lung byte c nh ngha dng hai lp phn cp. Mc trn cng l hai lp tru tng
InputStream v OutputStream. InputStream nh ngha nhng c im chung cho nhng lung
nhp byte. OutputStream m t cch x l ca cc lung xut byte. Cc lp con dn xut t hai
lp InputStream v OutputStream s h tr chi tit tng ng vi vic c ghi d liu trn
nhng thit b khc nhau. ng chong ngp vi hang lot rt nhiu cc lp khc nhau. ng
qu lo lng, mi khi bn nm vng, s dng thnh tho mt lung byte no th bn d dng
lm vic vi nhng lung cn li.
Lp lung byte ngha
BufferedInputStream Buffered input stream
BufferedOutputStream Buffered output stream
ByteArrayInputStream Input stream c d liu t mt mng byte
ByteArrayOutputStream Output stream ghi d liu n mt mng byte
DataInputStream Lung nhp c nhng phng thc c nhng kiu d liu
chun trong java
DataOutputStream Lung xut c nhng phng thc ghi nhng kiu d liu
chun trong java
FileInputStream Lung nhp cho php c d liu t file
FileOutputStream Lung xut cho php ghi d liu xung file
FilterInputStream Hin thc lp tru tng InputStream
FilterOutputStream Hin thc lp tru tng OutputStream
InputStream Lp tru tng, l lp cha ca tt c cc lp lung nhp kiu
Byte
OutputStream Lp tru tng, l lp cha ca tt c cc lp xut nhp kiu
Byte
PipedInputStream Lung nhp byte kiu ng (piped) thng phi c gn vi
mt lung
PipedOutputStream Lung nhp byte kiu ng (piped) thng phi c gn vi
mt lung nhp kiu ng to nn mt kt ni trao i d
liu kiu ng.
PrintStream Lung xut c cha phng thc print() v println()
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 103
PushbackInputStream L mt lung nhp kiu Byte m h tr thao tc tr li (push
back) v phc hi thao tc c mt byte (unread)
RandomAccessFile H tr cc thao tc c, ghi i vi file truy cp ngu nhin.
SequenceInputStream L mt lung nhp c to nn bng cch ni kt logic cc
lung nhp khc.
b. Lung k t (Character Streams)
Cc lung k t c nh ngha dng hai lp phn cp. Mc trn cng l hai lp tru
tng Reader v Writer. Lp Reader dng cho vic nhp d liu ca lung, lp Writer dng
cho vic xut d liu cua lung. Nhng lp dn xut t Reader v Writer thao tc trn cc
lung k t Unicode.
Lp lung k t ngha
BufferedReader Lung nhp k t c d liu vo mt vng m.
BufferedWriter Lung xut k t ghi d liu ti mt vng m.
CharArrayReader Lung nhp c d liu t mt mng k t
CharArrayWriter Lung xut ghi d liu ti mt mng k t
FileReader Lung nhp k t c d liu t file
FileWriter Lung xut k t ghi d liu n file
FilterReader Lp c d liu trung gian (lp tru tng)
FilterWriter Lp xut trung gian tru tng
InputStreamReader Lung nhp chuyn bytes thnh cc k t
LineNumberReader Lung nhp m dng
OutputStreamWriter Lung xut chuyn nhng k t thnh cc bytes
PipedReader Lung c d liu bng c ch ng ng
PipedWriter Lung ghi d liu bng c ch ng ng
PrintWriter Lung ghi vn bn ra thit b xut (cha phng thc print()
v println() )
PushbackReader Lung nhp cho php c v khi phc li d liu
Reader Lp nhp d liu tru tng
StringReader Lung nhp c d liu t chui
StringWriter Lung xut ghi d liu ra chui
Writer Lp ghi d liu tru tng

c. Nhng lung c nh ngha trc (The Predefined Streams)
Tt c cc chng trnh vit bng java lun t ng import gi java.lang. Gi ny c nh
ngha lp System, bao gm mt s c im ca mi trng run-time, n c ba bin lung
c nh ngha trc l in, out v err, cc bin ny l cc fields c khai bo static trong lp
System.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 104
a. System.out: lung xut chun, mc nh l console. System.out l mt i tng
kiu PrintStream.
b. System.in: lung nhp chun, mc nh l bn phm. System.in l mt i tng kiu
InputStream.
c. System.err: lung li chun, mc nh cng l console. System.err cng l mt i
tng kiu PrintStream ging System.out.

8.2.3.S dng lung Byte
Nh chng ta bit hai lp InputStream v OutputStream l hai siu lp (cha) i vi
tt c nhng lp lung xut nhp kiu byte. Nhng phng thc trong hai siu lp ny nm ra
cc li kiu IOException. Nhng phng thc nh ngha trong hai siu lp ny l c th dng
trong cc lp con ca chng. V vy tp cc phng thc l tp ti tiu cc chc nng nhp
xut m nhng lung nhp xut kiu byte c th s dng. Nhng phng thc nh ngha trong
lp InputStream v OutputStream

Phng thc ngha
InputStream int available( ) Tr v s lung bytes c th c c t lung nhp
void close( ) ng lung nhp v gii phng ti nguyn h thng gn vi
lung. Khng thnh cng s nm ra mt li IOException
void mark(int numBytes) nh du v tr hin ti trong lung nhp
boolean markSupported( ) Kim tra xem lung nhp c h tr phng thc mark() v
reset() khng.
int read( ) c byte tip theo t lung nhp
int read(byte buffer[ ]) c buffer.length bytes v lu vo trong vng nh buffer.
Kt qu tr v s bytes tht s c c
int read(byte buffer[ ], int offset, int numBytes) c numBytes bytes bt u t a ch
offset v lu vo trong vng nh buffer.
Kt qu tr v s bytes tht s c c
void reset( ) Nhy con tr n v tr c xc nh bi vic gi hm
mark() ln sau cng.
long skip(long numBytes) Nhy qua numBytes d liu t lung nhp OutputStream
void close( ) ng lung xut v gii phng ti nguyn h thng gn vi
lung. Khng thnh cng s nm ra mt li IOException
void flush( ) p d liu t b m phi ghi ngay xung lung (nu c)
void write(int b) Ghi byte d liu ch nh xung lung
void write(byte buffer[ ]) Ghi buffer.length bytes d liu t mng ch nh xung
lung
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 105
void write(byte buffer[ ], int offset, int numBytes) Ghi numBytes bytes d liu t v tr
offset ca mng ch nh buffer xung
lung

8.3. Nguyn tc c/ghi tp tin
8.3.1.c d liu t Console
Trc y, khi Java mi ra i thc hin vic nhp d liu t Console ngi ta ch
dng lung nhp byte. V sau th chng ta c th dng c lung byte v lung k t, nhng
trong mt s trng hp thc t c d liu t Console ngi ta thch dng lung kiu k t
hn, v l do n gin v d bo tr chng trnh. y vi mc ch minh ha chng ta dng
lung byte thc hin vic nhp xut Console.
V d: chng trnh minh ha vic c mt mng bytes t 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]);
}
}
8.3.2.Xut d liu ra Console
Tng t nh nhp d liu t Console, vi phin bn u tin ca java xut d liu ra
Console t ch c th s dng lung byte. K t phin bn 1.1 (c thm lung k t), xut
d liu ra Console c th s dng c lung k t v lung byte. Tuy nhin, cho n nay xut
d liu ra Console thng ngi ta vn dng lung byte. Chng ta kh quen thuc vi
phng thc print() v println(), dng xut d liu ra Console. Bn cnh chng ta cng
c th dng phng thc write().
V d: minh ha s dng phng thc System.out.write() xut k t X ra Console
import java.io.*;
class WriteDemo
{
public static void main(String args[])
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 106
int b;
b = 'X';
System.out.write(b);
System.out.write('\n');
}
}
8.3.3.c v ghi file dng lung Byte
To mt lung Byte gn vi file ch nh dng FileInputStream v FileOutputStream.
m mt file, n gin ch cn to mt i tng ca nhng lp ny, tn file cn m l thng
s trong constructor. Khi file m, vic c v ghi d liu trn file c thc hin mt cch bnh
thng thng qua cc phng thc cung cp trong lung.
a. c d liu t file
d. M mt file c d liu
FileInputStream(String fileName) throws FileNotFoundException
Nu file khng tn ti: th nm ra FileNotFoundException
e. c d liu: dng phng thc read()
int read( ) throws IOException: c tng byte t file v tr v gi tr ca byte c
c. Tr v -1 khi ht file, v nm ra IOException khi c li c.
f. ng file: dng phng thc close()
void close( ) throws IOException: sau khi lm vic xong cn ng file gii phng
ti nguyn h thng cp pht cho file.
V d:
/*
Hin th ni dung ca mt file tn test.txt lu tiD:\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");
return;
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 107
}
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();
}
}
b. Ghi d liu xung file
M mt file ghi d liu
FileOutputStream(String fileName) throws FileNotFoundException
Nu file khng to c: th nm ra FileNotFoundException
Ghi d liu xung: dng phng thc write()
void write(int byteval) throws IOException: ghi mt byte xc nh bi tham s
byteval xung file, v nm ra IOException khi c li ghi.
ng file: dng phng thc close()
void close( ) throws IOException: sau khi lm vic xong cn ng file gii phng
ti nguyn h thng cp pht cho file.
V d: copy ni dung mt file text n mt file text khc.
/* Copy ni dung ca mt 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);
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 108
}
catch(FileNotFoundException exc)
{
System.out.println("Input File Not Found");
return;
}
// open output file
try
{
fout = new FileOutputStream(D:\\dest.txt);
}
catch(FileNotFoundException exc)
{
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();
}
}
Kt qu thc thi chng trnh: chng trnh s copy ni dung ca file D:\source.txt v ghi vo
mt file mi D:\dest.txt.
8.3.4.c v ghi d liu nh phn
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 109
Phn trn chng ta c v ghi cc bytes d liu l cc k t m ASCII. c v ghi
nhng gi tr nh phn ca cc kiu d liu trong java, chng ta s dng DataInputStream v
DataOutputStream.
DataOutputStream: hin thc interface DataOuput. Interface DataOutput c cc phng thc
cho php ghi tt c nhng kiu d liu c s ca java n lung (theo nh dng nh phn).
Phng thc ngha
void writeBoolean (boolean val) Ghi xung lung mt gi tr boolean c xc nh
bi val.
void writeByte (int val) Ghi xung lung mt byte c xc nh bi val.
void writeChar (int val) Ghi xung lung mt Char c xc nh bi val.
void writeDouble (double val) Ghi xung lung mt gi tr Double c xc nh
bi val.
void writeFloat (floatval) Ghi xung lung mt gi tr float c xc nh bi
val.
void writeInt (int val) Ghi xung lung mt gi tr int c xc nh bi val.
void writeLong (long val) Ghi xung lung mt gi tr long c xc nh bi
val.
void writeShort (int val) Ghi xung lung mt gi tr short c xc nh bi
val.
Contructor: DataOutputStream(OutputStream outputStream)
OutputStream: l lung xut d liu. ghi d liu ra file
th i tng outputStream c th l FileOutputStream.
DataInputStream: hin thc interface DataInput. Interface DataInput c cc phng thc cho
php c tt c nhng kiu d liu c s ca java (theo nh dng nh phn).

Phng thc ngha
boolean readBoolean( ) c mt gi tr boolean
Byte readByte( ) c mt byte
char readChar( ) c mt Char
double readDouble( ) c mt gi tr Double
float readFloat( ) c mt gi tr float
int readInt( ) c mt gi tr int
Long readLong( ) c mt gi tr long
short readShort( ) c mt gi tr short
Contructor: DataInputStream(InputStream inputStream)
InputStream: l lung nhp d liu. d liu t file th i tng InputStream c th l
FileInputStream.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 110
V d: dng DataOutputStream v DataInputStream ghi v c nhng kiu d liu 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)
{
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(
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 111
new FileInputStream("D:\\testdata"));
}
catch(IOException exc)
{
System.out.println("Cannot open file.");
return;
}
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();
}
}
Kt qu thc thi chng trnh:
D liu ghi xung file D:\\testdata


8.4.File truy cp ngu nhin (Random Access Files)
Bn cnh vic x l xut nhp trn file theo kiu tun t thng qua cc lung, java cng
h tr truy cp ngu nhin ni dung ca mt file no dng RandomAccessFile.
RandomAccessFile khng dn xut t InputStream hay OutputStream m n hin thc cc
interface DataInput, DataOutput (c nh ngha cc phng thc I/O c bn).
RandomAccessFile h tr vn nh v con tr file bn trong mt file dng phng thc
seek(long newPos).
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 112
V d: minh ha vic truy cp ngu nhin trn file. Chng trnh ghi 6 s kiu double xung
file, ri c ln theo th t ngu 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
// 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();
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 113
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 + " ");
System.out.println("\n");
}
catch(IOException exc)
{
System.out.println("Error seeking or reading.");
}
raf.close();
}
}
8.5. S dng lung k t
Chng ta tm hiu v s dng lung byte xut/nhp d liu. Tuy c th nhng
trong mt s trng hp lung byte khng phi l cch l tng qun l xut nhp d liu
kiu character, v vy java a ra kiu lung character phc v cho vic xut nhp d liu
kiu character trn lung. Mc trn cng l hai lp tru tng Reader v Writer. Lp Reader
dng cho vic nhp d liu ca lung, lp Writer dng cho vic xut d liu ca lung. Nhng
lp dn xut t Reader v Writer thao tc trn cc lung k t Unicode. Nhng phng thc
nh ngha trong lp tru tng Reader v Writer
Phng thc ngha
Reader abstract void close( ) ng lung
void mark(int numChars) nh du v tr hin ti trn lung
boolean markSupported( ) Kim tra xem lung c h tr thao tc nh du mark()
khng?
int read( ) c mt k t
int read(char buffer[ ]) c buffer.length k t cho vo buffer
abstract int read(char buffer[ ], int offset, int numChars)
c numChars k t cho vo vng m buffer ti v tr
buffer[offset]
boolean ready( ) Kim tra xem lung c c c khng?
void reset( ) Di con tr nhp n v tr nh du trc
long skip(long numChars) B qua numChars ca lung nhp Writer
abstract void close( ) ng lung xut. C li nm ra IOException
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 114
abstract void flush( ) Dn dp lung (buffer xut)
void write(int ch) Ghi mt k t
void write(byte buffer[ ]) Ghi mt mng cc k t
abstract void write(char buffer[ ], int offset, int numChars)
Ghi mt phn ca mng k t
void write(String str) Ghi mt chui
void write(String str, int offset, int numChars)
Ghi mt phn ca mt chui k t
Reader abstract void close( ) ng lung
void mark(int numChars) nh du v tr hin ti trn lung
boolean markSupported( ) Kim tra xem lung c h tr thao tc nh du mark()
khng?
int read( ) c mt k t
int read(char buffer[ ]) c buffer.length k t cho vo buffer
abstract int read(char buffer[ ], int offset, int numChars)
c numChars k t cho vo vng m buffer ti v tr
buffer[offset]
boolean ready( ) Kim tra xem lung c c c khng?
void reset( ) Di con tr nhp n v tr nh du trc
long skip(long numChars) B qua numChars ca lung nhp Writer
abstract void close( ) ng lung xut. C li nm ra IOException
abstract void flush( ) Dn dp lung (buffer xut)
void write(int ch) Ghi mt k t
void write(byte buffer[ ]) Ghi mt mng cc k t
abstract void write(char buffer[ ], int offset, int numChars)
Ghi mt phn ca mng k t
void write(String str) Ghi mt chui
void write(String str, int offset, int numChars)
Ghi mt phn ca mt chui k t

V d: Dng BufferedReader c chui k t t Console. Chng trnh kt thc khi gp chui
c l chui stop
import java.io.*;
class ReadLines
{
public static void main(String args[]) throws IOException
{
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 115
// 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.");
do
{
str = br.readLine();
System.out.println(str);
} while(!str.equals("stop"));
}
}
8.5.1. Xut Console dng lung k t
Trong ngn ng java, bn cnh vic dng System.out xut d liu ra Console (thng
dng debug chng trnh), chng ta c th dng lung PrintWriter i vi cc chng
trnh chuyn nghip. PrintWriter l mt trong nhng lp lung k t. Vic dng cc lp
lung k t xut d liu ra Console thng c a chung hn. xut d liu ra
Console dng PrintWriter cn thit phi ch nh System.out cho lung xut.
V d: To i tng PrintWriter xut d liu ra Console
PrintWriter pw = new PrintWriter(System.out, true);
V d: minh ha dng PrintWriter xut d liu ra Console
import java.io.*;
public class PrintWriterDemo
{
public static void main(String args[])
{
PrintWriter pw = new PrintWriter(System.out, true);
int i = 10;
double d = 123.67;
double r = i+d
pw.println("Using a PrintWriter.");
pw.println(i);
pw.println(d);
pw.println(i + " + " + d + " = " + r);
}
}
8.5.2.c/ghi File dng lung k t
Thng thng c/ghi file ngi ta thng dng lung byte, nhng i vi lung k
t chng ta cng c th thc hin c. u im ca vic dng lung k t l chng thao tc
trc tip trn cc k t Unicode. V vy lung k t l chn la tt nht khi cn lu nhng vn
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 116
bn Unicode. Hai lp lung thng dng cho vic c/ghi d liu k t xung file l
FileReader v FileWriter.
V d: c nhng dng vn bn nhp t bn phm v ghi chng xung file tn l test.txt.
Vic c v ghi kt thc khi ngi dng nhp vo chui stop.
import java.io.*;
class KtoD
{
public static void main(String args[]) throws IOException
{
String str;
FileWriter fw;
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();
}
}
D liu ghi xung file:

Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 117
V d: c v hin th ni dung ca 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();
}
}
Ni dung ca file test.txt:


8.6. Lp File
Lp File khng phc v cho vic nhp/xut d liu trn lung. Lp File thng c
dng bit c cc thng tin chi tit v tp tin cng nh th mc (tn, ngy gi to, kch
thc, )
java.lang.Object
+ java.io.File
Cc Constructor: To i tng File t ng dn tuyt i
public File(String pathname)
v d: File f = new File(C:\\Java\\vd1.java);
To i tng File t tn ng dn v tn tp tin tch bit
public File(String parent, String child)
v d: File f = new File(C:\\Java, vd1.java);
To i tng File t mt i tng File khc
public File(File parent, String child)
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 118
v d: File dir = new File (C:\\Java);
File f = new File(dir, vd1.java);
Mt s phng thc thng gp ca lp File (chi tit v cc phng thc c thm trong ti
liu J2SE API Specification)

public String getName() Ly tn ca i tng File
public String getPath() Ly ng dn ca tp tin
public boolean isDirectory() Kim tra xem tp tin c phi Chng ny s cung cp cho
chng ta nhng kin thc c bn v lung (streams) v files:
- Th vin cc lp v lung trong java: lung byte,
lung k t.
- Xut nhp Console dng lung byte, lung k t.
- Xut nhp files dng lung k t v lung byte.
- Vn x l files truy cp ngu nhin dng lp
RandomAccessFile.
- Xl file v th mc dng lp File.

8.7. Khi nim lung
Tt c nhng hot ng nhp/xut d liu (nhp d liu t bn phm, ly d liu t
mng v, ghi d liu ra a, xut d liu ra mn hnh, my in, ) u c quy v mt khi
nim gi l lung (stream). Lung l ni c th sn xut v tiu th thng tin. Lung
thng c h thng xut nhp trong java gn kt vi mt thit b vt l. Tt c cc lung
u c chung mt nguyn tc hot ng ngay c khi chng c gn kt vi cc thit b vt l
khc nhau. V vy cng mt lp, phng thc xut nhp c th dng chung cho cc thit b vt
l khc nhau. Chng hn cng mt phng thc c th dng ghi d liu ra console, ng
thi cng c th dng ghi d liu xung mt file trn a. Java hin thc lung bng tp hp
cc lp phn cp trong gi java.io.
Java nh ngha hai kiu lung: byte v k t (phin bn gc ch nh ngha kiu lung byte, v
sau lung k t c thm vo trong cc phin bn v sau). Lung byte (hay lung da trn
byte) h tr vic xut nhp d liu trn byte, thng c dng khi c ghi d liu nh phn.
Lung k t c thit k h tr vic xut nhp d liu kiu k t (Unicode). Trong mt vi
trng hp lung k t s dng hiu qu hn lung byte, nhng mc h thng th tt c
nhng xut nhp u phi qui v byte. Lung k t h tr hiu qu ch i vi vic qun l, x
l cc k t.

8.7.1.Lung byte (Byte Streams)
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 119
Cc lung byte c nh ngha dng hai lp phn cp. Mc trn cng l hai lp tru
tng InputStream v OutputStream. InputStream nh ngha nhng c im chung cho
nhng lung nhp byte. OutputStream m t cch x l ca cc lung xut byte.
Cc lp con dn xut t hai lp InputStream v OutputStream s h tr chi tit tng ng vi
vic c ghi d liu trn nhng thit b khc nhau. ng chong ngp vi hang lot rt nhiu
cc lp khc nhau. ng qu lo lng, mi khi bn nm vng, s dng thnh tho mt lung
byte no th bn d dng lm vic vi nhng lung cn li.
Lp lung byte ngha
BufferedInputStream Buffered input stream
BufferedOutputStream Buffered output stream
ByteArrayInputStream Input stream c d liu t mt mng byte
ByteArrayOutputStream Output stream ghi d liu n mt mng byte
DataInputStream Lung nhp c nhng phng thc c nhng kiu d liu
chun trong java
DataOutputStream Lung xut c nhng phng thc ghi nhng kiu d liu
chun trong java
FileInputStream Lung nhp cho php c d liu t file
FileOutputStream Lung xut cho php ghi d liu xung file
FilterInputStream Hin thc lp tru tng InputStream
FilterOutputStream Hin thc lp tru tng OutputStream
InputStream Lp tru tng, l lp cha ca tt c cc lp lung nhp kiu
Byte
OutputStream Lp tru tng, l lp cha ca tt c cc lp xut nhp kiu
Byte
PipedInputStream Lung nhp byte kiu ng (piped) thng phi c gn vi
mt lung
PipedOutputStream Lung nhp byte kiu ng (piped) thng phi c gn vi
mt lung nhp kiu ng to nn mt kt ni trao i d
liu kiu ng.
PrintStream Lung xut c cha phng thc print() v println()
PushbackInputStream L mt lung nhp kiu Byte m h tr thao tc tr li (push
back) v phc hi thao tc c mt byte (unread)
RandomAccessFile H tr cc thao tc c, ghi i vi file truy cp ngu nhin.
SequenceInputStream L mt lung nhp c to nn bng cch ni kt logic cc
lung nhp khc.

8.7.2.Lung k t (Character Streams)
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 120
Cc lung k t c nh ngha dng hai lp phn cp. Mc trn cng l hai lp tru
tng Reader v Writer. Lp Reader dng cho vic nhp d liu ca lung, lp Writer dng
cho vic xut d liu cua lung. Nhng lp dn xut t Reader v Writer thao tc trn cc
lung k t Unicode.
Lp lung k t ngha
BufferedReader Lung nhp k t c d liu vo mt vng m.
BufferedWriter Lung xut k t ghi d liu ti mt vng m.
CharArrayReader Lung nhp c d liu t mt mng k t
CharArrayWriter Lung xut ghi d liu ti mt mng k t
FileReader Lung nhp k t c d liu t file
FileWriter Lung xut k t ghi d liu n file
FilterReader Lp c d liu trung gian (lp tru tng)
FilterWriter Lp xut trung gian tru tng
InputStreamReader Lung nhp chuyn bytes thnh cc k t
LineNumberReader Lung nhp m dng
OutputStreamWriter Lung xut chuyn nhng k t thnh cc bytes
PipedReader Lung c d liu bng c ch ng ng
PipedWriter Lung ghi d liu bng c ch ng ng
PrintWriter Lung ghi vn bn ra thit b xut (cha phng thc print()
v println() )
PushbackReader Lung nhp cho php c v khi phc li d liu
Reader Lp nhp d liu tru tng
StringReader Lung nhp c d liu t chui
StringWriter Lung xut ghi d liu ra chui
Writer Lp ghi d liu tru tng

8.7.3. Nhng lung c nh ngha trc (The Predefined Streams)
Tt c cc chng trnh vit bng java lun t ng import gi java.lang. Gi ny c
nh ngha lp System, bao gm mt s c im ca mi trng run-time, n c ba bin lung
c nh ngha trc l in, out v err, cc bin ny l cc fields c khai bo static trong lp
System.
g. System.out: lung xut chun, mc nh l console.
System.out l mt i tng kiu PrintStream.
h. System.in: lung nhp chun, mc nh l bn phm.
System.in l mt i tng kiu InputStream.
i. System.err: lung li chun, mc nh cng l console.
System.out cng l mt i tng kiu PrintStream ging System.out.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 121
8.7.4. S dng lung Byte
Nh chng ta bit hai lp InputStream v OutputStream l hai siu lp (cha) i vi
tt c nhng lp lung xut nhp kiu byte. Nhng phng thc trong hai siu lp ny nm ra
cc li kiu IOException. Nhng phng thc nh ngha trong hai siu lp ny l c th dng
trong cc lp con ca chng. V vy tp cc phng thc l tp ti tiu cc chc nng nhp
xut m nhng lung nhp xut kiu byte c th s dng. Nhng phng thc nh ngha trong
lp InputStream v OutputStream

Phng thc ngha
InputStream int available( ) Tr v s lung bytes c th c c t lung nhp
void close( ) ng lung nhp v gii phng ti nguyn h thng gn vi
lung. Khng thnh cng s nm ra mt li IOException
void mark(int numBytes) nh du v tr hin ti trong lung nhp
boolean markSupported( ) Kim tra xem lung nhp c h tr phng thc mark() v
reset() khng.
int read( ) c byte tip theo t lung nhp
int read(byte buffer[ ]) c buffer.length bytes v lu vo trong vng nh buffer.
Kt qu tr v s bytes tht s c c
int read(byte buffer[ ], int offset, int numBytes)
c numBytes bytes bt u t a ch offset v lu vo
trong vng nh buffer. Kt qu tr v s bytes tht s c
c
void reset( ) Nhy con tr n v tr c xc nh bi vic gi hm
mark() ln sau cng.
long skip(long numBytes) Nhy qua numBytes d liu t lung nhp OutputStream
void close( ) ng lung xut v gii phng ti nguyn h thng gn vi
lung. Khng thnh cng s nm ra mt li IOException
void flush( ) p d liu t b m phi ghi ngay xung lung (nu c)
void write(int b) Ghi byte d liu ch nh xung lung
void write(byte buffer[ ]) Ghi buffer.length bytes d liu t mng ch nh xung
lung
void write(byte buffer[ ], int offset, int numBytes)
Ghi numBytes bytes d liu t v tr offset ca mng ch
nh buffer xung lung l th mc khng?
public boolean isFile() Kim tra xem tp tn c phi l mt file khng?
public String[] list() Ly danh sch tn cc tp tin v th mc con ca i tng
File ang xt v tr v trong mt mng.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 122
V d:
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();
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);
}
}
Kt qu
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 123



Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 124
Bi Tp
1. Thit k cc thnh phn v cc hnh ng khi mt khch hng thc hin mt giao
dch ATM (Automatic Teller Machine).
2. Lit k nhng thuc tnh v nhng phng thc cn c v mt hnh a gic.
3. Hy vit mt on chng trnh in ra dng ch Welcome to the world of Java
4. Hy vit hai phng thc khi to tng minh cho mt lp dng tnh din tch
hnh ch nht. Khi mt gi tr c truyn vo phng thc khi to, n cho rng
di v chiu rng bng nhau v bng gi tr truyn vo. Lc , n s tnh din
tch tng ng. Khi hai gi tr c truyn vo, n s tnh din tch hnh ch nht.
5. Vit mt chng trnh thc hin nhng vic sau y:
a. Khai bo v gn gi tr u cho cc bin m v n l 100 v 200 tng ng.
b. Theo cc iu kin: nu m bng 0, hin th kt qu tng ng.
c. Nu m ln hn n , hin th kt qu tng ng.
d. Kim tra gi tr n l chn hay l.
6. Vit mt chng trnh hin th tng cc bi s ca 7 nm gia 1 v 100.
7. Vit chng trnh cng by s hng ca dy sau:
1!+2!+3!.
8. Vit chng trnh thc hin cc yu cu sau:
a. To mt lp im biu din mt im trong khng gian bao gm cc thuc tnh
- Honh
- Tung
- Cao
b. B sung cc phng thc sau cho lp
- Phng thc khi to khng c tham s no.
- Phng thc khi to nhn 3 tham s thc lm tham s
- Phng thc nhp vo mt im t bn phm
- Phng thc in thng tin mt im ra mn hnh
c. Vit phng thc Main kim tra cc phng thc ci t cho lp
Hng dn: Ta ca mt im c kiu gi tr l float
9. Xy dng lp Stack m phng mt Stack bao gm:
- Hm to Stack(int n) khi to Stack c ti a n phn t
- Phng thc isEmpty kim tra xem Stack c phn t no hay khng?
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 125
- Phng thc isFull kim tra xem Stack y hay cha?
- Phng thc push thm mt phn t vo Stack
- Phng thc pop ly mt phn t ra khi Stack
10. Xy dng lp MaTran cho thc hin cc php ton trn ma trn, bao gm:
- Hm to ma MaTran(int sh, int sc) dng khi to mt ma trn c s hng l sh v s
ct l sc.
- Phng thc print in ma trn ra mn hnh
- Phng thc nhap nhp ma trn t bn phm
- Phng thc cong cng hai ma trn
- Phng thc hieu thc hin php hiu hai ma trn
- Phng thc doiDau i du cc phn t ca ma trn
- Phng thc main kim tra ma trn trn
11. Xy dng Project
a.To mt lp biu din phn s (c t v mu l cc s nguyn) gm cc
thuc tnh
- T s
- Mu s
b. B sung cc phng thc sau cho lp.
- Phng thc khi to khng c tham s no, to phn s bng 0.
- Phng thc khi to nhn 2 s nguyn lm tham s.
- Phng thc khi to nhn mt i tng thuc chnh lp ny lm tham s.
- Phng thc cng, tr, nhn, chia phn s ny vi mt phn s khc.
- Phng thc in phn s ra mn hnh.
- Phng thc rt gn phn s
3. Vit hm main kim tra cc phng thc to.
Hng dn:
- to phn s bng 0: t s =0, mu s =1
- Rt gn phn s
+ Tm USCLN ca t s v mu s
+ tuso = tuso/ USCLN
+ mauso = mauso/USCLN
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 126
private int USCLN(int a, int b){
while(a != b){
if(a > b) a = a-b;
if(a < b) b = b-a;
}
return a;
}
12. Xy dng lp Queue
- Hm to Queue(int n) khi to Queue c ti a n phn t
- Phng thc isEmpty kim tra xem Queue c phn t no hay khng?
- Phng thc isFull kim tra xem Queue y hay cha?
- Phng thc push thm mt phn t vo Queue.
- Phng thc pop ly mt phn t ra khi Queue.
13. Xy dng mt lp biu din ng trn gm c cc thuc tnh:
- Bn knh B sung cc phng thc sau cho lp:
- Phng thc khi to khng c tham s no.
- Phng thc khi to nhn mt i s thc lm tham s.
- Phng thc khi to nhn mt i tng ca chnh lp ny lm tham s.
- Phng thc tinhChuVi() tnh chu vi ca hnh trn.
- Phng thc tinhDienTich() tnh din tch ca hnh trn.
- Phng thc Nhp() cho php nhp bn knh .
- Phng thc in() in bn knh, chu vi v din tch ca hnh trn ra mn hnh.
- Thm thuc tnh Bn knh vo lp HinhTron va to ra trn.
-Xy dng lp test kim tra lp va to
14. Xy dng lp hnh tr vi thuc tnh gm bn knh hnh trn, chiu cao hnh tr v cc
phng thc thit lp. Sau tnh chu vi, din tch xung quanh, din tch ton phn v th
tch ca hnh tr .
Xy dng lp test thc hin: Nhp cc thng tin cho hnh tr t bn phm, hin th cc
thng tin v kch thc, chu vi, din tch ca hnh tr ra mn hnh.
15. Xy dng lp Hnh Ch Nht bao gm cc thnh phn:
- Chiu di.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 127
- Chiu rng.
- Hai thuc tnh ch c l Chu vi v Din tch.
- Hai thuc tnh bao gm c c/ghi l Chiu di v Chiu rng.
B sung cc phng thc sau cho lp:
- Phng thc khi to gm c hai tham s.
- Phng thc khi to khng c tham s no.
Xy dng lp test kim tra lp va to
16. Xy dng lp Hnh Vung bao gm cc thnh phn: cnh.
- Hai thuc tnh ch c l Chu vi v Din tch.
- Thuc tnh bao gm c c/ghi l Cnh.
B sung cc phng thc sau cho lp:
- Phng thc khi to gm c hai tham s.
- Phng thc khi to khng c tham s no.
Xy dng lp test kim tra lp va to
17. Xy dng lp MyMath gm cc phng thc sau:
- Phng thc tnh GiaiThua(int n) tnh giai tha ca mt s nguyn N.
- Phng thc tnh Tong_n(int n) tnh tng ca N s t nhin u tin
- Phng thc tnh Mu(float a, int b) tnh ab
- Phng thc tnh Tich(float a, float b) tnh tch a*b.
- Phng thc tnh Thuong(float a, float b) tnh thng ca hai s a/b vi b khc 0.
Xy dng lp test kim tra lp va to.
18. Cho mt dy cc hnh ch nht. Bng lp trnh hng i tng, hy vit chng trnh
thc hin cc chc nng sau:
- Nhp vo mt dy hnh ch nht
- Tm v in ra hnh ch nht c chu vi ln nht v hnh ch nht c din tch ln nht
Hng dn: Xy dng lp HCN c hai thuc tnh ch c l chiu di v chiu rng.
19. Xy dng lp ma trn gm c cc phng thc sau:
- Phng thc khi to khng c tham s: khi to kch thc ma trn 2 x 2
- Phng thc khi to c hai tham s l hai s nguyn: s hng, s ct ca ma trn.
- Phng thc khi to ly chnh i tng ca lp ma trn lm tham s.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 128
- Nhp: cho php nhp vo cc phn t ca ma trn
- Cng(int n): Cng n vo gi tr ca tt c cc phn t ca ma trn
- Cng(Matran mt): Cng hai ma trn c cng kch thc
- tr(int n): tr gi tr ca tt c cc phn t i n n v
- tr(Matran mt): Tr hai ma trn c cng kch thc
Hng dn:Ma trn c 3 thnh phn d liu: s hng, s ct, mng hai chiu lu tr cc
phn t ca ma trn.
20. Xy dng d n
1) Xy dng lp Person gm c cc thnh phn sau:
- H v Tn
- Ngy thng nm sinh
- Qu qun
V cc phng thc:
- Phng thc khi to khng c tham s.
- Phng thc khi to c 3 tham s.
- Phng thc Nhp cho php nhp cc thng tin v H tn, ngy sinh, Qu qun ca
ngi .
- Phng thc HienThi() cho php hin th cc thng tin ca ngi ra mn hnh.
2) Xy dng lp SinhVien k tha t lp Person gm c cc thuc tnh sau:
- Cc thuc tnh ca lp Person
- M sinh vin
- Lp
V cc phng thc:
- Phng thc khi to khng c tham s.
- Phng thc khi to c 5 tham s.
- Phng thc Nhp cho php nhp cc thng tin v H tn, ngy
sinh, Qu qun, M Sinh vin, Lp ca sinh vin .
- Phng thc HienThi cho php hin th cc thng tin ca sinh vin ra mn hnh.
21. Xy dng lp CngNhn k tha lp Person bi 1 gm c cc thuc tnh sau:
- Cc thuc tnh ca lp Person
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 129
- H s lng
- Lng c bn
- Ph cp
V cc phng thc:
- Phng thc khi to khng c tham s
- Phng thc khi to c 7 tham s
- Phng thc Nhap() nhp cc thng tin ca cng nhn .
- Phng thc TinhLuong() tnh lng ca cng nhn .
- Phng thc hin th in ra: H Tn, Ngy sinh, Qu qun v lng ca cng nhn.
H ng dn: Lng = H s lng * Lng c bn (1 + ph cp).

22. Vit chng trnh qun l nhn s v tnh lng cho nhn vin trong cng ty.
1) Qun l thng tin nhn vin (H tn, ngy sinh, a ch)
2) Tnh lng cho nhn vin. Bit trong cng ty c ba loi nhn vin v cch tnh lng
nh sau:
- Nhn vin sn xut: s sn phm*20 000
- Nhn vin cng nht: s ngy cng*50 000
- Nhn vin qun l : h s lng * lng c bn
23. Vit chng trnh nhn mt dng vn bn t ngi dng v hin th on vn bn ln
mn hnh.
24. Vit chng trnh sao chp ni dng t mt tp tin ti mt tp tin khc.
25. Vit chng trnh truy cp ngu nhin tp tin, c giao din nh sau:


26. Cc bn ghi nn c lu tp tin .dat, v vy ngi dng truy cp chng sau ny.
Lp trnh Hng i tng vi J ava
Bin son: ThS. Trn Xun Thanh Trang 130


Ti liu tham kho

[1]. Gio trnh LT hng i tng 1 - Trng C Cng nghip 4
[2]. PGS.TS Trn nh Qu - KS. Nguyn Mnh Hng, Lp trnh hng i tng vi Java,
dnh cho h o to T xa, Hc vin Cng ngh bu chnh Vin thng.
[3]. TS. on Vn Ban, Lp tnh Java, NXB Khoa hc k thut.
[4]. Quentin Charatan, JAVA IN TWO SEMESTERS, ISBN 0-07-709804-8, 2002
[5]. John Lewis I, JAVA SOFTWARE SOLUTION, Mc Graw Hill, 2002
[6]. Cay S.Horstman, CORE JAVA, Prentice Hall, 2003

You might also like