You are on page 1of 193

B gio dc v o to

Trng i hc s phm k thut hng yn


---------------ooo------------------

cng bi ging Java c s

Chng 1
CC KHI NIM C BN

BI 1. LM QUEN VI JAVA
I. Lch s java
Java l mt ngn ng lp trnh c Sun Microsystems gii thiu vo thng
6 nm 1995. T , n tr thnh mt cng c lp trnh ca cc lp trnh vin
chuyn nghip. Java c xy dng trn nn tng ca C v C++. Do vy n s
dng cc c php ca C v cc c trng hng i tng ca C++.
Ban u Java c thit k lm ngn ng vit chng trnh cho cc sn
phm in t dn dng nh u video, tivi, in thoi, my nhn tin.. . Tuy nhin
vi s mnh m ca Java khin n ni ting n mc vt ra ngoi s tng
tng ca cc nh thit k ra n.
Java khi thu tn l Oak- l cy si mc pha sau vn phng ca nh
thit k chnh ng Jame Gosling, sau ny ng thy rng c ngn ng lp trnh
tn Oak ri, do vy nhm thit k quyt nh i tn, Java l ci tn c chn,
Java l tn ca mt qun cafe m nhm thit k java hay n ung.
II. Java em l ai
Java l ngn ng lp trnh hng i tng, do vy khng th dng Java
vit mt chng trnh hng chc nng. Java c th gii quyt hu ht cc cng

vic m cc ngn ng khc c th lm c.


Java l ngn ng va bin dch va thng dch. u tin m ngun c
bin dch bng cng c JAVAC chuyn thnh dng ByteCode. Sau c
thc thi trn tng loi my c th nh chng trnh thng dch JAVA. Mc tiu
ca cc nh thit k Java l cho php ngi lp trnh vit chng trnh mt ln
nhng c th chy trn bt c phn cng c th, th nn khu hiu ca cc nh
thit k Java l Write One, Run Any Where.
Ngy nay, Java c s dng rng ri vit chng trnh chy trn
Internet. N l ngn ng lp trnh hng i tng c lp thit b, khng ph
thuc vo h iu hnh. Java khng ch dng vit cc ng dng chy n l hay
trong mng m cn xy dng cc trnh iu khin thit b cho in thoi di
ng, PDA,
II. Mt s c trng ca java
1.n gin
Nhng ngi thit k mong mun pht trin mt ngn ng d hc v quen
thuc vi a s ngi lp trnh. Java ta nh C++, nhng lc b i cc c
trng phc tp, khng cn thit ca C v C++ nh: thao tc con tr, thao tc nh
ngha chng ton t (operator overloading), Java khng s dng lnh goto
cng nh file header (.h). Cu trc struct v union cng c loi b khi
Java. Nn c ngi bo Java l C++--, ng bo java l C++ nhng b i
nhng th phc tp, khng cn thit.
2. Hng i tng
C th ni java l ngn ng lp trnh hon ton hng i tng, tt cc
trong java u l s vt, u u cng l s vt.
3. c lp vi h nn
Mc tiu chnh ca cc nh thit k java l c lp vi h nn hay cn gi

l c lp phn cng v h iu hnh. y l kh nng mt chng trnh c vit


ti mt my nhng c th chy c bt k u
Tnh c lp vi phn cng c hiu theo ngha mt chng trnh Java
nu chy ng trn phn cng ca mt h my no th n cng chy ng trn
tt c cc h my khc. Mt chng trnh ch chy ng trn mt s h my c th
c gi l ph thuc vo phn cng.
Tnh c lp vi h iu hnh c hiu theo ngha mt chng trnh Java
c th chy c trn tt c cc h iu hnh. Mt chng trnh ch chy c trn
mt s h iu hnh c gi l ph thuc vo h iu hnh.
Cc chng trnh vit bng java c th chy trn hu ht cc h nn m
khng cn phi thay i g, iu ny c nhng ngi lp trnh t cho n
mt khu hiu vit mt ln, chy mi ni, iu ny l khng th c vi cc ngn
ng lp trnh khc.
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.
4. Mnh m Java l ngn ng yu cu cht ch v kiu d liu, vic p
kiu t ng ba bi ca C, C++ nay c hn ch trong Java, iu ny lm
chng trnh r rng, sng sa, t li hn.Java kim tra lc bin dch v c trong
thi gian thng dch v vy Java loi b mt mt s loi li lp trnh nht
nh.Java khng s dng con tr v cc php ton con tr. Java kim tra tt c cc
truy nhp n mng, chui khi thc thi m bo rng cc truy nhp khng ra
ngoi gii hn kch thc.
Trong cc mi trng lp trnh truyn thng, lp trnh vin phi t mnh
cp pht b nh. Trc khi chng trnh kt thc th phi t gii phng b nh
cp. Vn ny sinh khi lp trnh vin qun gii phng b nh xin cp trc
. Trong chng trnh Java, lp trnh vin khng phi bn tm n vic cp pht

b nh. Qa trnh cp pht, gii phng c thc hin t ng, nh dch v thu
nht nhng i tng khng cn s dng na (garbage collection).
C ch by li ca Java gip n gin ha qa trnh x l li v hi phc
sau li.
5. H tr lp trnh a tuyn
y l tnh nng cho php vit mt chng trnh c nhiu on m lnh
c chy song song vi nhau. Vi java ta c th vit cc chng trnh c kh
nng chy song song mt cch d dng, hn th na vic ng b ti nguyn dng
chung trong Java cng rt ng gin. iu ny l khng th c i vi mt s
ngn ng lp trnh khc nh C/C++, pascal
6. Phn tn
Java h tr y cc m hnh tnh ton phn tn: m hnh client/server,
gi th tc t xa
7. H tr internet
Mc tiu quan trng ca cc nh thit k java l to iu kin cho cc nh
pht trin ng dng c th vit cc chng trnh ng dng internet v web mt
cch d dng, vi java ta c th vit cc chng trnh s dng cc giao thc TCP,
UDP mt cch d dng, v lp trnh web pha my khch java c cng ngh java
applet, v lp trnh web pha my khch java c cng ngh servlet/JSP, v lp
trnh phn tn java c cng ngh RMI, CORBA, EJB, Web Service.
8. Thng dch
Cc chng trnh java cn c thng dch trc khi chy, mt chng
trnh java c bin dch thnh m byte code m c lp vi h nn, chng trnh
thng dch java s nh x m byte code ny ln mi nn c th, iu ny khin
java chm chp i phn no.

III. Cc kiu ng dng Java


Vi Java ta c th xy dng cc kiu ng dng sau:
1. ng dng Applets
Applet l chng trnh Java c to ra s dng trn Internet thng qua
cc trnh duyt h tr Java nh IE hay Netscape. 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.
2. ng dng dng lnh (console)
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.
3. ng dng ha
y l cc chng trnh Java chy c lp cho php ngi dng tng tc
qua giao din ha.
4. JSP/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
JSP/Servlet. hoc Applet ti my ch. X l Form ca HTML l cch s dng n
gin nht ca JSP/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.
5. 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.
6. ng dng mng
Java l mt ngn ng rt thch hp cho vic xy dng cc ng dng mng.
Vi th vin Socket bn c th lp trnh vi hai giao thc: UDP v TCP.
7. ng dng nhiu tng
Vi Java bn c th xy dng phn tn nhiu tng vi nhiu h tr khc
nhau nh: RMI, CORBA, EJB, Web Service
8. ng dng cho cc thit b di ng
Hin nay phn ln cc thit b di ng nh: in thoi di ng, my tr
gip c nhn u h tr Java. Th nn bn c th xy dng cc ng dng chy
trn cc thit b di ng ny. y l mt kiu ng dng kh hp dn, bi v cc
thit b di ng ny ngy cng ph bin v nhu cu c cc ng dng chy trn ,
c bit l cc ng dng mang tnh cht gii tr nh game
IV. My o Java (JVM-Java Virtual Machine)
My o l mt phn mm m phng mt my tnh tht (my tnh o). N c
tp hp cc lnh logic xc nh cc hot ng ca my tnh v c mt h iu
hnh o. Ngi ta c th xem n nh mt my tnh tht (my tnh c phn cng
o, h iu hnh o). N thit lp cc lp tru tng cho: Phn cng bn di, h
iu hnh, m bin dch.
Trnh bin dch chuyn m ngun thnh tp cc lnh ca my o m khng ph
thuc vo phn cng v h iu hnh c th. Trnh thng dch trn mi my s
chuyn tp lnh ny thnh chng trnh thc thi. My o to ra mt mi trng
bn trong thc thi cc lnh bng cch:
1 Np cc file .class

2 Qun l b nh
3 Dn rc
Vic khng nht qun ca phn cng lm cho my o phi s dng ngn xp
lu tr cc thng tin sau:
1 Cc Frame cha cc trng thi ca cc phng thc.
2 Cc ton hng ca m bytecode.
3 Cc tham s truyn cho phng thc.
4 Cc bin cc b.
Khi JVM thc thi m, mt thanh ghi cc b c tn Program Counter c
s dng. Thanh ghi ny tr ti lnh ang thc hin. Khi cn thit, c th thay i
ni dung thanh ghi i hng thc thi ca chng trnh. Trong trng hp
thng thng th tng lnh mt ni tip nhau s c thc thi.
Mt khi nim thng dng khc trong Java l trnh bin dch Just In Time-JIT.
Cc trnh duyt thng dng nh Netscape hay IE u c JIT bn trong tng tc
thc thi chng trnh Java. Mc ch chnh ca JIT l chuyn tp lnh bytecode
thnh m my c th cho tng loi CPU. Cc lnh ny s c lu tr v s dng
mi khi gi n.

BI 2 NN TNG CA JAVA
I. Tp k t dng trong java
Mi ngn ng ni chung, ngn ng lp trnh ni ring u phi xy dng
trn mt tp hp ch ci (hay cn gi l bng ch ci), cc k t c nhm li
theo mt cch no to thnh cc t, cc t li c nhm li thnh cc cu
(trong ngn ng lp trnh gi l cu lnh), mt chng trnh my tnh tnh l mt
tp cc cu lnh c b tr theo mt trt t m ngi vit ra chng sp t
Ngn ng java c c xy dng trn bng ch ci unicode, do vy ta c
th dng cc k t unicode t tn cho cc nh danh.
II. T kho ca Java
Mi ngn ng lp trnh c mt tp cc t kho, ngi lp trnh phi s
dng t kho theo ng ngha m ngi thit k ngn ng ra, ta khng th
nh ngha li ngha ca cc t kho, nh s dng n t tn bin, hm..
Sau y l mt s t kho thng gp:
T kha

M t

abstract

S dng khai bo lp, phng thc tru tng

boolean

Kiu d liu logic

break

c s dng kt thc vng lp hoc cu trc switch

byte

kiu d liu s nguyn

case

c s dng trong ln switch

cast

Cha c s dng ( dnh cho tng lai)

catch

c s dng trong x l ngoi l

char

kiu d liu k t

class

Dng khai bo lp

const

Cha c dng

continue

c dng trong vng lp bt u mt vng lp mi

default

c s dng trong lnh switch

do

c dng trong vng lp iu kin sau

double

kiu d liu s thc

else

kh nng la chn th hai trong cu lnh if

extends

ch rng mt lp c k tha t mt lp khc

false

Ga tr logic

final

Dng khai bo hng s, phng thc khng th ghi , hoc lp


khng th k tha

finally

phn cui ca khi x l ngoi l

float

kiu s thc

for

Cu lnh lp

goto

Cha c dng

if

Cu lnh la chn

implements

ch rng mt lp trin khai t mt giao din

import

Khai bo s dng th vin

instanceof

kim tra mt i tng c phi l mt th hin ca lp hay khng

interface

s dng khai bo giao din

long

kiu s nguyn

native

Khai bo phng thc c vit bng ngng ng bin dch C++

new

to mt i tng mi

null

mt i tng khng tn ti

package

Dng khai bo mt gi

private

c t truy xut

protected

c t truy xut

public

c t truy xut

return

Quay t phng thc v ch gi n

short

kiu s nguyn

static

Dng khai bo bin, thuc tnh tnh

super

Truy xut n lp cha

switch

lnh la chn

synchronized mt phng thc c quyn truy xut trn mt i tng


this

m ch chnh lp

throw

Nm ra ngoi l

throws

Khai bo phng thc nm ra ngoi l

true

Gi tr logic

try

s dng bt ngoi l

void

Dng khai bo mt phng thc khng tr v gi tr

while

Dng trong cu trc lp

III. nh danh (tn)


Tn dng xc nh duy nht mt i lng trong chng trnh. Trong java
tn c t theo quy tc sau:
- Khng trng vi t kho
- Khng bt u bng mt s, tn phi bt u bng k t hoc bt u bng k
$,_
- Khng cha du cch, cc k t ton hc nh +, -, *,/, %..
- Khng trng vi mt nh danh khc trong cng mt phm vi
ch :
- Tn nn t sao cho c th m t c i tng trong thc t
- Ging nh C/C++, java c phn bit ch hoa ch thng
- Trong java ta c th t tn vi di tu
- Ta c th s dng cc k t ting vit t tn

Quy c v t tn trong java


Ta nn t tn bin, hng, lp, phng thc sao cho ngha ca chng r rng,
d hiu, khoa hc v mang tnh c l quc t. Do java c phn bit ch hoa, ch
thng nn ta phi cn thn v ch .
Sau y l quy c t tn trong java (ch y ch l quy c do vy khng
bt buc phi tun theo quy c ny):
i vi bin v phng thc th tn bao gi cng bt u bng k t thng,
nu tn c nhiu t th ghp li th: ghp tt c cc t thnh mt, ghi t u tin
ch thng, vit hoa k t u tin ca mi t theo sau trong tn, v d area,
radius, readInteger
- i vi tn lp, giao din ta vit hoa cc k t u tin ca mi t trong tn, v
d lp WhileTest, Circle
Tn hng bao gi cng vit hoa, nu tn gm nhiu t th chng c ni vi
hau bi k t ghch di _, v d PI, MAX_VALUE
IV. Cu trc mt chng trnh java
- Mi ng dng Java bao gm mt hoc nhiu n v bin dch (mi n v
bin dch l mt tp tin c phn m rng Java)
- Mi n v bin dch bao gm mt hoc nhiu lp
- Mi ng dng c lp phi c duy nht mt phng thc main (im bt u
ca ng dng)
- Mi n v bin dch c nhiu nht mt lp c khai bo l public, nu nh
trong n v bin dch c lp public th tn ca n v bin dch phi trng vi tn
ca lp public (ging ht nhau c k t hoa ln k t thng)
- Bn trong thn ca mi lp ta khai bo cc thuc tnh, phng thc ca lp
, Java l ngn ng hng i tng, do vy m lnh phi nm trong lp no .
Mi lnh u c kt thc bng du chm phy ;.

Trong ngn ng Java, lp l mt n v mu c cha d liu v m lnh lin


quan n mt thc th no . Khi xy dng mt lp, thc cht bn ang to ra
mt mt kiu d liu. Kiu d liu mi ny c s dng xc nh cc bin
m ta thng gi l i tng. i tng l cc th hin (instance) ca lp.
Tt c cc i tng u thuc v mt lp c chung c tnh v hnh vi. Mi
lp xc nh mt thc th, trong khi mi i tng l mt th hin thc s.
- Khi ban khai bo mt lp, bn cn xc nh d liu v cc phng thc ca
lp . V c bn mt lp c khai bo nh sau:
C php:
class classname
{ var_datatype variablename;
:
met_datatype methodname(parameter_list)
:
}
Trong :
class - T kho xc nh lp
classname - Tn ca lp
var_datatype - kiu d liu ca bin
variablename - Tn ca bin
met_datatype - Kiu d liu tr v ca phng thc

methodname - Tn ca phng thc


parameter_list Cc tham s c ca phng thc

- Bn cn c th nh ngha mt lp bn trong mt lp khc. y l lp xp


lng nhau, cc th hin (instance) ca lp ny tn ti bn trong th hin ca mt
lp che ph chng. N chi phi vic truy nhp n cc thnh phn ca lp bao ph
chng. C hai loi lp trong l lp trong tnh static v lp trong khng tnh
non static
+ Lp trong tnh (static)
Lp trong tnh c nh ngha vi t kho static. Lp trong tnh c th truy
nhp vo cc thnh phn tnh ca lp ph n.
+ Lp trong khng tnh (non static)
Lp bn trong (khng phi l lp trong tnh) c th truy nhp tt c cc thnh
phn ca lp bao n, song khng th ngc li.

V. Chng trnh JAVA u tin


c th bin dch v chy cc chng trnh java ta phi ci
JRE (Java Runtime Enviroment) mi trng thc thi ca java, n bao gm:
JVM (Java Virtual Machine) my o java v cc chng trnh java c thng
dch v chy trn my o java v tp cc th vin cn thit chy cc ng
dng java.
B cng c bin dch v thng dch JDK ca Sun Microsystem
Sau khi ci t JDK (gi s th mc ci t l C:\JDK1.4) ta s nhn c mt cu
trc th mc nh sau:

- bin dch mt chng trnh java sang m byte code ta dng lnh
C:\JDK1.4\BIN\javac TnTp.java
- thng dch v chy chng trnh ta s dng lnh
C:\JDK1.4\BIN\java TnTp
bin dch v chy chng trnh Java n gin ta nn thit t hai bin mi
trng paht v classpath nh sau:
- i vi dng WinNT:
+

R-Click

vo

My

Computer

Advanced Enviroment Variables

chn

Properties

chn

+ Trong phn System variables chn new thm bin mi trng mi,
trong hp thoi hin ra g classpath vo Variable Name v
.;C:\jdk1.4\lib\tools.jar;C:\jdk1.4\lib\dt.jar;C:\jdk1.4\jre\lib\rt.jar trong
variable value (ch khng g du vo, mc ch cho d nhn m thi)

+ Cng trong phn System variables tm n phn path trong danh


sch chn edit sa li gi tr hin c, trong value ta thm vo cui
;C:\jdk1.4\bin
Cng vic t cc bin mi trng xong, thy c tc dng ca cc
bin mi trng ta cn phi khi ng li my
- i vi dng Win9X:
M tp C:\Autoexec.bat sau thm vo hai dng sau:
+classpath=.;C:\jdk1.4\lib\tools.jar;C:\jdk1.4\lib\dt.jar;C:\jdk1.4\jre\lib\rt.ja
r
+ path=;c:\jdk1.4\bin
Khi ng li my thy c tc dng ca cc bin mi trng ny
V d u tin: chng trnh Hello World (chng trnh khi chy s in ra mn hnh
li cho Hello World)
Cc bc:
M mt chng trnh son tho vn bn h tr asciii, nh notepad, wordpad,
EditPlus v g vo cc dng sau:

public class HelloWorld {


public static void main(String[] args){
System.out.println("Hello World");
}
}
Ghi li vi ci tn C:\HelloWorld.java (ch tn tp phi trng vi tn lp, k
c ch hoa ch thng, phn m rng l java)
- M ca s DOS Prompt
+ chuyn vo th mc C:\
+ G lnh javac HelloWorld.java bin dch chng trnh, nu vic bin
dch

thnh cng (chng trnh khng c li c php) th ta s thu c

tp

HelloWorld.class trong cng th mc, nu trong chng trnh cn

li c php

th trong bc ny ta s nhn c mt thng bo li v lc

ny tp HelloWorld.class cng khng c to ra

+ G lnh java HelloWorld (ch khng g phn m rng) chy chng


trnh HelloWorld.
Sau khi thng dch v chy ta nhn c

VI. Ch thch trong chng trnh

Trong java ta c 3 cch ghi ch thch


Cch 1: s dng cp /* v */ ngha ca cp ch thch ny ging nh ca C, C++
Cch 2: s dng cp // ngha ca cp ch thch ny ging nh ca C, C++
Cch 3: s dng cp /** v */, y l kiu ch thch ti liu (khng c trong
C/C++), n dng to ra ti liu ch thch cho chng trnh.
Vi cch th nht v cch ba ta c th vit ch thch trn nhiu dng, vi cch ch
thch hai ta ch c th ch thch trn mt dng.
Ch : trong java ta c th t ch thch u?, cu tr li l: u c th t
c mt du cch th c th t ch thch.
VII. Kiu d liu
1. Cc kiu d liu nguyn thu
T kho

M t

Kch c

Ti thiu

Ti a

Lp bao

(kiu s nguyn)
byte

s nguyn mt byte

8 bit

-128

127

Byte

short

s nguyn ngn

16 bit

-215

215-1

Short

int

s nguyn

32 bit

-231

231-1

Integer

long

s nguyn di

64 bit

-263

-263-1

Long

IEEE754

IEEE75 Float

(kiu s thc)
float

kiu thc vi chnh 32 bit


xc n

double

Double-precision

4
64 bit

IEEE754

floating point

IEEE75 Double
4

(kiu khc)
char

kiu k t

16 bit

Unicode 0

Unicode Character
216-1

boolean

kiu logic

true hoc false -

Boolean

void

Void

c im ca cc bin c kiu nguyn thy l vng nh ca chng c cp pht


phn stack. Do vy vic truy xut vo mt bin kiu nguyn thy rt nhanh.
2. Kiu tham chiu
Trong Java c 3 kiu d liu tham chiu
Kiu d liu

M t

Mng (Array)

Tp hp cc d liu cng kiu.

Lp (Class)

L s ci t m t v mt i tng trong bi ton.

Giao din

L mt lp thun tru tng c to ra cho php ci t

(Interface)

a tha k trong Java.

c im ca cc bin kiu tham chiu l n cha a ch ca i tng m


n tr n.
Vng nh ca bin tham chiu c cp pht vng nh stack cn vng
nh ca i tng c cp pht vng nh heap. Vic truy xt vo vng nh
heap chm hn truy xt vo vng nh stack tuy nhin java c c ch cho php truy
cp vo vng nh heap vi tc xp x bng tc truy cp vo vng nh stack.

VIII. Khai bo bin


1. Khai bo bin
Tng t ngn ng C/C++, khai bo bin trong java ta s dng c php
sau:
type name [=InitValue];

trong :
type l kiu d liu cu bin
name l tn ca bin, tn bin l mt xu k t c t theo quy tc t tn
ca java
InitValue l gi tr khi to cho bin, y l phn tu chn, nu b qua phn
ny th gi tr ban u ca bin c khi to gi tr mc nh
Ch :
- Nu cn khai bo nhiu bin c cng mt kiu d liu ta c th t cc khai bo
cc bin trn mt dng, cc bin ny c phn cch nhau bi du phy
- Java s x l cc bin khng c khi u gi tr nh sau:
+ i vi thuc tnh (bin c khai bo trong phm vi ca lp) th Java s
t ng khi gn gi tr cho cc bin theo quy tc sau:
+ gi tr 0 cho kiu d liu s
+ false cho kiu logic
+ k t null (m 0) cho k t
+ gi tr null cho kiu i tng
+ i vi cc bin cc b th bin khng c khi gn gi tr mc nh, tuy
nhin Java s bo li nu ta s dng mt bin cha c nhn gi tr
2. phm vi bin
Mi bin c khai bo ra c mt phm vi hot ng, phm vi ca bin l
ni m bin c th c truy cp, iu ny xc nh c tnh thy c v thi gian
sng ca bin.

bin phm vi lp l bin c khai bo bn trong lp nhng bn ngoi cc


phng thc v hm to, tuy nhin vic khai bo phi xut hin trc khi bin
c s dng
bin phm vi cc b l bin c khai bo bn trong mt khi, phm vi ca
bin tnh t im bin c khai bo cho n cui khi m bin c khai bo
V d:
{
int i=1;
// ch c i sn sng s dng
{
int j=10;
// c i v j u sn sng
}
// ch c i sn sng
// j khng sn sng v nm ngoi phm vi
}
Ch : Ta khng th lm iu sau cho d n c th trong C/C++
{

int i=1;
{
int i=10;// khng c php v c mt bin cng tn vi n
}
}
nhng ngi thit k java cho rng iu c th gy ln ln, do vy h quyt
nh khng cho php che giu mt bin phm vi ln hn.
Ch : thi gian sng ca cc i tng khng tun theo quy lut thi gian sng
ca cc bin kiu nguyn thu.
VII. Mt s php ton trn kiu d liu nguyn thu
1. Php gn
C php Bin=BiuThc;
Php gn c thc hin bng ton t =, n c ngha l hy tnh ton gi
tr biu thc bn phi du gn, sau a gi tr vo nh c tn nm bn
tri du gn
Ch :
+ cu lnh gn gm mt du =
+ kiu ca biu thc bn phi du gn phi tng thch vi kiu d liu ca bin
+ trong java ta c th thc hin mt dy gn nh sau:
i = j = 10;// c i v j u c gi tr 10
2. Ton t ton hc
Ngn ng java cng c cc php ton s hc nh cc ngn ng khc: + ( php
cng), - ( php tr ), * ( php nhn ),/ ( php chia ), % ( php ton chia ly phn
nguyn)
Ta m t tm tt cc php ton s hc qua bng tng kt sau:

Php ton

S dng

M t

op1 + op2

Cng op1 viop2

op1 - op2

Tr op1 cho op2

op1 * op2

Nhn op1 vi op2

op1/ op2

chia op1 cho op2

op1 % op2

Tnh phn d ca php chia op1 cho op2

3. Ton t tng, gim


Ging nh ngn ng C/C++, java cng c php ton tng, gim, ta c th m t
tm tt qua cc bng sau:
Php ton

S dng

++

op++

++

++op

--

op--

--

--op

M t
Tng op ln 1 n v, gi tr ca op c tng ln trc khi biu
thc cha n c tnh
Tng op ln 1 n v, gi tr ca op c tng ln sau khi biu thc
cha n c tnh
Gim op xung1 n v, gi tr ca op c gim xung trc khi
biu thc cha n c tnh
Gim op xung1 n v, gi tr ca op c gim xung sau khi
biu thc cha n c tnh

Ch : nu ton t tng trc, tng sau(gim trc, gim sau) ng mt


mnh(khng nm trong biu thc ) th chng hot ng nh nhau, chng ch khc
nhau khi chng nm trong biu thc
4. Php ton quan h
Php ton quan h bao gi cng cho kt qu boolean, php ton quan h s so snh
2 gi tr, n xc nh mi quan h gia chng, v d! = s tr v true nu 2 ton
hng l khc nhau.
Ta tm tt cc php ton qua bng sau:

Php ton

S dng

Nhn v gi tr true khi

>

op1 > op2

op1 ln hn op2

>=

op1 >= op2

op1 ln hn hoc bng op2

<

op1 < op2

op1 nh hn op2

<=

op1 <= op2

op1 nh hn hoc bng op2

==

op1 == op2

op1 bng op2

!=

op1! = op2

op1 khc op2

V d s dng cc php ton quan h


public class RelationalDemo {
public static void main(String[] args) {
// a few numbers
int i = 37;
int j = 42;
int k = 42;
System.out.println("Variable values...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" k = " + k);
//greater than
System.out.println("Greater than...");
System.out.println(" i > j = " + (i > j));

// false

System.out.println(" j > i = " + (j > i));// true


System.out.println(" k > j = " + (k > j));// false, they are equal

//greater than or equal to


System.out.println("Greater than or equal to...");
System.out.println(" i >= j = " + (i >= j));// false
System.out.println(" j >= i = " + (j >= i));// true
System.out.println(" k >= j = " + (k >= j));// true
//less than
System.out.println("Less than...");
System.out.println(" i < j = " + (i < j));// true
System.out.println(" j < i = " + (j < i));// false
System.out.println(" k < j = " + (k < j));// false
//less than or equal to
System.out.println("Less than or equal to...");
System.out.println(" i <= j = " + (i <= j));// true
System.out.println(" j <= i = " + (j <= i));// false
System.out.println(" k <= j = " + (k <= j));// true
//equal to
System.out.println("Equal to...");
System.out.println(" i == j = " + (i == j));// false
System.out.println(" k == j = " + (k == j));// true
//not equal to
System.out.println("Not equal to...");
System.out.println(" i! = j = " + (i! = j));// true
System.out.println(" k! = j = " + (k! = j));// false
}

}
y l u ra ca chng trnh
Variable values...
i = 37
j = 42
k = 42
Greater than...
i > j = false
j > i = true
k > j = false
Greater than or equal to...
i >= j = false
j >= i = true
k >= j = true
Less than...
i < j = true
j < i = false
k < j = false
Less than or equal to...
i <= j = true
j <= i = false
k <= j = true
Equal to...
i == j = false
k == j = true
Not equal to...
i! = j = true
k! = j = false

5. Php ton logic


Java h tr 6 php ton logic c ch ra trong bng sau:
Php ton

S dng

&&

op1 && op2

||

op1 || op2

! op

&

op1 & op2

op1 | op2

op1 ^ op2

Nhn v gi tr true khi


C op1 v op2 u l true, gi tr ca op2 ch c tnh
khi op1 l true
Hoc op1 hoc op2 l true, gi tr ca op2 ch c tnh
khi op1 l false
op l false
C op1 v op2 u l true, gi tr ca op2 lun c tnh
k c khi op1 l false
Hoc op1 hoc op2 l true, gi tr ca op2 lun lun c
tnh k c khi op1 l true
Nu op1 khc op2

Nhn xt:
+ Php ton && ( & ) ch nhn gi tr true khi v ch khi c hai ton hng u l
true
+ Php ton || ( | ) ch nhn gi tr false khi v ch khi c hai ton hng l false
+ Php ton ^ ch nhn gi tr true khi v ch khi hai ton hng khc nhau
6. php ton thao tc trn bit
6.1. Php ton dch bit
Ta s m t php ton dch chuyn qua bng sau:
Php ton

S dng

>>

op1 >> op2

<<

op1 << op2

Kt qu
Dch chuyn op1 sang phi op2 bit, op2 bit pha bn phi s
c in bng cc bt 0
Dch chuyn op1 sang tri op2 bit(gi nguyn du ca op1),
op2 bit nm bn tri s c in bng cc bt 0

>>>

op1>>> op2

Dch chuyn op1 sang phi op2 bit, op2 bit

Sau y l hnh minh ho php ton dch bt

V d:
13>>1=6 v 13=11012 do vy khi dch phi mt bit ta s c 1102=6
5<<1=10 v 5=1012 do vy khi dch tri 1 bit ta s c 10102=10
5<<2=100 v 5=1012 do vy khi dch tri 2 bit ta s c 101002=100
Nhn xt: php ton dch tri mt bit chnh l php nhn vi 2, cn dch phi
chnh l php chia cho 2
6.2. Php ton logic trn bit

Cc php ton thao tc bit cho php ta thao tc trn tng bit ring l trong mt
kiu d liu thch hp, cc php ton thao tc bit thc hin i s boolean trn cc
bit tng ng ca 2 ton hng to ra kt qu
Ta tm tt cc php ton trong bng sau:
Php ton

S dng

Thc hin

&

op1 & op2

Thc hin php and cc bit tng ng ca op1 vi op2

op1 | op2

Thc hin php or cc bit tng ng ca op1 vi op2

op1 ^ op2

Thc hin php xor cc bit tng ng ca op1 vi op2

~op2

Thc hin php lt cc bit ca op2

Bng gi tr chn l ca cc php ton i s boolean:


Php AND
op1

op2 Result

Php OR
op1 op2 Result
0

Php XOR
op1

op
2

Result

Php NOT
op1

Result

V d:
1101// 13
& 1100// 12
-----1100// 12
1101// 13
| 1100// 12
-----1101// 13

1101// 13
^ 1100// 12
-----0001// 1

! 10101=01010
7. Ton t gn tt
Ging nh C/C++ java cng c ton t gn, ta tm tt cc ton t gn qua
bng sau:
Php gn

S dng

Tng ng

+=

op1 += op2

op1 = op1 + op2

-=

op1 -= op2

op1 = op1 - op2

*=

op1 *= op2

op1 = op1 * op2

/=

op1/ = op2

op1 = op1/ op2

%=

op1 %= op2

op1 = op1 % op2

&=

op1 &= op2

op1 = op1 & op2

|=

op1 |= op2

op1 = op1 | op2

^=

op1 ^= op2

op1 = op1 ^ op2

<<=

op1 <<= op2

op1 = op1 << op2

>>=

op1 >>= op2

op1 = op1 >> op2

>>>=

op1 >>>= op2

op1 = op1 >>> op2

8. Th t u tin ca cc php ton


Th t u tin ca cc php ton xc nh trnh t tnh ton gi tr ca mt biu
thc, java c nhng quy tc ring xc nh trnh t tnh ton ca biu thc, ta
phi nh quy tc sau:
cc php ton mt ngi bao gi cng c thc hin trc tin
trong mt biu thc c nhiu php ton th php ton no c u tin cao hn
s c thc hin trc php ton c u tin thp
trong mt biu thc c nhiu php ton c u tin ngang nhau th chng s

c tnh theo trnh t t tri qua phi


Ta c bng tm tt th t u tin ca cc php ton trong bng sau:
postfix operators

[]. (params) expr++ expr--

unary operators

++expr --expr +expr -expr ~!

creation or cast

new (type)expr

multiplicative

*/ %

additive

+-

shift

<< >> >>>

relational

< > <= >= instanceof

equality

==! =

Bitwise AND

&

Bitwise exclusive OR

Bitwise inclusive OR

Logical AND

&&

Logical OR

||

Conditional

?:

Assignment

= += -= *=/ = %= &= ^= |= <<= >>= >>>=

Trong bng trn th t u tin ca cc php ton c gim t trn xung di,
trn cng mt hng th chng c u tin ngang nhau.
1. Ton t dy
Khng ging nh C/C++, trong java ch duy nht m ta c th t ton t dy l
bn trong cp ngoc trn ca cu trc for( s c m t chi tit trong chng sau
)
IX. Ton t chuyn kiu
9.1 Chuyn i kiu khng tng minh

Vic chuyn i kiu thng c din ra mt cch t ng trong trng


hp biu thc gm nhiu ton hng c kiu d liu khc nhau. iu ny i khi
lm cho bn kh ngc nhin v nhn c mt kt qu khng theo mun. V d
ta xt on trnh sau:
int two=2, three=3;
float result=1.5 +three/two;
kt qu nhn c ca result l 2.5. iu m bn mong mun l 3.0 ch khng
phi l 2.5. Kt qu 2.5 nhn c l do three v two l hai gi tr nguyn nn kt
qu ca php chia three/two cho ta mt gi tr nguyn bng 1 ch khng phi l
1.5. ni rng kt qu ca php chia three/two l mt gi tr thc ch khng
phi l mt gi tr nguyn th mt trong hai ton hng ca php chia ny phi l
mt s thc. Do vy ta cn phi chuyn kiu ca mt trong hai ton hng ny hoc
c hai thnh s thc. nhn c kt qu ng trong trng hp ny bn cn
vit nh sau:
float result=1.5 +(float)three/two; hoc
float result=1.5 +three/(float)two; hoc
float result=1.5 +(float)three/(float)two;
L do m ta vit nh trn l nu trong mt php ton c s tham gia ca nhiu
ton hng c kiu khc nhau th java s chuyn kiu t ng cho cc ton hng
mt cch t ng theo quy tc sau:
byte -> short -> int -> long -> float -> double
9.2. Chuyn i kiu tng minh
chuyn i kiu mt cch tng minh ta s dng c php sau:
(type) biu_thc;
khi gp cu lnh ny java s tnh ton gi tr ca biu thc sau chuyn i kiu
gi tr ca biu thc thnh kiu type.
V d:
(int) 2.5 * 2 = 4

(int) 2.5 * 2.5 = 5


(int)(2.5 * 2.5) = 6
1+(float)5/2=1+5/(float)2=1+(float)5/(float)2=3.5
Ch :
1.

Php ton chuyn kiu l php ton c u tin cao, nn


(int)3.5*2(int)(3.4*2)

2.

Cn ch khi chuyn mt biu thc kiu d liu c min gi tr ln sang


mt kiu c min gi tr nh hn. Trong trng hp ny c th bn s b
mt thng tin.

X. Cc hm ton hc
Cc hm ton hc nh sin, cos, sqrt c java vit sn trong lp Math. Lp
ny nm trong gi java.lang (gi mc nh) do vy bn khng cn phi thm cu
lnh import u chng trnh c th s dng lp ny. Cc hm ny c vit
l cc phng thc tnh do vy ta khng cn phi to ra th hin ca lp Math.
Bng sau lit k mt s phng thc tnh trong lp Math:

Tn phng thc
sin(arg)

M t ngha
tnh sin ca arg

Kiu tham s

Kiu tr v

arg l mt biu double


thc kiu double
th hin mt cung
theo radians

cos(arg)

tnh cos ca arg

arg l mt biu double


thc kiu double
th hin mt cung
theo radians

tan(arg)

tnh tang ca arg

arg l mt biu double


thc kiu double
th hin mt cung
theo radians

asin(arg)

tnh sin-1 (arcsin) arg l mt biu double trong h


thc kiu double radians

arg

th hin mt cung
theo radians
acos(arg)

tnh

cos-1 arg l mt biu double trong h

(arccosin) ca arg

thc kiu double radians


th hin mt cung
theo radians

atan(arg)

tnh

tan-1 arg l mt biu double trong h

(arctang) ca arg

thc kiu double radians


th hin mt cung
theo radians

atan2 (arg1,arg2)

tnh
(arctang) ca
arg1/arg2

tan-1 arg1,arg2 l cc double trong h


biu

thc

double
mt

kiu radians

th

hin

cung

theo

radians
abs(arg)

tnh tr tuyt i arg l mt biu The same type as


ca arg

thc kiu int, long, the argument


float, hoc double

max (arg1,arg2)

Nhn v gi tr ln arg1, arg2 l mt Nhn v kiu cng

trong hai tham s

biu thc kiu int, kiu vi tham s


long, float, hoc
double

min (arg1,arg2)

Nhn v gi tr arg1, arg2 l mt Nhn v kiu cng


nh trong hai tham biu thc kiu int, kiu vi tham s
long, float, hoc

double
ceil(arg)

Nhn v gi tr arg l biu thc double


nguyn nh hn kiu
hoc bng arg

floor(arg)

hoc

double

Nhn v gi tr arg l biu thc double


nguyn ln hn kiu
hoc bng arg

round(arg)

float

Tr

nguyn

gi
gn

float

hoc

double
tr arg l biu thc Nhn v kiu int
arg kiu

float

hoc nu arg kiu float,

nht, gi tr ny double

nhn v kiu long

chnh l gi tr ca

nu

arg sau khi lm

double

trn
rint(arg)

Ging
round(arg)

sqrt(arg)

pow (arg1,arg2)

nh arg l biu thc double


kiu double

tnh cn bc hai arg l biu thc double


ca arg

kiu double

tnh arg1arg2

C arg1 v arg2 l double


cc biu thc kiu

arg

kiu

double
exp(arg)

tnh earg

arg l biu thc double


kiu double

log(arg)

tnh logarithm s arg l biu thc double


e ca arg

random()

kiu double

Nhn v mt s Khng c tham s


gi

ngu

double

nhin

nm trong khon
[0, 1)

V d v cc hm ton hc trong lp Math, bn hy g on chng trnh sau v


cho chy th thy c kt qu tnh ton ca cc hm ton hc.
XI. Cc php ton trn kiu k t
i vi kiu k t ta c th thc hin cc php ton s hc (nh: +, -, *,/ ) v cc
php ton quan h.
V d:
char kt1=A;
char kt2=tk1+a;// kt2 nhn k t B
char kt3=(char)33*2;// kt3 nhn k t B
(kt1>kt2)= false;
(kt2=kt3)= false;

BI 3 IU KHIN LUNG CHNG TRNH


Chng trnh l mt dy cc lnh c b tr thc hin theo mt trnh t
no , nhng i khi ta mun iu khin lung thc hin ca chng trnh tu
thuc vo iu kin g . Ngn ng lp trnh java cung cp mt s pht biu cho
php ta iu khin lung thc hin ca chng trnh, chng c lit k trong
bng sau:
Kiu lnh

T kho

Lp

while, do-while, for

Quyt nh

if-else, switch-case

X l li

try-catch-finally, throw

R nhnh

break, continue, label:, return

I. cu trc r nhnh
1.1. pht biu if
a) dng khuyt
C php
if(Boolean-expression)
statement;
s hot ng ca cu trc if thiu c m ta qua s sau:

b) dng
C php
if(Boolean-expression)
statement1;
else
statement2;
s hot ng ca cu trc if thiu c m ta qua s sau:

1.2. biu thc iu kin


C php:
Variable=booleanExpression? true-result-expression:
false-result-expression;
1.3. cu trc switch
a) Dng khuyt
C php
switch(biu_thc) {
case gt_1:
lnh 1; [ break;]
case gt_2:
lnh 2; [ break;]

case gt_n:
lnh n; [ break;]

}
Sau y l s khi m t s hot ng ca cu trc r nhnh switch dng thiu
b) Dng
C php
switch(biu_thc) {
case gt_1:
lnh 1; [ break;]
case gt_2:
lnh 2; [ break;]

case gt_n:
lnh n; [ break;]
default:
lnh n+1;
}
Sau y l s khi m t s hot ng ca cu trc switch dng
Ch :
- biu_thc phi l mt biu thc c kiu char, byte, short, int nhng khng th l
kiu long, nu biu_thc c kiu khc vi cc kiu lit k trn th java s a ra
mt thng bo li.
- Nu biu_thc bng gi tr ca gt_i th cc lnh t lnh i cho n lnh n nu
khng c default (lnh n+1 nu c default) s c thc hin.
- Cu lnh break thot ra khi cu trc switch.
S khi m t s hot ng ca cu trc switch trong trng hp c lnh break

1.4 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. hay ni cch khc ton t iu kin l ton t 3 ngi.
C php :
biu thc 1? biu thc 2 : biu thc 3;
Trong
biu thc 1: Biu thc 1 l mt biu thc logic. Tc l n tr tr v gi tr True
hoc False
biu thc 2: Gi tr tr v nu biu thc 1 nhn gi True.
biu thc 3: Gi tr tr v nu biu thc 1 nhn gi tr False
Ch : Kiu gi tr ca biu thc 2 v biu thc 3 phi tng thch vi nhau.
V d: on biu thc iu kin sau tr v gi tr a l s chn nu nh gi tr ca
bin a l s chn, ngc li tr v gi tr a l s l nu nh gi tr ca bin a l s
l.
String result=a%2==0 ? a l s chn : a l s l;

II. Cu trc lp while v do-while


1. Lp kim tra iu kin trc
Ta c th s dng cu trc while thc thi lp i lp li mt lnh hoc mt khi
lnh trong khi iu kin ng
C php:

while (BooleanExpression) {
statement;
}
ta c th thy c lung thc hin ca chng trnh thng qua s khi sau:

trc tin pht biu while s tnh gi tr ca biu thc logic, nu gi tr ca biu
thc logic l ng th cu lnh trong thn ca while s c thc hin, sau khi
thc hin xong n tnh li gi tr ca biu thc logic, nu gi tr ng n li tip
tc thc hin lnh trong thn while cho n khi gi tr ca biu thc sai.
V d:
public class WhileDemo {
public static void main(String[] args) {
String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
while (c! = 'g') {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
}
System.out.println(copyToMe);
}

}
Ch :
+ biu thc bn trong cp ngoc trn phi l mt biu thc logic ( biu thc
tr v gi tr true hoc false )
+ biu thc iu kin phi nm trong cp ngoc trn
+ sau t kho while ta ch c th t c duy nht mt lnh, do vy c
th thc hin nhiu tc v sau while ta phi bao chng trong mt khi lnh
+ bn trong thn ca vng lp while ta nn c lnh lm thay i gi tr ca
biu thc logic, nu khng chng ta s ri vo vng lp v hn.
+ cu lnh trong thn cu trc while c th khng c thc hin ln no
(do biu thc lgic ban u c gi tr false )
2. Lp kim tra iu kin sau
C php:
do {
statement(s);
} while (expression);
s hot ng ca cu trc ny c th hin qua s sau:
Nhn vo s ny ta thy s hot ng ca n nh sau:
b1) thc hin lnh
b2) sau khi thc hin lnh xong n tnh gi tr ca biu thc logic
b3) nu biu thc logic ng n quay tr li b1, nu sai th b4
b4) kt thc vng lp v thc hin lnh sau do-while
v d:
public class DoWhileDemo {

public static void main(String[] args) {


String copyFromMe = "Copy this string until you " +
"encounter the letter 'g'.";
StringBuffer copyToMe = new StringBuffer();
int i = 0;
char c = copyFromMe.charAt(i);
do {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
} while (c! = 'g');
System.out.println(copyToMe);
}
}
Ch :
+ biu thc bn trong cp ngoc trn phi l mt biu thc logic ( biu thc
tr v gi tr true hoc false )
+ biu thc iu kin phi nm trong cp ngoc trn
+ sau t kho do ta c th t c nhiu lnh
+ bn trong thn ca vng lp do-while ta nn c lnh lm thay i gi tr
ca biu thc logic, nu khng chng ta s ri vo vng lp v hn.
+ cu lnh trong thn cu trc do-while c thc hin t nht mt ln
III. Cu trc for
y la cu trc lp ph bin nht trong cc ngn ng lp trnh, m ni dung cu
vng lp cn phi lp i lp li mt s ln bit trc, c php ca n nh sau:

for (initialization; termination; increment) {


statement
}
Trong :
- initialization l gi tr khi to trc khi vng lp bt u, n ch c thc hin
duy nht mt ln trc khi vng lp bt u
- termination l iu kin dng kt thc qu trnh lp
- increment l cu lnh dng iu khin qu trnh lp
- statement l cu lnh m ta cn phi thc hin lp i lp li.
S khi din gii s hot ng ca cu trc for sau:
Nhn xt:
+ thn ca cu trc lp for ta ch c th t c duy nht mt lnh, do vy
c th thc hin nhiu tc v trong thn for ta phi bao chng trong khi
lnh
+ thn vng lp for c th khng c thc hin ln no
+ cc phn initialization, termination, increment c th khuyt tuy nhin
dy phy dnh cho n vn phi c
+ s ln thc hin initialization=1
+ s ln thc hin termination = s ln lp +1
+ s ln thc hin increment = s ln lp
+ ta c th t mt vi khai bo bin trong phn initialization, nh v d sau
+ ta c th m t cu trc while thng qua cu trc for nh sau
for(; Boolean_Expression;) statement;
V d: kit k ra 128 cc k t asciii u tin
public class ListCharacters {
public static void main(String[] args) {
for( char c = 0; c < 128; c++)

if (c! = 26 )// ANSI Clear screen


System.out.println(
"value: " + (int)c +
" character: " + c);
}
}// /:~
Ton t dy v vng lp for
Trong bi trc ta nhc n ton t dy (ton t dy l mt dy cc lnh n
c cch nhau bi du phy), trong java ch duy nht m ta c th t ton t
dy l bn trong cu trc lp for, ta c th t ton t dy c trong phn
initialization ln phn increment
V d v ton t dy
public class CommaOperator {
public static void main(String[] args) {
for(int i = 1, j = i + 10; i < 5;
i++, j = i * 2) {
System.out.println("i= " + i + " j= " + j);
}
}
}
Kt qu chy chng trnh sau:
i= 1 j= 11
i= 2 j= 4
i= 3 j= 6
i= 4 j= 8
IV. Lnh break v continue
Bn trong thn ca cc cu trc lp ta c th iu khin lung thc hin bng cch

s dng lnh break v continue, lnh break s chm dt qu trnh lp m khng


thc hin nt phn cn li ca cu trc lp, continue s ngng thc thi phn cn li
ca thn vng lp v chuyn iu khin v im bt u ca vng lp, thc
hin ln lp tip theo, v d sau ch ra cch s dng break v continue bn trong
cu trc lp for v while
public class BreakAndContinue {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
if(i == 74) break;// Out of for loop
if(i % 9! = 0) continue;// Next iteration
System.out.println(i);
}
int i = 0;
// An "infinite loop":
while(true) {
i++;
int j = i * 27;
if(j == 1269) break;// Out of loop
if(i % 10! = 0) continue;// Top of loop
System.out.println(i);
}
}
}
kt qu chy chng trnh sau:
0
9
18
27

36
45
54
63
72
10
20
30
40
Bn trong cu trc lp for gi tr ca i khng th t c gi tr 100 v pht biu
break s kt thc vng lp khi i=74
Ch : Java khng c lnh nhy goto, tuy nhin trong java vn c mt vi vt
tch ca lnh nhy goto ( kht ting v c coi l ngun sinh cc li ) l lnh
break v continue
Nhn ca vng lp
Trong thc t cc vng lp c th lng vo nhau, mc lng nhau khng hn
ch, th th cu hi t ra l lnh break s thot ra khi vng lp no, cu tr li l
n thot ra khi vng lp m lnh break c t, th th lm cch no ta c th
cho n thot ra khi mt vng lp tu no , cu tr li l java h tr cho ta
mt cng c l nhn ca vng lp.
Nhn l mt ci tn sau c 2 du chm
V d LabelName:
Ch duy nht m nhn c ngha l ngay trc lnh lp, ta khng th c bt c
mt lnh no nm gia nhn v lnh lp, ta m t s hot ng, cch s dng nhn
ca vng lp thng qua v d sau:
public class LabeledFor {

public static void (String[] args) {


int i = 0;
outer:// Can't have statements here
for(; true; ) {// infinite loop
inner:// Can't have statements here
for(; i < 10; i++) {
prt("i = " + i);
if(i == 2) {
prt("continue");
continue;
}
if(i == 3) {
prt("break");
i++;// Otherwise i never
// gets incremented.
break;
}
if(i == 7) {
prt("continue outer");
i++;// Otherwise i never
// gets incremented.
continue outer;
}
if(i == 8) {
prt("break outer");
break outer;
}
for(int k = 0; k < 5; k++) {
if(k == 3) {

prt("continue inner");
continue inner;
}
}
}
}
// Can't break or continue
// to labels here
}
static void prt(String s) {
System.out.println(s);
}
}
kt qu chy chng trnh nh sau:
i=0
continue inner
i=1
continue inner
i=2
continue
i=3
break
i=4
continue inner
i=5
continue inner
i=6

continue inner
i=7
continue outer
i=8
break outer

Chng 2
LP TRNH HNG I TNG

Lp l khi nim trng tm ca lp trnh hng i tng, java l ngn ng


lp trnh hng i tng, mt chng trnh java gm mt tp cc i tng, cc
i tng ny phi hp vi nhau to thnh mt ng dng hon chnh. Cc i
tng c m t qua khi nim lp, lp l s m rng khi nim RECORD trong
pascal, hay struct ca C, ngoi cc thnh phn d liu, lp cn c cc hm (
phng thc, hnh vi ), ta c th xem lp l mt kiu d liu, v vy ngi ta cn
gi lp l kiu d liu i tng. Sau khi nh ngha lp ta c th to ra cc i
tng ( bng cch khai bo bin ) ca lp va to, do vy c th quan nim lp l
tp hp cc i tng cng kiu.

BI 1 NH NGHA LP
I. Khai bo lp
1.1. Mt lp c nh ngha theo mu sau:
[pbulic][final][abstract] class <tn_lp>{
// khai bo cc thuc tnh
// khai bo cc phng thc
}
sau u l v d n gin nh ngha lp ngn xp:

Tng qut: mt lp c khai bo dng sau:

[public][<abstract><final>][ class <Tn lp>


[extends <Tn lp cha>] [implements <Tn giao din>] {
<Cc thnh phn ca lp, bao gm: thuc tnh v phng thc>
}
Trong :
1) bi mc nh mt lp ch c th s dng bi mt lp khc trong cng mt gi
vi lp , nu mun gi khc c th s dng lp ny th lp ny phi c
khai bo l lp public.
2) abstract l b t cho java bit y l mt lp tru tng, do vy ta khng th
to ra mt th hin ca lp ny
3) final l b t cho java bit y l mt lp khng th k tha
4) class l t kho cho chng trnh bit ta ang khai bo mt lp, lp ny c tn
l NameOfClass
5) extends l t kho cho java bit lp ny ny c k tha t lp super
6) implements l t kho cho java bit lp ny s trin khai giao din Interfaces,
y l mt dng tng t nh k tha bi ca java.
Ch :
1) Thuc tnh ca lp l mt bin c kiu d liu bt k, n c th li l mt bin
c kiu l chnh lp
2) Khi khai bo cc thnh phn ca lp (thuc tnh v phng thc) c th dng
mt trong cc t kho private, public, protected gio hn s truy cp n
thnh

phn

cc thnh phn private ch c th s dng c bn trong lp, ta khng th


truy

cp

vo

cc

thnh

phn

private

bn

ngoi

lp

Cc thnh phn public c th truy cp c c bn trong lp ln bn ngoi


lp.
cc thnh phn protected tng t nh cc thnh phn private, nhng c th

truy

cp

bt

lp

con

no

tha

n.

Nu mt thnh phn ca lp khi khai bo m khng s dng mt trong 3 b


t protected, private, public th s truy cp l bn b, tc l thnh phn ny c
th truy cp c t bt c lp no trong cng gi vi lp .
3) Cc thuc tnh nn mc truy cp private m bo tnh du kn v lc
bn ngoi phm vi ca lp c th truy cp c n thnh phn private ny
ta phi to ra cc phng thc phng thc get v set.
4) Cc phng thc thng khai bo l public, chng c th truy cp t bt c
u.
5) Trong mt tp chng trnh (hay cn gi l mt n v bin dch) ch c mt
lp c khai bo l public, v tn lp public ny phi trng vi tn ca tp k
c ch hoa, ch thng
- Khai bo thuc tnh
Tr li lp Stack
public class Stack {
private Vector items;
// a method with same name as a member variable
public Vector items() {
...
}
}
Trong lp Stack trn ta c mt thuc tnh c nh ngha nh sau:
private Vector items;
Vic khai bo nh trn c gi l khai bo thuc tnh hay cn gi l bin thnh
vin lp

Tng qut vic khai bo mt thuc tnh c vit theo mu sau:

Trong :
accessLevel c th l mt trong cc t public, private, protected hoc c th b
trng, ngha ca cc b t ny c m t phn trn
-

static l t kho bo rng y l mt thuc tnh lp, n l mt thuc tnh s

dng chung cho c lp, n khng l ca ring mt i tng no.


-

transient v volatile cha c dng

type l mt kiu d liu no

name l tn ca thuc tnh


Ch : Ta phi phn bit c vic khai bo nh th no l khai bo thuc tnh,
khai bo th no l khai bo bin thng thng? Cu tr li l tt c cc khai bo
bn trong thn ca mt lp v bn ngoi tt c cc phng thc v hm to th
l khai bo thuc tnh, khai bo nhng ch khc s cho ta bin.
- Khai bo phng thc
Trong lp Stack trn ta c phng thc push dng y mt i tng vo nh
ngn xp, n c nh ngha nh sau:

Cng ging nh mt lp, mt phng thc cng gm c 2 phn: phn khai bo v

phn thn
- Phn khai bo gm c nhng phn sau( chi tit ca khai bo c m t sau):

- Phn thn ca phng thc gm cc lnh m t hnh vi ca phng thc, cc


hnh vi ny c vit bng cc lnh ca java.
II. Chi tit v khai bo mt phng thc
1. Tng qut mt phng thc c khai bo nh sau:
accessLevel

//m t mc truy cp n phng thc

static

//y l phng thc lp

abstract

//y l phng thc khng c ci t

final

//phng thc ny khng th ghi

native

//phng thc ny c vit trong mt ngn ng khc

synchronized

//y l phng thc ng b

returnType

//gi tr tr v ca phng thc

MethodName

//tn ca phng thc

throws

//khai bo cc ngoi l c th c nem ra t phng

exception

thc

Trong :
- accessLevel c th l mt trong cc t kho public, private, protected hoc b
trng, ngha ca cc b t ny c m t trong phn khai bo lp
- static l t kho bo cho java bit y l mt phng thc lp
- abstract t kho cho bit y l mt lp tru tng, n khng c ci t.
- final y l t kho bo cho java bit y l phng thc khng th ghi t lp

con
- native y l t kho bo cho java bit phng thc ny c vit bng mt
ngn ng lp trnh no khng phi l java ( thng c vit bng C/C++)
- synchronized y l mt phng thc ng b, n rt hu ch khi nhiu phng
thc cng truy cp ng thi vo ti nguyn min gng
- returnType l mt kiu d liu, y l kiu tr v ca phng thc, khi phng
thc khng tr v d liu th phi dng t kho void
- MethodName l tn ca phng thc, tn ca phng thc c t theo quy tc
t tn ca java
- throws l t kho dng khai bo cc ngoi l c th c nm ra t phng
thc, theo sau t kho ny l danh sch cc ngoi l c th c phng thc ny
nm ra
Ch :
1) Nu trong lp c t nht mt phng thc tru tng th lp phi l lp
tru tng
2) khng c thuc tnh tru tng
3) ta khng th to i tng ca lp tru tng
4) khc vi ngn ng C/C++, java bt buc bn phi khai bo gi tr tr v cho
phng thc, nu phng thc khng tr v d liu thi dng t kho void
(trong C/C++ khi ta khng khai bo gi tr tr v th mc nh gi tr tr v l
int)
2. Nhn gi tr tr v t phng thc
Ta khai bo kiu gi tr tr v t lc ta khai bo phng thc, bn trong
thn ca phng thc ta phi s dng pht biu return value; nhn v kt qu,
nu hm c khai bo kiu void th ta ch s dng pht biu return; mnh
return i khi cn c dng kt thc mt phng thc.
3. Truyn tham s cho phng thc

Khi ta vit cc phng thc, mt s phng thc yu cu phi c mt s


tham s, cc tham s ca mt phng thc c khai bo trong li khai bo
phng thc, chng phi c khai bo chi tit c bao nhiu tham s, mi tham s
cn phi cung cp cho chng mt ci tn v kiu d liu ca chng.
V d: ta c mt phng thc dng tnh tng ca hai s, phng thc ny c
khai bo nh sau:
public double tongHaiSo(double a, double b){
return (a + b);
}
1. Kiu tham s
Trong java ta c th truyn vo phng thc mt tham s c kiu bt k, t
kiu d liu nguyn thu cho n tham chiu i tng.
2. Tn tham s
Khi bn khai bo mt tham s truyn vo phng thc th bn phi cung
cp cho n mt ci tn, tn nay c s dng bn trong thn ca phng thc
tham chiu n tham s c truyn vo.
Ch : tn ca tham s c th trng vi tn ca thuc tnh, khi tn ca tham s
s che i tn ca phng thc, bi vy bn trong thn ca phng thc m c
tham s c tn trng vi tn ca thuc tnh, th khi nhc n ci tn c ngha l
nhc n tham s.
3. Truyn tham s theo tr
Khi gi mt phng thc m tham s ca phng thc c kiu nguyn
thu, th bn sao gi tr ca tham s thc s s c chuyn n phng thc, y
l c tnh truyn theo tr ( pass- by value ), ngha l phng thc khng th thay
i gi tr ca cc tham s truyn vo.
Ta kim tra iu ny qua v d sau:

public class TestPassByValue {


public static void test(int t) {
t++;
System.out.println("Gia tri ca t bi?n trong ham sau khi tang len 1 la " + t);
}
public static void main(String[] args) {
int t = 10;
System.out.println("Gia tri ca t tru?c khi gi ham = " + t);
test(t);
System.out.println("Gia tri ca t truoc khi gi ham = " + t);
}
}
ta se nhn c kt qu ra nh sau:
Gia tri ca t truoc khi gi ham = 10
Gia tri ca t bn trong ham sau khi tang len 1 la 11
Gia tri ca t truoc khi gi ham = 10
4. Thn ca phng thc
Trong v d sau thn ca phng thc isEmpty v phng thc pop c in m
v c mu
class Stack {
static final int STACK_EMPTY = -1;
Object[] stackelements;
int topelement = STACK_EMPTY;

...
boolean isEmpty() {
if (topelement == STACK_EMPTY)
return true;
else
return false;
}
Object pop() {
if (topelement == STACK_EMPTY)
return null;
else {
return stackelements[topelement--];
}
}
III. T kho this
Thng thng bn trong thn ca mt phng thc ta c th tham chiu
n cc thuc tnh ca i tng , tuy nhin trong mt s tnh hung c bit
nh tn ca tham s trng vi tn ca thuc tnh, lc ch cc thnh vin ca
i tng ta dng t kho this, t kho this dng ch i tng ny.
V d sau ch ra cho ta thy trong tnh hung ny bt buc phi dng t kho this
v tn tham s ca phng thc to dng li trng vi tn ca thuc tnh
class HSBColor {
int hue, saturation, brightness;
HSBColor (int hue, int saturation, int brightness) {
this.hue = hue;
this.saturation = saturation;
this.brightness = brightness;

}
IV. T kho super
Khi mt lp c k tha t lp cha trong c lp cha v lp con u c mt
phng thc trng tn nhau, th th lm th no c th gi phng thc trng tn
ca lp cha, java cung cp cho ta t kho super dng ch i tng ca lp
cha
Ta xt v d sau
class ASillyClass {
boolean aVariable;
void aMethod() {
aVariable = true;
}
}
class ASillierClass extends ASillyClass {
boolean aVariable;
void aMethod() {
aVariable = false;
super.aMethod();
System.out.println(aVariable);
System.out.println(super.aVariable);
}
}
trong v d trn ta thy trong lp cha c phng thc tn l aMethod trong lp con
cng c mt phng thc cng tn, ta cn thy c hai lp ny cng c mt thuc
tnh tn aVariable c th truy cp vo cc thnh vin ca lp cha ta phi dng
t kho super.

Ch : ta khng th dng nhiu t kho ny ch lp ng, lp c chng hn


vit nh sau l sai: super.super.add(1,4);
V. S dng lp
Sau khi khao mt mt lp ta c th xem lp nh l mt kiu d liu, nn ta c th
to ra cc bin, mng cc i tng, vic khai bo mt bin, mng cc i tng
cng tng t nh khai bo mt bin, mng ca kiu d liu nguyn thu
Vic khai bo mt bin, mng c khai bo theo mu sau:
Tn_Lp tn_bin;
Tn_Lp tn_mang[kch thc mng];
Tn_Lp[kch thc mng] tn_mang;
V bn cht mi i tng trong java l mt con tr ti mt vng nh, vng nh
ny chnh l vng nh dng lu tr cc thuc tnh, vng nh dnh cho con tr
ny th c cp pht trn stack, cn vng nh dnh cho cc thuc tnh ca i
tng ny th c cp pht trn heap.
VI. iu khin vic truy cp n cc thnh vin ca mt lp
Khi xy dng mt lp ta c th hn ch s truy cp n cc thnh vin ca
lp, t mt i tng khc.
Ta tm tt qua bng sau:
T kho

Truy cp

Truy cp Truy cp

Truy cp trong

Truy cp trong

trong

trong lp trong lp

lp khc cng gi lp khc khc gi

chnh lp

con cng con khc

gi

gi

private

protected

public

default

Trong bng trn th X th hin cho s truy cp hp l cn th hin khng th


truy cp vo thnh phn ny.
1. Cc thnh phn private
Cc thnh vin private ch c th s dng bn trong lp, ta khng th truy cp
cc thnh vin private t bn ngoi lp ny.
V d
class Alpha
{
private int iamprivate;
private void privateMethod()
{
System.out.println("privateMethod");
}
}
class Beta {
void accessMethod()
{
Alpha a = new Alpha();
a.iamprivate = 10;// khng hp l
a.privateMethod();// khng hp l
}
}
2. Cc thnh phn protected
Cc thnh vin protected s c tho lun trong chng sau

3. Cc thnh phn public


Cc thnh vin public c th truy cp t bt c u, ta se xem v d sau:
package Greek;
public class Alpha {
public int iampublic;
public void publicMethod() {
System.out.println("publicMethod");
}
}
package Roman;
import Greek.*;
class Beta {
void accessMethod() {
Alpha a = new Alpha();
a.iampublic = 10;// hp l
a.publicMethod();// hp l
}
}
4. Cc thnh phn c mc truy xut gi
khi ta khai bo cc thnh vin m khng s dng mt trong cc t public, private,
protected th java mc nh thnh vin c mc truy cp gi.
V d

package Greek;
class Alpha {
int iampackage;
void packageMethod() {
System.out.println("packageMethod");
}
}
package Greek;
class Beta {
void accessMethod() {
Alpha a = new Alpha();
a.iampackage = 10;// legal
a.packageMethod();// legal
}
}

BI 2 KHI U V DN DP
I. Phng thc to dng (constructor)
1. Cng dng
Phng thc to dng l mt phng thc ca lp ( nhng kh c bit )
thng dng khi to mt i tng mi. Thng thng ngi ta thng s
dng hm to khi gn gi tr cho cc thuc tnh ca i tng v c th thc
hin mt s cng vic cn thit khc nhm chun b cho i tng mi.
2. cch vit hm to
a) c im ca phng thc to dng
hm to c tn trng vi tn ca lp
hm to khng bao gi tr v kt qu
n c java gi t ng khi mt i tng ca lp c to ra
hm to c th c i s nh cc phng thc thng thng khc
trong mt lp c th c nhiu hm to
b) v d
v d 1: s dng hm to in ra mn hnh xu Creating Rock
class Rock {
Rock() {// This is the constructor
System.out.println("Creating Rock");
}
}
public class SimpleConstructor {
public static void main(String[] args) {
for(int i = 0; i < 10; i++)
new Rock();// call constructor
}

}
v d 2: s dng hm to c i
class Rock2 {
Rock2(int i) {
System.out.println(
"Creating Rock number " + i);
}
}
public class SimpleConstructor2 {
public static void main(String[] args) {
for(int i = 0; i < 10; i++)
new Rock2(i);// gi hm to c i
}
}// /:~
3. Hm to mc nh
Khi xy dng mt lp m khng xy dng hm to th th java s cung cp
cho ta mt hm to khng i mc nh, hm to ny thc cht khng lm g c,
nu trong lp c t nht mt hm to th hm to mc nh s khng c to
ra, khi ta to ra mt i tng th s c mt hm to no c gi, nu trnh
bin dch khng tm thy hm to tng ng n s thng bo li, iu ny thng
xy ra khi chng ta khng xy dng hm to khng i nhng khi to dng i
tng ta li khng truyn vo tham s, nh c ch ra trong v d sau:
public class TestPassByValue {
public TestPassByValue(String s) {

System.out.println(s);
}
public static void main(String[] args) {
TestPassByValue thu = new TestPassByValue();
// li v lp ny khng c hm to khng i
TestPassByValue thu1 = new TestPassByValue("Hello World");
// khng vn g
}
}
4. Gi hm to t hm to
Khi bn vit nhiu hm to cho lp, c i lc bn mun gi mt hm to
ny t bn trong mt hm to khc trnh phi vit lp m. c th gi n
hm to ta s dng t kho this.
C php this(danh sch i s);
V d:
public class Test {
public Test ()
{
System.out.println("hm to khng i");
}
public Test ( int i)
{
this();// gi n hm to khng i ca chnh lp ny
}

public static void main(String[] args) {


TestPassByValue thu=new TestPassByValue(10);
}

}
Ch :
1) bn trong cu t ta ch c th gi c ti a mt cu t, iu ny c ngha l
ta khng th gi c t 2 cu t tr ln bn trong mt cu t khc nh c
ch ra trong v d sau:
public class TestPassByValue {
public TestPassByValue() {
System.out.println("Day la ham tao khong doi");
}
public TestPassByValue(int i) {
System.out.println("Day la ham tao doi so nguyen");
}
public TestPassByValue(String s) {
this();// khng th gi hai hm to tr ln bn trong mt hm to
this(10);
System.out.println("Day la ham tao doi so xau");
}
public static void main(String[] args) {
TestPassByValue thu = new TestPassByValue();//
TestPassByValue thu1 = new TestPassByValue("Hello World");//
}

}
2) khi gi mt hm to bn trong mt hm to khc th li gi hm to phi l
lnh u tin trong thn phng thc, nn v d sau s b bo li
public class Test{
public Test () {
System.out.println("Day la ham tao khong doi");
}
public Test (String s) {
System.out.println("Day la ham tao doi so xau");
this();// gi n cu t phi l lnh u tin
}
public static void main(String[] args) {
Test thu = new Test (Hello World);
}
}
nu cho dch v d trn trnh bin dch s phn nn
"Test.java": call to this must be first statement in constructor at line 7, column 9
II. Khi khi u v danh v khi khi u tnh
1. Khi v danh
Trong java ta c th t mt khi lnh khng thuc mt phng thc no,
ngha l khi ny khng thuc bt c phng thc no k c hm to. khi khi
lnh ny c gi l khi v danh, khi v danh ny c java gi thc thi khi
mt i tng c to ra, cc khi v danh c gi trc c hm to, thng
thng ta hay s dng khi v danh khi u cc thuc tnh ca lp hoc c

s dng khi to cho cc thc tnh ca mt lp v danh(v lp v danh khng


c tn do vy ta khng th vit hm to cho lp ny, trong trng hp ny khi v
danh l gii php duy nht )
V d: v d ny ta c 3 khi v danh, khi chy java cho thc thi cc khi v
danh ny theo th t t trn xung di
public class Untitled1{
// hm to
public Untitled1 (){
System.out.println ( "Day la ham tao" );
}
// bt u khi v danh
{
System.out.println ( "khoi khoi dau thu 3 ");
}// kt thc khi v danh

//bt u khi v danh


{
System.out.println ( "khoi khoi dau thu 1 ");
}//kt thc khi v danh
// bt u khi v danh
{
System.out.println ( "khoi khoi dau thu 2 ");
}//kt thc khi v danh
public static void main ( String[] args )

{
Untitled1 dt1 = new Untitled1 ();
Untitled1 dt2 = new Untitled1 ();
}
}
khi chy chng trnh s cho kt qu sau:
khoi khoi dau thu 3
khoi khoi dau thu 1
khoi khoi dau thu 2
Day la ham tao
khoi khoi dau thu 3
khoi khoi dau thu 1
khoi khoi dau thu 2
Day la ham tao
2. Khi khi u tnh
Khi khi u tnh l mt khi lnh bn ngoi tt c cc phng thc, k c hm
to, trc khi lnh ny ta t t kho static, t kho ny bo cho java bit y l
khi khi u tnh, khi ny ch c gi 1 ln khi i tng u tin ca lp ny
c to ra, khi khi u tnh ny cng c java gi t ng trc bt c hm
to no, thng thng ta s dng khi khi u tnh khi u cc thuc tnh
tnh ( static ), sau y l mt v d c 1 khi khi u tnh v mt khi v danh,
bn thy c s khc nhau gia khi khi u tnh v khi v danh
public class Untitled1
{

public Untitled1 ()
{
System.out.println ( "y l hm to" );
}
static {// y l khi khi u tnh
System.out.println ( "y l khi khi u tnh");
System.out.println("Khi ny ch c gi 1 ln khi th hin u tin ca
lp c to ra");
}
{//y l khi v danh
System.out.println ( "y l khi v danh ");
}

public static void main ( String[] args )


{
Untitled1 dt1 = new Untitled1 ();/ / to ra th hin th nht ca lp
Untitled1 dt2 = new Untitled1 ();/ / to tip th hin th 2 ca lp
}
}
khi cho chy chng trnh ta s c kt qu ra nh sau:
y l khi khi u tnh
Khi ny ch c gi 1 ln khi th hin u tin ca lp c to ra
y l khi v danh

y l hm to
y l khi v danh
y l hm to
Nhn vo kt qu ra ta thy khi khi u tnh ch c java gi thc hin 1 ln
khi i tng u tin ca lp ny c to, cn khi v danh c gi mi khi
mt i tng mi c to ra
III. Dn dp: kt thc v thu rc
1. Phng thc finalize
Java khng c phng thc hy b. Phng thc finalize tng t nh
phng thc hy b ca C++, tuy nhin n khng phi l phng thc hy b. S
d n khng phi l phng thc hy b v khi i tng c hy b th phng
thc ny cha chc c gi n. Phng thc ny c gi n ch khi b thu
rc ca Java c khi ng v lc i tng khng cn c s dng na. Do
vy phng thc finalize c th khng c gi n.
2. C ch gom rc ca java
Ngi lp trnh C++ thng s dng ton t new cp pht ng mt i
tng, nhng li thng qun gi ton t delete gii phng vng nh ny khi
khng cn dng n na, iu ny lm r r b nh i khi dn n chng trnh
phi kt thc mt cch bt thng, qu tht u l mt iu ti t. Trong java ta
khng cn quan tm n iu , java c mt c ch thu rc t ng, n thng
minh bit i tng tng no khng dng na, ri n t ng thu hi vng
nh dnh cho i tng .
Trong ngn ng C++ khi mt i tng b ph hu, s c mt hm c
gi t ng, hm ny c gi l hu t hay cn gi l hm hu, thng thng

hm hm hu mc nh l l dn dp, tuy nhin trong mt s trng hp


th hm hu mc nh li khng th p ng c, do vy ngi lp trnh C++,
phi vit ra hm hu ring lm vic , tuy nhin java li khng c khi nim
hm hu hay mt ci g tng t.

BI 3 CC THNH PHN TNH


I. Thuc tnh tnh
Thuc tnh c khai bo vi t kho static gi l thuc tnh tnh
V d:
class Static{
static int i = 10;// y l thuc tnh tnh
int j = 10;// y l thuc tnh thng

}
+ Cc thuc tnh tnh c cp pht mt vng b nh c nh, trong java b nh
dnh cho cc thuc tnh tnh ch c cp pht khi ln u tin ta truy cp n n.
+ Thnh phn tnh l chung ca c lp, n khng l ca ring mt i tng no
c.
+ truy xut n thuc tnh tnh ta c th dng mt trong 2 cch sau:
tn_lp.tn_thuc_tnh_tnh;
tn_i_tng.tn_thuc_tnh_tnh;
c 2 cch truy xut trn u c tc dng nh nhau
+ khi gn gi tr cho thuc tnh tnh
thnh phn tnh c khi gn bng mt trong 2 cch sau:
S dng khi khi u tnh (xem li bi trc )
S dng khi u trc tip khi khai bo nh v d trn
Ch : ta khng th s dng hm to khi u cc thuc tnh tnh, bi v hm
to khng phi l phng thc tnh.
II. Phng thc tnh
Mt phng thc c khai bo l static c gi l phng thc tnh
V d:

class Static{
static int i;// y l thuc tnh tnh
// phng thc tnh
static void println (){
System.out.println ( i );
}
}
+ Phng thc tnh l chung cho c lp, n khng l thuc vo mt i tng c
th no
+ Li gi phng thc tnh xut pht t:
tn ca lp: tn_lp.tn_phng_thc_tnh(tham s);
tn ca i tng: tn_i_tng. tn_phng_thc_tnh(tham s);
+ V phng thc tnh l c lp vi i tng do vy bn trong phng thc
tnh ta khng th truy cp cc thnh vin khng tnh ca lp , tc l bn trong
phng thc tnh ta ch c th truy cp n cc thnh vin tnh m thi.
+ Ta khng th s dng t kho this bn trong phng thc tnh

BI 4 NP CHNG PHNG THC


I. Khi nim v phng thc bi ti
Java cho php ta xy dng nhiu phng thc trng tn nhau, trong cng mt
lp, hin tng cc phng thc trong mt lp c tn ging nhau c gi l bi
ti phng thc.
II. Yu cu ca cc phng thc bi ti
Do s dng chung mt ci tn cho nhiu phng thc, nn ta phi cho java bit
cn phi gi phng thc no thc hin, java da vo s khc nhau v s lng
i cng nh kiu d liu ca cc i ny phn bit cc phng thc trng tn
.
V d:
public class OverloadingOrder {
static void print(String s, int i) {
System.out.println(
"String: " + s +
", int: " + i);
}
static void print(int i, String s) {
System.out.println(
"int: " + i +
", String: " + s);
}
public static void main(String[] args) {
print("String first", 11);
print(99, "Int first");
}
}// /:~

Ch :
1) nu nu java khng tm thy mt hm bi ti thch hp th n s a ra mt
thng bo li
2) ta khng th s dng gi tr tr v ca hm phn bit s khc nhau gia
2 phng thc bi ti
3) khng nn qu lm dng cc phng thc bi ti v trnh bin dch phi mt
thi gian phn on tm ra hm thch hp, iu ny i khi cn dn n
sai st
4) khi gi cc hm np chng ta nn c lnh chuyn kiu tng minh trnh
bin dch tm ra hm ph hp mt cch nhanh nht
5) trong java khng th nh ngha chng ton t nh trong ngn ng C++, c
th y l mt khuyt im, nhng nhng ngi thit k java cho rng iu
ny l khng cn thit, v n qu phc tp.
BI 5 K THA (INHERITANCE)
I. Lp c s v lp dn xut
- Mt lp c xy dng thng qua k tha t mt lp khc gi l lp dn xut
(hay cn gi l lp con, lp hu du ), lp dng xy dng lp dn xut c
gi l lp c s ( hay cn gi l lp cha, hoc lp t tin )
Mt lp dn xut ngoi cc thnh phn ca ring n, n cn c k tha tt
c cc thnh phn ca lp cha
II. Cch xy dng lp dn xut
ni lp b l dn xut ca lp a ta dng t kho extends, c php nh
sau:
class b extends a{
// phn thn ca lp b

}
III. Tha k cc thuc tnh
Thc tnh ca lp c s c tha k trong lp dn xut, nh vy tp thuc tnh
ca lp dn xut s gm: cc thuc tnh khai bo trong lp dn xut v cc thuc
tnh ca lp c s, tuy nhin trong lp dn xut ta khng th truy cp vo cc
thnh phn private, package ca lp c s
IV. Tha k phng thc
Lp dn xut k tha tt c cc phng thc ca lp c s tr:
Phng thc to dng
Phng thc finalize
V. Khi u lp c s
Lp dn xut k tha mi thnh phn ca lp c, iu ny dn ta n mt
hnh dung, l lp dn xut c cng giao din vi lp c s v c th c cc thnh
phn mi b sung thm. nhng thc t khng phi vy, k tha khng ch l sao
chp giao din ca lp ca lp c s. Khi ta to ra mt i tng ca lp suy dn,
th n cha bn trong n mt s vt con ca lp c s, s vt con ny nh th ta
to ra mt s vt tng minh ca lp c s, th th lp c s phi c bo
m khi u ng, thc hin iu trng java ta lm nh sau:
Thc hin khi u cho lp c s bng cch gi cu t ca lp c s bn trong
cu t ca lp dn xut, nu bn khng lm iu ny th java s lm gip ban,
ngha l java lun t ng thm li gi cu t ca lp c s vo cu t ca lp
dn xut nu nh ta qun lm iu , c th gi cu t ca lp c s ta s
dng t kho super
V d 1: v d ny khng gi cu t ca lp c s mt cch tng minh
class B

{
public B ()
{
System.out.println ( "Ham tao ca lop co so" );
}
}
public class A
extends B
{
public A ()
{// khng gi hm to ca lp c s tng minh
System.out.println ( "Ham tao ca lop dan xuat" );
}
public static void main ( String arg[] )
{
A thu = new A ();
}
}
Kt qu chy chng trnh nh sau:
Ham tao ca lop co so
Ham tao ca lop dan xuat
V d 2: v d ny s dng t kho super gi cu t ca lp c s mt cch
tng minh
class B
{

public B ()
{
System.out.println ( "Ham tao ca lop co so" );
}
}
public class A
extends B
{
public A ()
{
super();// gi to ca lp c s mt cch tng minh
System.out.println ( "Ham tao ca lop dan xuat" );
}
public static void main ( String arg[] )
{
A thu = new A ();
}
}
khi chy chng trnh ta thy kt qu ging ht nh v d trn
Ch 1: nu gi tng minh cu t ca lp c s, th li gi ny phi l lnh u
tin, nu v d trn i thnh
class B
{
public B ()
{
System.out.println ( "Ham tao ca lop co so" );
}

}
public class A
extends B
{
public A ()
{// Li gi cu t ca lp c s khng phi l lnh u tin
System.out.println ("Ham tao ca lop dan xuat");
super ();
}
public static void main ( String arg[] )
{
A thu = new A ();
}
}
nu bin dch on m ny ta s nhn c mt thng bo li nh sau:
"A.java": call to super must be first statement in constructor at line 15, column 15
Ch 2: ta ch c th gi n mt hm to ca lp c s bn trong hm to ca
lp dn xut, v d ch ra sau b bo li
class B
{
public B ()
{
System.out.println ( "Ham tao ca lop co so" );
}

public B ( int i )
{
System.out.println ( "Ham tao ca lop co so" );
}
}
public class A
extends B
{
public A ()
{
super ();
super ( 10 );/ / khng th gi nhiu hn 1 hm to ca lp c s
System.out.println ( "Ham tao ca lop dan xuat" );
}
public static void main ( String arg[] )
{
A thu = new A ();
}
}
1. Trt t khi u
Trt t khi u trong java c thc hin theo nguyn tc sau: java s gi
cu t ca lp c s trc sau mi n cu t ca lp suy dn, iu ny c
ngha l trong cy ph h th cc cu t s c gi theo trt t t gc xung dn
n l

2. Trt t dn dp
Mc d java khng c khi nim hu t nh ca C++, tuy nhin b thu rc
ca java vn hot ng theo nguyn tc lm vic ca cu t C++, tc l trt t thu
rc th ngc li so vi trt t khi u.
VI. Ghi phng thc ( Override )
Hin tng trong lp c s v lp dn xut c hai phng thc ging ht
nhau ( c tn ln b tham s) gi l ghi phng thc ( Override ), ch
Override khc Overload.
Gi phng thc b ghi ca lp c s
Bn trong lp dn xut, nu c hin tng ghi th phng thc b ghi ca lp
c s s b n i, c th gi phng thc b ghi ca lp c s ta dng t
kho super truy cp n lp cha, c php sau:
super.overriddenMethodName();
Ch : Nu mt phng thc ca lp c s b bi ti ( Overload ), th n khng
th b ghi ( Override ) lp dn xut.
VI. Thnh phn protected
Trong mt vi bi trc ta lm quen vi cc thnh phn private, public,
sau khi hc v k tha th t kho protected cui cng c ngha.
T kho protected bo cho java bit y l thnh phn ring t i vi bn ngoi
nhng li sn sng vi cc con chu
VII. T kho final
T kho final trong java c nhiu ngha khc nhau, ngha ca n tu thuc vo
ng cnh c th, nhng ni chung n mun ni ci ny khng th thay i

c.
1. Thuc tnh final
Trong java cch duy nht to ra mt hng l khai bo thuc tnh l final
V d:
public class A
{
// nh ngha hng tn MAX_VALUE gi tr 100
static final int MAX_VALUE = 100;
public static void main ( String arg[] )
{
A thu = new A ();
System.out.println("MAX_VALUE= " +thu.MAX_VALUE);
}
}
Ch :
1) khi khai bo mt thuc tnh l final th thuc tnh ny la hng, do vy ta
khng th thay i gi tr ca n
2) khi khai bo mt thuc tnh l final th ta phi cung cp gi tr ban u cho n
3) nu mt thuc tnh va l final va l static th n ch c mt vng nh chung
duy nht cho c lp
2. i s final
Java cho php ta to ra cc i final bng vic khai bo chng nh vy bn
trong danh sch i, ngha l bn trong thn ca phng php ny, bt c c gng
no thay i gi tr ca i u gy ra li lc dch
V d sau b bo li lc dch v n c gng thay i gi tr ca i final
public class A

{
static public void thu ( final int i )
{
i=i+1;//khng cho php thay i gi tr ca tham s final
System.out.println ( i );;
}
public static void main ( String arg[] )
{
int i = 100;
thu ( i );
}
}
chng trnh ny s b bo li:
"A.java": variable i might already have been assigned to at line 5, column 9
3. Phng thc final
Mt phng thc bnh thng c th b ghi lp dn xut, i khi ta
khng mun phng thc ca ta b ghi lp dn xut v l do g , mc
ch ch yu ca cc phng thc final l trnh ghi , tuy nhin ta thy rng
cc phng thc private s t ng l final v chng khng th thy c trong
lp dn xut ln chng khng th b ghi , nn cho d bn c cho mt phng
thc private l final th bn cng ch thy mt hiu ng no
4. Lp final
Nu bn khng mun ngi khc k tha t lp ca bn, th bn hy dng
t kho final ngn cn bt c ai mun k tha t lp ny.
Ch : do mt lp l final (tc khng th k tha )do vy ta khng th no ghi

cc phng thc ca lp ny, do vy ng c gng cho mt phng thc


ca lp final l final

BI 6 LP C S TRU TNG
Mt lp c s tru tng l mt lp ch c dng lm c s cho cc lp khc,
ta khng th to ra th hin ca lp ny, bi v n c dng nh ngha mt
giao din chung cho cc lp khc.
Phng thc tru tng
Mt lp tru tng c th cha mt vi phng thc tru tng, do lp tru
tng ch lm lp c s cho cc lp khc, do vy cc phng thc tru tng
cng khng c ci t c th, chng ch gm c khai bo, vic ci t c th s
dnh cho lp con
1. Ch :
1) nu trong lp c phng thc tru tng th lp phi c khai bo l tru
tng
2) nu mt lp k tha t lp tru tng th: hoc chng phi ghi tt c cc
phng thc o ca lp cha, hoc lp phi l lp tru tng
3) khng th to ra i tng ca lp tru tng

BI 7 A HNH THI
a hnh thi trong lp trnh hng i tng cp n kh nng quyt
nh trong lc thi hnh (runtime) m no s c chy, khi c nhiu phng thc
trng tn nhau nhng cc lp c cp bc khc nhau.
Ch : kh nng a hnh thi trong lp trnh hng i tng cn c gi vi
nhiu ci tn khc nhau nh: tng ng bi, kt ghp ng,..
a hnh thi cho php cc vn khc nhau, cc i tng khc nhau, cc phng
thc khc nhau, cc cch gii quyt khc nhau theo cng mt lc chung.
Cc bc to a hnh thi:
1. Xy dng lp c s ( thng l lp c s tru tng, hoc l mt giao din),
lp ny s c cc lp con m rng( i vi lp thng, hoc lp tru
tng), hoc trin khai chi tit ( i vi giao din ).
2. 2. Xy dng cc lp dn xut t lp c s va to. trong lp dn xut ny ta
s ghi cc phng thc ca lp c s( i vi lp c s thng), hoc trin
khai chi tit n ( i vi lp c s tru tng hoc giao din).
3. Thc hin vic to khun xung, thng qua lp c s, thc hin hnh vi a
hnh thi
Khi nim v to khun ln, to khun xung
Hin tng mt i tng ca lp cha tham tr n mt i tng ca lp con
th c gi l to khun xung, vic to khun xung lun c java chp
thun, do vy khi to khun xung ta khng cn phi p kiu tng minh.
Hin tng mt i tng ca lp con tham tr ti mt i tng ca lp cha
th c gi l to khun ln, vic to khun ln l an ton, v mt i tng
ca lp con cng c y cc thnh phn ca lp cha, tuy nhin vic to
khun ln s b bo li nu nh ta khng p kiu mt cch tng minh.

BI 8 GIAO DIN, LP TRONG, GI


Giao din l mt khi nim c java a ra vi 2 mc ch chnh:
to ra mt lp c s thun o, mt lp khng c bt c hm no c ci
t
Thc hin hnh vi tng t nh k tha bi, bi trong java khng c khi nim
k tha bi, nh ca C++
Lp trong cho ta mt cch thc tinh vi che giu m mt cch ti a, trong java
ta c th nh ngha mt lp bn trong mt lp khc, thm ch ta cn c th to lp
trong, bn trong thn ca mt phng thc, iu ny cho php ta c th to ra cc
lp cc b, ch c s dng ni b bn trong mt n v . Ta khng th to ra
mt lp trong, trong ngn ng C++
I. Giao din
T kho interface a khi nim abstract i xa thm mt bc na. Ta
c th ngh n nh l mt lp abstract thun tu, n cho php ta to ra mt lp
thun o, lp ny ch gm tp cc giao din cho cc lp mun dn xut t n, mt
interface cng c th c cc trng, tuy nhin java t ng lm cc trng ny
thnh static v final
to ra mt interface, ta dng t kho interface thay v t kho class. Mt
interface gm c 2 phn: phn khai bo v phn thn, phn khai bo cho bit mt
s thng tin nh: tn ca interface, n c k tha t mt giao din khc hay khng.
Phn thn cha cc khai bo hng, khai bo phng thc ( nhng khng c ci
t). Ging nh mt lp ta cng c th thm b t public vo trc nh ngha ca
interface. Sau y l hnh nh ca mt interface.

Nhng do java t ng lm cc trng thnh final nn ta khng cn thm b t


ny, do vy ta c th nh ngha li giao din nh sau:
Nhng do java t ng lm cc trng thnh final nn ta khng cn thm b t
ny
public interface StockWatcher
{
final String
sunTicker = "SUNW";
final String oracleTicker = "ORCL";
final String ciscoTicker = "CSCO";
void valueChanged(String tickerSymbol, double newValue);
}
1. Phn khai bo ca giao din
Tng qut phn khai bo ca mt giao din c cu trc tng qut nh sau:
Public

//giao din ny l cng cng

interface InterfaceName

//tn ca giao din

Extends SuperInterface

//giao din ny l m rng ca 1 giao din


khc

InterfaceBody

//thn ca giao din

}
Trong cu trc trn c 2 phn bt buc phi c l phn interface v
InterfaceName, cc phn khc l tu chn.
2. Phn thn
Phn thn khai bo cc cc hng, cc phng thc rng ( khng c ci t ), cc
phng thc ny phi kt thc vi du chm phy ;, bi v chng khng c phn
ci t
Ch :
1) Tt c cc thnh phn ca mt giao din t ng l public do vy ta khng cn
phi cho b t ny vo.
2) Java yu cu tt c cc thnh phn ca giao din phi l public, nu ta thm cc
b t khc nh private, protected trc cc khai bo th ta s nhn c mt li
lc dch
3) Tt c cc trng t ng l final v static, nn ta khng cn phi cho b t
ny vo.
3. Trin khai giao din
Bi mt giao din ch gm cc m t chng khng c phn ci t, cc giao din
c nh ngha cho cc lp dn xut trin khai, do vy cc lp dn xut t lp
ny phi trin khai y tt c cc khai bo bn trong giao din, trin khai
mt giao din bn bao gm t kho implements vo phn khai bo lp, lp ca
bn c th trin khai mt hoc nhiu giao din ( hnh thc ny tng t nh k
tha bi ca C++)
V d
public class StockApplet extends Applet implements StockWatcher {

.. .
public void valueChanged(String tickerSymbol, double newValue) {
if (tickerSymbol.equals(sunTicker)) {
.. .
} else if (tickerSymbol.equals(oracleTicker)) {
.. .
} else if (tickerSymbol.equals(ciscoTicker)) {
.. .
}
}
}
Ch :
1) Nu mt lp trin khai nhiu giao din th cc giao din ny c lit k cch
nhau bi du phy ,
2) Lp trin khai giao din phi thc thi tt c cc phng thc c khai bo
trong giao din, nu nh lp khng trin khai, hoc trin khai khng ht th
n phi c khai bo l abstract
3) Do giao din cng l mt lp tru tng do vy ta khng th to th hin ca
giao din
4) Mt lp c th trin khai nhiu giao din, do vy ta c li dng iu ny
thc hin hnh vi k tha bi, vn khng c java h tr
5) Mt giao din c th m rng mt giao din khc, bng hnh thc k tha
II. Lp trong
C th t mt nh ngha lp ny vo bn trong mt lp khc. iu ny
c gi l lp trong. Lp trong l mt tnh nng c gi tr v n cho php bn gp
nhm cc lp v mt logic thuc v nhau v kim sot tnh thy c ca cc

lp ny bn trong lp khc. Tuy nhin bn phi hiu rng lp trong khng phi l
l hp thnh
V d:
public class Stack {
private Vector items;
.. .//code for Stack's methods and constructors not shown...
public Enumeration enumerator() {
return new StackEnum();
}
class StackEnum implements Enumeration {
int currentItem = items.size() - 1;
public boolean hasMoreElements() {
return (currentItem >= 0);
}
public Object nextElement() {
if (!hasMoreElements())
throw new NoSuchElementException();
else
return items.elementAt(currentItem--);
}
}
}
Lp trong rt hu hiu khi bn bn mun to ra cc lp iu hp ( c bn k khi
ni v thit k giao din ngi dng )

Bi 9 MNG, XU K T, TP HP
I. Mng
1. Mng 1 chiu
a) Khai bo
C php khai bo:
- KDL tn_mng[];//Khai bo mt con tr mng
- KDL []tn_mng;//nh trn
- KDL tn_mng[] = new KDL[spt];//To ra mt mng c spt phn t
Trong c php trn th:
KDL l mt kiu d liu bt k nh: kiu nguyn thy, kiu i tng n
xc nh kiu d liu ca tng phn t ca mng.
Spt l s phn t ca mng.
Ch :
Mng trong Java l mt i tng
Cng nh cc i tng khc, mng phi c to ra bng ton t new nh
sau:
Tn_mng=new KDL[spt];
Khi mng c to ra th mi phn t ca mng s nhn mt gi tr mc nh,
quy tc khi to gi tr cho cc phn t ca mng cng chnh l quy tc khi
u gi tr cho cc thuc tnh ca i tng, tc l mi phn t ca mng s
nhn gi tr:
+ 0 nu KDL l kiu s
+ \0 nu KDL l k t
+ false nu KDL l boolean
+ null nu KDL l mt lp no .
V d 1. Khai bo mt mng s nguyn gm 100 phn t
Cch 1:
int mangInt[];//Khai bo mt con tr n mng cc s nguyn

mangInt=new int[100];//To ra mng


Cch 2:
int mangInt[]=new int[100];
V d 2: Gi s ta c lp SinhVien c nh ngha, hy khai bo mt mng
gm 100 i tng ca lp SinhVien
SinhVien arraySinhVien[]=new SinhVien[100];
Ch : Lc ny mi phn t ca mng arraySinhVien l mt con tr ca lp
SinhVien v hin gi mi phn t ca mng ang tr n gi tr null. khi to
tng phn t ca mng ta phi lm nh sau:
arraySinhVien[0]=new SinhVien(sv01, Nguyn Vn An, Hng Yn);
arraySinhVien[1]=new SinhVien(sv02, Nguyn Th Bnh, Bc Giang);
.
arraySinhVien[99]=new SinhVien(sv100, o Th Mn, H Nam);
Ngoi cch khai bo trn Java cn cho php ta kt hp c khai bo v khi gn cc
phn t ca mng theo cch sau:
int[] mangInt = {1, 3, 5, 7, 9};
To ra mt mng gm 5 phn t, cc phn t ca mng ln lt c gn cc gi
tr l: 1, 3, 5, 7, 9
SinhVien[] mangSinhVien = {
new SinhVien(sv01, Nguyn Vn A,
HY),
new SinhVien(sv02, Nguyn Th B, HN),
new SinhVien(sv03, Th Q, BG),
null
};
Khai bo mt mng gm 4 phn t, gi tr ca cc phn t ln lt c khi gn
nh sau:

mangSinhVien [0]=new SinhVien(sv01, Nguyn Vn A, HY)


mangSinhVien [1]=new SinhVien(sv02, Nguyn Th B, HN)
mangSinhVien [2]=new SinhVien(sv03, Th Q, BG)
mangSinhVien [3]=null
b) Truy xt n cc phn t ca mng mt chiu
truy xut n phn t th ind ca mng ta s dng c php nh sau:
Tn_mng[ind-1]
Ch : Phn t u tin ca mng c ch s l 0.
V d:
int a[]=new int [3];//Khai bo v to ra mng gm 3 phn t
Lc ny cc phn t ca mng ln lt c truy xut nh sau:
- Phn t u tin ca mng l a[0]
- Phn t th 2 ca mng l a[1]
- Phn t th 3 ng thi l phn t cui cng ca mng l a[2]
c) Ly v s phn t hin ti ca mng
Mng trong Java l mt i tng, do vy n cng c cc thuc tnh v cc
phng thc nh cc i tng khc. ly v s phn t ca mng ta s dng
thuc tnh length nh sau:
Tn_mng.length
V d 1: Nhp vo mt mng v in ra mn hnh
import com.theht.Keyboard;
class ArrayDemo{
public static void main(String[] args) {
//Nhp s phn t ca mng
System.out.print("Nhp s phn t ca mng:");
int n=Keyboard.readInt();
//Khai bo mng vi s phn t bng n

int a[]=new int[n];


//Nhp d liu cho mng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");
a[i]=Keyboard.readInt();
}
//In mng ra mn hnh
System.out.println("Mng va nhp l");
for (int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
}
}
V d 2: Nhp vo mt mng s thc sau kim tra xem mng c phi l mt
dy tng hay khng?
import com.theht.Keyboard;
class ArrayDemo2{
public static void main(String[] args) {
//Nhp s phn t ca mng
System.out.print("Nhp s phn t ca mng:");
int n=Keyboard.readInt();
//Khai bo mng vi s phn t bng n
int a[]=new int[n];
//Nhp d liu cho mng
for(int i=0;i<a.length;i++){
System.out.print("a[" + i + "]=");
a[i]=Keyboard.readInt();
}

//Kim tra dy tng


boolean kt=true;
for (int i = 0; i < a.length-1; i++)
if(a[i+1]-a[i]<0){
kt=false;//thay i trng thi c
break;//Thot khi vng lp
}
if(kt)
System.out.println("Dy tng dn");
else
System.out.println("Dy khng phi tng dn");
}
}
2. Mng nhiu chiu
a) Khai bo
Khai bo mng N chiu trong Java c tin hnh nh sau:
hoc
hoc
Trong :
KDL l mt kiu d liu bt k: nguyn thu hoc lp
sp1, sp2, , sptN ln lt l s phn t trn chiu th 1, 2, .., N
V d:
- Khai bo mt con tr ca mng 2 chiu
int[][] a; hoc int a[][];
Khai bo v to ra mng 2 chiu:
int[][] a = new int[2][3]; // Ma trn gm 2 hng, 3 ct

- Khai bo v khi gn gi tr cho cc phn t ca mng 2 chiu:


int a[][]={
{1, 2, 5}. //Cc phn t trn hng th nht
{2, 4, 7, 9}. //Cc phn t trn hng th hai
{1, 7}. //Cc phn t trn hng th ba
}
Khai bo trn s to ra mt mng hai chiu gm: 3 hng, nhng trn mi hng li
c s phn t khc nhau, c th l: trn hng th nht c 3 phn t, hng 2 gm 4
phn t v hng th 3 gm 2 phn t.
Ch : Vi khai bo trn nu ta lit k cc phn t ca mng theo trnh t t tri
qua phi v t trn xung di th cc phn t ln lt l:
a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2], a[1][3], a[2][0], a[2][1]
b) Truy xut n phn t mng nhiu chiu
tn_mng[ind1][ind2]
V d 1: Nhp vo mt ma trn v in ra mn hnh
import com.theht.Keyboard;
class MaTram {
public static void main(String[] args) {
//Nhp s hng v s ct
System.out.print("Nhp s hng:");
int sh = Keyboard.readInt();
System.out.print("Nhp s ct:");
int sc = Keyboard.readInt();
//Khai bo mng hai chiu gm sh hng v sc ct
float a[][] = new float[sh][sc];

//Nhp d liu cho mng hai chiu


for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[i].length; j++) {
System.out.print("a[" + i + "," + j + "]=");
//Nhp liu cho phn t hng i, ct j
a[i][j] = Keyboard.readFloat();
}
//In mng hai chiu ra mn hnh
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++)
System.out.print(a[i][j] + " ");
System.out.println();
}
}
}
V d 2: Nhp vo ma trn vung sau tnh tng cc phn t trn ng cho
chnh.

II. Xu k t
Vic x l cc xu k t trong Java c h tr bi hai lp String v
StringBuffer. Lp String dng cho nhng xu k t bt bin, ngha l nhng xu
ch c v sau khi dc khi to gi tr th ni dung bn trong xu khng th thay
i c. Lp StringBuffer c s dng i vi nhng xu k t ng, tc l c
th thay i c ni dung bn trong ca xu.

1. Lp String
Chui l mt dy cc k t. Lp String cung cp cc phng thc thao
tc vi cc chui. N cung cp cc phng thc khi to (constructor) khc nhau:
String str1 = new String( );
//str1 cha mt chui rng.
String str2 = new String(Hello World);
//str2 cha Hello World
char ch[] = {A,B,C,D,E};
String str3 = new String(ch);
//str3 cha ABCDE
String str4 = new String(ch,0,2);
//str4 cha AB v 0- tnh t k t bt u, 2- l s lng k t k t k t bt
u.
Ton t + c s dng cng chui khc vo chui ang tn ti. Ton
t + ny c gi nh l ni chui. y, ni chui c thc hin thng
qua lp StringBuffer. Chng ta s tho lun v lp ny trong phn sau. Phng
thc concat( ) ca lp String cng c th thc hin vic ni chui. Khng ging
nh ton t +, phng thc ny khng thng xuyn ni hai chui ti v tr cui
cng ca chui u tin. Thay vo , phng thc ny tr v mt chui mi,
chui mi s cha gi tr ca c hai. iu ny c th c gn cho chui ang
tn ti. V d:
String strFirst, strSecond, strFinal;
StrFirst = Charlie;

StrSecond = Chaplin;
//.bng cch s dng phng thc concat( ) gn vi mt chui ang tn ti.
StrFinal = strFirst.concat(strSecond);
Phng thc concat( ) ch lm vic vi hai chui ti mt thi im.
Cc phng thc ca lp String
Trong phn ny, chng ta s xem xt cc phng thc ca lp String.
- char charAt(int index ) Phng thc ny tr v mt k t ti v tr index trong
chui.
V d:
String name = new String(Java Language);
char ch = name.charAt(5);
Bin ch cha gi tr L, t v tr cc s bt u t 0.
- boolean startsWith(String s ) Phng thc ny tr v gi tr kiu logic
(Boolean), ph thuc vo chui c bt u vi mt chui con c th no khng.
V d:
String strname = Java Language;
boolean flag = strname.startsWith(Java);
Bin flag cha gi tr true.
- boolean endsWith(String s ) Phng thc ny tr v mt gi tr kiu logic
(boolean), ph thuc vo chui kt thc bng mt chui con no khng.

V d:
String strname = Java Language;
boolean flag = strname.endsWith(Java);
Bin flag cha gi tr false.
- String copyValueOf( )
Phng thc ny tr v mt chui c rt ra t mt mng k t c truyn nh
mt i s. Phng thc ny cng ly hai tham s nguyn. Tham s u tin ch
nh v tr t ni cc k t phi c rt ra, v tham s th hai ch nh s k t
c rt ra t mng. V d:
char name[] = {L,a,n,g,u,a,g,e};
String subname = String .copyValueOf(name,5,2);
By gi bin subname cha chui ag.
- char [] toCharArray( )
Phng thc ny chuyn chui thnh mt mng k t. V d:
String text = new String(Hello World);
char textArray[] = text.toCharArray( );
- int indexOf(String sunString )
Phng thc ny tr v th t ca mt k t no , hoc mt chui trong phm vi
mt chui. Cc cu lnh sau biu din cc cch khc nhau ca vic s dng hm.
String day = new String(Sunday);
int index1 = day.indexOf(n);

//cha 2

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


//cha 1 nu z khng tm thy ti v tr 2.

int index3 = day.indexOf(Sun);


//cha mc 0
- String toUpperCase( )
Phng thc ny tr v ch hoa ca chui.
String lower = new String(good morning);
System.out.println(Uppercase: +lower.toUpperCase( ));
- String toLowerCase( )
Phng thc ny tr v ch thng ca chui.
String upper = new String(JAVA);
System.out.println(Lowercase: +upper.toLowerCase( ));
- String trim()
Phng thc ny ct b khong trng hai u chui. Hy th on m sau thy
s khc nhau trc v sau khi ct b khong trng.
String space = new String(

Spaces

);

System.out.println(space);
System.out.println(space.trim()); //Sau khi ct b khong trng
- boolean equals(String s)
Phng thc ny so snh ni dung ca hai i tng chui.
String name1 = Java, name2 = JAVA;
boolean flag = name1.equals(name2);
Bin flag cha gi tr false.
- Cc phng thc valueOf c np chng cho php chuyn mt gi tr thnh
xu
static String valueOf(Object obj)//Chuyn mt i tng thnh xu, bng cch gi
n phng thc toString ca i tng obj
static String valueOf(char[] characters)//Chuyn mng cc k t thnh xu.
static String valueOf(boolean b)//Chuyn mt gi tr logic thnh xu, xu nhn
c l true hoc false tng ng vi gi tr true hoc false ca b
static String valueOf(char c)//Chuyn k t thnh xu
static String valueOf(int i)//chuyn mt s nguyn thnh xu
static String valueOf(long l)//Chuyn mt gi tr long thnh xu
static String valueOf(float f)//chuyn mt gi tr float thnh xu
static String valueOf(double d)//chuyn mt gi tr double thnh xu

2. Lp StringBuffer
Lp StringBuffer cung cp cc phng thc khc nhau thao tc mt i

tng dng chui. Cc i tng ca lp ny rt mm do, l cc k t v cc


chui c th c chn vo gia i tng StringBuffer, hoc ni thm d liu
vo ti v tr cui. Lp ny cung cp nhiu phng thc khi to. Chng trnh
sau minh ho cch s dng cc phng thc khi to khc nhau to ra cc i
tng ca lp ny.
class StringBufferCons{
public static void main(String args[]){
StringBuffer s1 = new StringBuffer();
StringBuffer s2 = new StringBuffer(20);
StringBuffer s3 = new StringBuffer(StringBuffer);
System.out.println(s3 = + s3);
System.out.println(s2.length()); //cha 0
System.out.println(s3.length()); //cha 12
System.out.println(s1.capacity()); //cha 16
System.out.println(s2.capacity()); //cha 20
System.out.println(s3.capacity()); //cha 28
}
}
length() v capacity() ca StringBuffer l hai phng thc hon ton khc
nhau. Phng thc length() cp n s cc k t m i tng thc cha,
trong khi capacity() tr v tng dung lng ca mt i tng (mc nh l 16)

v s k t trong i tng StringBuffer.


Dung

lng

ca

StringBuffer

th

thay

vi

phng

thc

ensureCapacity(). i s int c truyn n phng thc ny, v dung


lng mi c tnh ton nh sau:
NewCapacity = OldCapacity * 2 + 2
Trc khi dung lng ca StringBuffer c t li, iu kin sau s c kim
tra:
1 Nu dung lng(NewCapacity) mi ln hn i s c truyn cho
phng thc ensureCapacity(), th dung lng mi (NewCapacity) c
t.
2 Nu dung lng mi nh hn i s c truyn cho phng thc
ensureCapacity(), th dung lng c t bng gi tr tham s truyn
vo.
Chng trnh sau minh ho dung lng c tnh ton v c t nh th no.
class test{
public static void main(String args[]){
StringBuffer s1 = new StringBuffer(5);
System.out.println(Dung

lng

ca

nh

lng

ca

nh

+s1.capacity()); //cha 5
s1.ensureCapacity(8);
System.out.println(Dung
+s1.capacity()); //cha 12

s1.ensureCapacity(30);
System.out.println(Dung

lng

ca

nh

+s1.capacity()); //cha 30
}
}
Trong on m trn, dung lng ban u ca s1 l 5. Cu lnh
s1.ensureCapacity(8);
Thit lp dung lng ca s1 n 12 =(5*2+2) bi v dung lng truyn vo l 8
nh hn dung lng c tnh ton l 12 .
s1.ensureCapacity(30);
Thit lp dung lng ca s1 n 30 bi v dung lng truyn vo l 30 th ln
hn dung lng c tnh ton (12*2+2).
Cc phng thc lp StringBuffer
Trong phn ny, chng ta s xem xt cc phng thc ca lp StringBuffer vi
mt chng trnh.
- void append()
Phng thc ny ni thm mt chui hoc mt mng k t vo cui cng ca i
tng StringBuffer. V d:
StringBuffer s1 = new StringBuffer(Good);
s1.append(evening);
Gi tr trong s1 by gi l goodevening.

- void insert()
Phng thc ny c hai tham s. Tham s u tin l v tr chn. Tham s th hai
c th l mt chui, mt k t (char), mt gi tr nguyn (int), hay mt gi tr s
thc (float) c chn vo. V tr chn s ln hn hay bng 0, v nh hn hay
bng chiu di ca i tng StringBuffer. Bt k i s no, tr k t hoc
chui, c chuyn sang chui v sau mi c chn vo. V d:
StringBuffer str = new StringBuffer(Java sion);
str.insert(1,b);
Bin str cha chui Jbava sion.
- char charAt()
Phng thc ny tr v mt gi tr k t trong i tng StringBuffer ti v tr
c ch nh.V d:
StringBuffer str = new StringBuffer(James Gosling);
char letter = str.charAt(6); //cha G
- void setCharAt(int index, char value)
Phng thc ny c s dng thay th k t trong mt StringBuffer bng mt
k t khc ti mt v tr c ch nh.
StringBuffer name = new StringBuffer(Jawa);
name.setCharAt(2,v);
Bin name cha Java.
- void setLength()

Phng thc ny thit lp chiu di ca i tng StringBuffer. Nu chiu di


c ch nh nh hn chiu di d liu hin ti ca n, th cc k t tha s b ct
bt. Nu chiu di ch nh nhiu hn chiu di d liu th cc k t null c
thm vo phn cui ca StringBuffer
StringBuffer str = new StringBuffer(10);
str.setLength(str.length() +10);
- char [] getChars()
Phng thc ny c s dng trch ra cc k t t i tng StringBuffer, v
sao chp chng vo mt mng. Phng thc getChars() c bn tham s sau:
Ch s u: v tr bt u, t ni m k t c ly ra.
Ch s kt thc: v tr kt thc
Mng: Mng ch, ni m cc k t c sao chp.
V tr bt u trong mng ch: Cc k t c sao chp vo mng ch t
v tr ny.
V d:
StringBuffer str = new StringBuffer(Leopard);
char ch[] = new char[10];
str.getChars(3,6,ch,0);
By gi bin ch cha par
- void reverse()
Phng thc ny o ngc ni dung ca mt i tng StringBuffer, v tr v

mt i tng StringBuffer khc. V d:


StringBuffer str = new StringBuffer(devil);
StringBuffer strrev = str.reverse();
Bin strrev cha lived.

III. Lp StringTokenizer
Mt lp StringTokenizer c th s dng tch mt chui thnh cc phn
t (token) nh hn. V d, mi t trong mt cu c th coi nh l mt token. Tuy
nhin, lp StringTokenizer i xa hn vic phn tch cc t trong cu. tch
ra cc thnh token ta c th tu bin ch ra mt tp du phn cch cc token khi
khi to i tng StringTokenizer. Nu ta khng ch ra tp du phn cch th mc
nh l du trng (space, tab, ...). Ta cng c th s dng tp cc ton t ton hc
(+, *, /, v -) trong khi phn tch mt biu thc.
Bng sau tm tt 3 phng thc to dng ca lp StringTokenizer:
Phng thc xy dng

ngha

StringTokenizer(String)

To ra mt i tng StringTokenizer
mi da trn chui c ch nh.

StringTokenizer(String, Strng)

To ra mt i tng StringTokenizer
mi da trn (String, String) chui c
ch nh v mt tp cc du phn cch.

StringTokenizer(String, String,

To ra mt i tng StringTokenizer da

boolean)

trn chui c ch nh, mt tp cc du


phn cch, v mt c hiu cho bit nu
cc du phn cch s c tr v nh cc
token hay khng.

Cc phng thc to dng trn c minh ha trong cc v d sau:


StringTokenizer st1 = new StringTokenizer(A Stream of words);
StringTokenizer st2 = new StringTokenizer(4*3/2-1+4, +-*/, true);
StringTokenizer st3 = new StringTokenizer(aaa,bbbb,ccc, ,);
Trong cu lnh u tin, StringTokenizer ca st1 s c xy dng bng
cch s dng cc chui c cung cp v du phn cch mc nh. Du phn cch
mc nh l khong trng, tab, cc k t xung dng. Cc du phn cch ny th
ch s dng khi phn tch vn bn, nh vi st1.
Cu lnh th hai trong v d trn xy dng mt i tng StringTokenizer cho cc
biu thc ton hc bng cch s dng cc k hiu *, +, /, v -.
Cu lnh th 3, StringTokenizer ca st3 s dng du phy nh mt du phn
cch.
Lp StringTokenizer ci t giao din Enumeration. V th, n bao gm cc
phng thc hasMoreElements() v nextElement(). Cc phng thc c th s
dng ca lp StringTokenizer c tm tt trong bng sau:
Phng thc
countTokens()
hasMoreElements()

Mc ch
Tr v s cc token cn li.
Tr v True nu cn c token ang c nh du
trong chui. N th ging ht nh hasMoreTokens.

hasMoreTokens()

Tr v True nu cn c token ang c nh du


trong chui. N ging ht nh hasMoreElements.

nextElement()

Tr v token k tip trong chui. N th ging nh


nextToken.

nextToken()

Tr v Token k tip trong chui. N th ging nh


nextElement.

nextToken(String)

Thay i b du phn cch bng chui c ch


nh, v sau tr v token k tip trong chui.

Hy xem xt chng trnh cho bn di. Trong v d ny, hai i


tng StringTokenizer c to ra. u tin, st1 c s dng phn tch
mt biu thc ton hc. Th hai, st2 phn tch mt dng ca cc trng c
phn cch bi du phy. C hai tokenizer, phng thc hasMoreTokens() v
nextToken() c s dng duyt qua tp cc token, v hin th cc token.
import java.util.*;
public class StringTokenizerImplementer{
public static void main(String args[]){
// t mt biu thc ton hc v to mt tokenizer cho chui .
String mathExpr = 4*3+2/4;
StringTokenizer st1 = new StringTokenizer(mathExpr,*+/-, true);
//trong khi vn cn cc token, hin th

System.out.println(Tokens

of

mathExpr: );
while(st1.hasMoreTokens())
System.out.println(st1.nextToken());
//to mt chui ca cc trng c phn cch bi du phy v to //mt
tokenizer cho chui.

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


StringTokenizer st2 = new StringTokenizer(commas,,,false);
//trong khi vn cn token, hin th.
System.out.println(Comma-delimited tokens : );
while (st2.hasMoreTokens())
System.out.println(st2.nextToken());
}
}
Kt qu chy chng trnh c m t nh hnh di.

IV. Mt s lp c bn ca Java
Cc lp c bn, hay s dng ca Java nh: Object, cc lp Wrapper (lp
bao ca cc kiu d liu nguyn thy), Math, String v lp StringBuffer. Nhng
lp ny c xy dng trong gi java.lang (gi mc nh ca Java, khi cn s
dng cc lp trong gi ny ta khng cn phi import n). Mi lp trong Java u

l lp con ca lp Object .

Cu trc phn cp mt s lp trong gi java.lang


1. Lp Object
Tt c cc lp c xy dng trong cc chng trnh Java u hoc l trc
tip hoc gin tip c m rng t lp Object. y l lp c s nht, nh ngha
hu nh tt c nhng phng thc phn c bn cc lp con chu ca n s
dng trc tip hoc vit .
Object cung cp cc phng thc sau:
int hashCode()
Khi cc i tng c lu vo cc bng bm (hash table), hm ny c th s
dng xc nh duy nht gi tr cho mi i tng. iu ny m bo tnh
nht qun ca h thng khi thc hin chng trnh.
Class getClass()
Tr li tn lp ca i tng hin thi.
boolean equals(Object obj)
Cho li kt qu true khi i tng hin thi v obj l cng mt i tng. Hm
ny thng c vit cc lp con cho ph hp vi ng cnh so snh bng
nhau trong cc lp m rng .
protected Object clone() throws CloneNotSupportedException
i tng mi c to ra c cng cc trng thi nh i tng hin thi khi s
dng clone(), ngha l to ra bn copy mi ca i tng hin thi.
String toString()
Nu cc lp con khng vit hm ny th n s tr li dng biu din vn bn
(textual) ca i tng. Hm println() lp PrintStream s chuyn cc i s ca
n sang dng vn bn khi s dng hm toString().

protected void finalize() throws Throwable


Hm ny c gi ngay trc khi i tng b dn vo thng rc, ngha l trc
khi i tng b hu b.
2. Cc lp bao kiu nguyn thy (Wrapper class)
Cc gi tr nguyn thy khng phi l i tng trong Java. c th thao tc
c trn cc gi tr nguyn thy (gi tr s, k t v logic) th gi java.lang cung
cp cc lp bao gi (Wrapper) cho tng kiu d liu nguyn thy (gi tt l lp
bao). Cc lp bao c nhng c tnh chung sau:
1. Cc ton t to lp chung. Cc lp bao (tr lp Character ch c mt ton
t to lp) u c hai ton t to lp:
Ton t to lp s dng gi tr nguyn thy to ra i tng tng
ng
Character charObj = new Character(a);
Boolean boolObj = new Boolean(true);
Integer intObj = new Integer(2002);
Float floatObj = new Float(3.14F);
Double doubleObj = new Double(3.14);
1 Ton t th hai: chuyn cc i tng lp String biu din cho cc gi
tr nguyn thy v cc lp tng ng. Cc ton t ny s nm ra ngoi l
NumberFormatException khi gi tr String truyn vo hm to khng hp
l.
Boolean boolObj = new Boolean(true);
Integer intObj = new Integer(2002);
Float floatObj = new Float(3.14F);
Double doubleObj= new Double(3.14);
2. C cc hm tin ch chung: valueOf(String s), toString(), typeValue(),

equals().
2 Mi lp (tr lp Character) u nh ngha hm static valueOf(String s)
tr li i tng tng ng. Cc hm ny nm ra ngoi l
NumberFormatException khi gi tr String truyn vo phng thc khng
hp l.
Boolean boolObj = Boolean.valueOf(true);
Integer intObj = Integer.valueOf(2002);
Float floatObj = Float.valueOf(3.14F);
Double doubleObj= Double.valueOf(3.14);
3 Cc lp vit hm toString() tr li l cc i tng String biu din
cho cc gi tr nguyn thy dng xu.
String charStr = charObj.toString();

// a

String boolStr = boolObj.toString();

// true

String intStr = intObj.toString(); // 2002


String doubleStr = doubleObj.toString(); // 3.14
4 Cc lp nh ngha hm typeValue() tr li cc gi tr nguyn thy
tng ng vi cc i tng nguyn thy.
boolean b = boolObj.booleanValue();

// true

int i = intObj.intValue();
float f = floatObj.floatValueOf();

// 2002
// 3.14F

double d = doubleObj.doubleValueOf(); // 3.14


char c = charObj.charValue();

// a

5 Cc lp vit hm equals() thc hin so snh bng nhau ca cc i


tng nguyn thy.
Character charObj = new Character(a);
boolean charTest = charObj.equals(b);

// false

Integer intObj1 = Integer.valueOf(2010);


boolean intTest = intObj.equals(intObj1); // false
Lp Boolean
Lp ny nh ngha hai i tng Boolean.TRUE, Boolean.FALSE biu din cho
hai gi tr nguyn thy true v false tng ng.
Lp Character
Lp Character nh ngha hai gi tr cc tiu, cc i Character.MIN_VALUE,
Character.MAX_VALUE v cc gi tr kiu k t Unicode. Ngoi ra lp ny cn
nh ngha mt s hm static x l trn cc k t:
static boolean isLowerCase(char ch)// true nu ch l k t thng
static boolean isUpperCase(char ch)// true nu ch l k t vit hoa
static boolean isDigit(char ch) // true nuch l ch s
static boolean isLetter(char ch)// true nu ch l ch ci
static boolean isLetterOrDigit(char ch) // true nu ch l ch hoc l s
static char toUpperCase(char ch)// Chuyn ch v ch vit hoa
static char toLowerCase(char ch)// Chuyn ch v ch vit thng
static char toTitleCase(char ch)// Chuyn ch v dng tiu .
Cc lp bao kiu s
Cc lp Byte, Short, Integer, Long, Float, Double l cc lp con ca lp Number.
Trong cc lp ny u xc nh hai gi tr:
<Lp bao>.MIN_VALUE
<Lp bao>.MAX_VALUE
l cc gii hn ca cc s trong kiu . V d,
byte minByte = Byte.MIN_VALUE;

// -128

int maxInt = Integer.MAX_VALUE;

// 2147483647

Trong mi lp bao c hm typeValue() chuyn cc gi tr ca cc i tng


nguyn thy v gi tr s:

byte byteValue()
short shortValue()
int intValue()
long longValue()
float floatValue()
double doubleValue()
Trong mi lp bao cn c hm static parseType(String s) chuyn cc gi tr
c biu din di dng xu v cc gi tr s:
byte value1 = Byte.parseByte(16);
int value2 = Integer.parseInt(2002);
double value3 = Double.parseDouble(3.14);
V d: Vit chng trnh nhp vo mt dy s ty v sp xp theo th t tng
dn.
import java.io.*;
class SapXep{
static int[] day;
static void nhap(){
String str;
int n = day.length;
DataInputStream stream = new DataInputStream(System.in);
System.out.println("Nhap vao " + n + " so nguyen");
for (int k = 0; k < n; k++){
try{
System.out.print(k + ": );
str = stream.readLine();
day[k] = Integer.valueOf(str).intValue();
}catch(IOException e){

System.err.println("I/O Error!");
}
}
}
static void hienThi(){
int n = day.length;
for (int k = 0; k < n; k++)
System.out.print(day[k] + " ");
System.out.println();
}
static void sapXep(){
int x, max, k;
for(int i =day.length-1; i > 0; i--){
max = day[i];k = i;
for (int j = 0; j < i; j++)
if (max < day[j]){
max = day[j];
k = j;
}
day[k] = day[i];
day[i] = max;
}
}
public static void main(String[] args){
String str;
int n;
DataInputStream stream = new DataInputStream(System.in);
System.out.print("\nCho biet bao nhieu so nhap vao: ");

try{
str = stream.readLine();
}catch(IOException e){
System.err.println("I/O Error!");
str = "0";
}
n = Integer.valueOf(str).intValue();
SapXep.day = new int[n];
nhap();
sapXep();
System.out.println("Day so duoc sap xep: ");
hienThi();
}
}
Lp Void
Lp ny k hiu cho i tng ca lp Class biu din cho gi tr void.
3. Lp Math
Lp final class Math nh ngha mt tp cc hm tnh thc hin cc chc
nng chung ca ton hc nh cc php lm trn s, sinh s ngu nhin, tm s cc
i, cc tiu, v.v.
Lp final class Math cn cung cp nhng hng s nh s e (c s ca logarithm),
s pi thng qua Math.E v Math.PI.
Cc hm lm trn v x l cc gi tr gii hn
static int abs(int i)
static long abs(long l)
static float abs(float f)
static double abs(double d)
Hm abs() c np chng tr li gi tr tuyt i ca i s.

static double ceil(double d)


Hm ceil() tr li gi tr nh nht kiu double m khng nh hn i s v li
bng s nguyn. V d ceil(3.14) cho gi tr 4.0 l s trn trn ca i s.
static double floor(double d)
Hm floor() tr li gi tr ln nht kiu double m khng ln hn i s v li
bng s nguyn. V d floor(3.14) cho gi tr 3.0 l s sn di ca i s.
static int round(float f d)
static long round(double d)
Hm round() c np chng tr li s nguyn gn nht ca i s.
static int

max(int a, int b)

static long

max(long a, long b)

static float

max(float a, float b)

static double max(double a, double b)


Hm max() c np chng tr li gi tr cc i ca hai i s.
static int

min(int a, int b)

static long

min(long a, long b)

static float

min(float a, float b)

static double min(double a, double b)


Hm min() c np chng tr li gi tr cc tiu ca hai i s.
Cc hm ly tha
static double pow(double d1, double d2)
Hm pow() tr li gi tr l ly tha ca d1 v d2 (d1d2).
static double exp(double d)
Hm exp() tr li gi tr l lu tha c s e v s m d (ed).
static double log(double d)

Hm log() tr li gi tr l l-ga-rit t nhin (c s e) ca d.


static double sqrt(double d)
Hm sqrt() tr li gi tr l cn bc hai ca d , hoc gi tr NaN nu i s m.
Cc hm lng gic
static double sin(double d)
Hm sin() tr li gi tr l sine ca gc d c cho di dng radian.
static double cos(double d)
Hm cos() tr li gi tr l cose ca gc d c cho di dng radian.
static double tan(double d)
Hm tan() tr li gi tr l tangent ca gc d c cho di dng radian.
Hm sinh s ngu nhin
static double random()
Hm random() cho li gi tr l s ngu nhin trong khong t 0.0 n 1.0.

V. Cc lp tp hp
Tp hp (Collection) trong Java cho php lu li tham chiu n cc i tng.
Cc i tng bt k c th c lu tr, tm kim v c thao tc nh l cc
phn t ca tp hp.
Phn giao din
Giao din (interface) Collection l c s pht trin, m rng thnh cc giao
din khc nh Set, List, SortedSet v Map v giao din c s m rng thnh
SortedMap. Hnh sau m t cu trc phn cp theo quan h k tha ca cc giao
din li.

Cc giao din li ca cu trc Collection c m t trong bng sau:


interface

M t

Collection

interface c s nh ngha tt c cc php ton


c bn cho cc lp cn duy tr thc hin v ci
t chng

Set

M rng Collection ci t cu trc tp hp,


trong khng c phn t c lp v chng
khng c sp xp

SortedSet

M rng Set ci t cu trc tp hp c


sp, trong khng c phn t c lp v
chng c sp xp theo th t

List

M rng Collection ci t cu trc danh


sch, trong cc phn t c sp xp theo th
t, v c lp

Map

interface c s nh ngha cc php ton cc


lp s dng v ci t cc nh x t kho sang
cc gi tr

SortedMap

M rng ca Map ci t cc nh x kho


theo th t

Phn ci t
Gi java.util cung cp tp cc lp ci t cc giao din li to ra nhng cu
trc d liu thng s dng nh: Vector, HashTable, HashSet, LinkedList,
TreeSet, v.v. Nhng lp ny v giao din li c xy dng theo cu trc phn cp
nh trong hnh H6-3.

Cc giao din li v cc lp ci t chng


Trong hnh trn k hiu

biu din cho quan h k tha gia cc giao

din v --> biu din cho s ci t cc giao din.

Phn thut ton


Lp java.util.Collection (cn phn bit vi giao din Collection) cung cp mt s
hm static thc hin nhng thut ton a x cho nhng php ton khc nhau trn
tp hp, k c sp xp, tm kim v dch chuyn cc phn t.
Mt s hm trong s l:
static int binarySearch(List list, Object key)
S dng thut ton tm kim nh phn xc nh ch s ca phn t key
trong danh sch list.
static void fill(List list, Object obj)
Thay th tt c cc phn t trong danh sch list bng obj.
static void shuffle(List list)
Hon v cc phn t ca danh sch list mt cch ngu nhin.
static void sort(List list)
Sp xp cc phn t trong danh sch list theo th t tng dn.
1. Collection
Giao din Collection c xy dng nh l mu hp ng cho tt c cc
cu trc tp hp c th da vo m thc thi v ci t. Gi java.util cung cp
cc lp tp hp v ci t hu ht cc hm ca Collection.
Cc php ton c s
int size();Xc nh kch thc ca tp hp.
boolean isEmpty();Tr li true nu tp hp rng, ngc li false.

boolean contains(Object obj);Tr li true nu tp hp cha obj, ngc li false.


boolean add(Object obj); // Ty chn
boolean remove(Object obj); // Ty chn
Tr li true nu tp hp thc hin thnh cng vic b sung (loi b) obj, ngc
li false.
Mt s php ton khc
Nhng php ton sau thc hin trn tp hp nh mt n v cu trc d liu.
boolean cotainAll(Collection c); // Ty chn
Kim tra xem tp hp hin thi c cha c tp hp c hay khng.
boolean addAll(Collection c);// Ty chn
Thc hin php hp hai tp hp
boolean removeAll(Collection c); // Ty chn
Thc hin php tr hai tp hp
boolean retainAll(Collection c);

// Ty chn

Thc hin php giao hai tp hp


void clear() // Ty chn
Hy b i tng trong tp hp cc php trn tr li true nu thc hin
thnh cng v cho kt qu thc hin c minh ha nh trong hnh H6-4,
trong a, b l hai tp hp bt k.

a.addAll(b)
Hnh Cc php ton trn cc tp hp

a.removeAll(b) a.retainAll(b)

2. Set (tp hp)


Tp hp Set l cu trc d liu, trong khng c s lp li v khng c s sp
xp ca cc phn t. Giao din Set khng nh ngha thm cc hm mi m ch
gii hn li cc hm ca Collection khng cho php cc phn t ca n c
lp li.
Gi s a, b l hai tp hp (hai i tng ca cc lp ci t Set). Kt qu thc hin
trn a, b c th m t nh trong bng sau:

Cc hm trong Cc php hp tng ng


Set
a.containsAll(b)

b a ? (Tp con)

a.addAll(b)

a = a b (Hp tp hp)

a.removeAll(b)

a = a - b (Hiu tp hp)

a.retainAll(b)

a = a b (Giao tp hp)

a.clear()

a = (Tp rng)

Sau y chng ta xt mt s lp thc thi ci t giao din Set.


HashSet
Mt dng ci t nguyn thy ca Set l lp HashSet, trong cc phn t ca n
l khng c sp. Lp ny c cc ton t to lp:
HashSet()
To ra mt tp mi khng c phn t no c (tp rng).
HashSet(Collection c)
To ra mt tp mi cha cc phn t ca tp hp c nhng khng cho php
lp.
HashSet(int initCapacity)
To ra mt tp mi rng c kch thc (kh nng cha) l initCapacity.

HashSet(int initCapacity, float loadFactor)


To ra mt tp mi rng c kch thc (kh nng cha) l initCapacity v
yu t c np vo l loadFactor.
V d 6.4 Khi thc hin cc i s c a vo sau tn chng trnh theo dng
lnh. Chng trnh bt u vi tap1 l rng v ly cc k t ca i s u tin
to ra tap2. So snh hai tp , thng bo kt qu ra mn hnh, sau cng dn
tap2 vo tap1 v li tip tc nh th i vi i s tip theo cho n ht.
import java.util.*;
public class TapKT {
public static void main(String args[]){
int nArgs = args.length;

// S i s ca chng trnh

Set tap1 = new HashSet(); // To ra tp th nht l rng


for (int i = 0; i < nArgs; i++){
String arg = args[i]; // Ly tng i s ca chng trnh
Set tap2 = new HashSet();// To ra tp th 2
int size = arg.length();

// S k t trong mi i s

for (int j = 0; j < size; j++)// Tp th 2 cha cc k t ca arg


tap2.add(new Character(arg.charAt(j)));
// To ra tp tapChung chnh bng tap1
Set tapChung = new HashSet(tap1);
tapChung.retainAll(tap2);// tapChung = tap1 tap2
boolean b = tapChung.size() == 0;
if (b)
System.out.println(tap2+" va "+tap1+" la roi nhau");
else {
// tap2 c phi l tp con ca tap1?

boolean isSubset = tap1.containsAll(tap2);


// tap1 c phi l tp con ca tap2?
boolean isSuperset = tap2.containsAll(tap1);
// tap1 c bng tap2?
if (isSuperset && isSubset)
System.out.println(tap2 + " bang tap " + tap1);
else if (isSubset)
System.out.println(tap2+" la tap con cua "+tap1);
else if (isSuperset)
System.out.println(tap2+" la tap cha cua "+tap1);
else
System.out.println(tap2 + " va " + tap1 + " co "
+ tapChung + " la phan chung");
}
tap1.addAll(tap2);// hp tap2 vo tap1
}
}
}
Dch v thc hin chng trnh vi cc i s nh sau:
java TapKT em voi em anh
s cho kt qu:
[m, e] va [ ] la roi nhau
[v, i, o] va [m, e] la roi nhau
[m, e] la tap con cua [m, v, i, e, o]
[a, h, n] va [m, v, i, e, o] la roi nhau

3. List (danh sch)


Cu trc List l dng tp hp cc phn t c sp theo th t (cn c
gi l dy tun t) v trong cho php lp (hai phn t ging nhau). Ngoi
nhng hm m n c k tha t Collection, List cn b sung thm nhng hm
nh:
Object get(int index)
Cho li phn t c xc nh bi index.
Object set(int index, Object elem)

// Ty chn

Thay th phn t c xc nh bi index bng elem.


void add(int index, Object elem)

// Ty chn

Chn elem vo sau phn t c xc nh bi index.


Object remove(int index)

// Ty chn

B i phn t c xc nh bi index.
boolean addAll(int index, Collection c)

// Ty chn

Chn cc phn t ca tp hp c vo v tr c xc nh bi index.


int indexOf(Object elem)
Cho bit v tr ln xut hin u tin ca elem trong danh sch.
int lastIndexOf(Object elem)
Cho bit v tr ln xut hin cui cng ca elem trong danh sch.
List subList(int fromIndex, int toIndex)
Ly ra mt danh sch con t v tr fromIndex n toIndex .
ListIterator listIterator()
Cho li cc phn t lin tip bt u t phn t u tin.
ListIterator listIterator(int index)
Cho li cc phn t lin tip bt u t phn t c xc nh bi
index.
Trong ListIterator l giao din m rng giao din Iterator c trong

java.lang.
Cc lp ArrayList, Vector v LinkedList
Ba lp ny c nhng ton t to lp to ra nhng danh sch mi rng
hoc c cc phn t ly theo cc tp hp khc.
Vector v ArrayList l hai lp kiu mng ng (kch thc thay i c). Hiu
sut s dng hai lp ny l tng ng nhau, tuy nhin nu xt theo nhiu kha
cnh khc th ArrayList l cu trc hiu qu nht ci t cu trc danh sch
List.
V d 6.5 H thng c mt dy N_DIGIT (5) ch s b mt. Hy vit chng trnh
nhp vo N_DIGIT ch s on xem c bao nhiu ch s trng v c bao nhiu
v tr cc ch s trng vi dy s cho trc.
import java.util.*;
public class NhapDoanSo {
final static int N_DIGIT = 5;
public static void main(String args[]){
if(args.length != N_DIGIT) {
System.err.println("Hay doan " + N_DIGIT + " chu so!");
return;
}
List biMat = new ArrayList();// To danh sch biMat l rng
biMat.add("5");

// B sung cc s vo dy biMat

biMat.add("3");
biMat.add("2");
biMat.add("7");
biMat.add("2");
List doan = new ArrayList();// To danh sch doan l rng
for(int i = 0; i < N_DIGIT; i++)
doan.add(args[i]); // a cc s t i s chng trnh vo doan

List lap = new ArrayList(biMat);// Lu lu biMat sang lap


int nChua = 0;
// m s cc ch s trng nhau, ngha l thc hin c php b i
remove()
for(int i = 0; i < N_DIGIT; i++)
if (lap.remove(doan.get(i))) ++nChua;
int nViTri = 0;
ListIterator kiemTra = biMat.listIterator();
ListIterator thu = doan.listIterator();
// Tm nhng v tr on trng trong hai dy c lp
while (kiemTra.hasNext())// Khi cn phn t tip theo
// Kim tra xem ln lt cc v tr ca hai dy c trng nhau hay
khng
if (kiemTra.next().equals(thu.next())) nViTri++;
// Thng bo kt qu ra mn hnh
System.out.println(nChua + " chu so doan trung.");
System.out.println(nViTri + " vi tri doan trung.");
}
}
Dch v thc hin chng trnh:
java NhapDoanSo 3 2 2 2 7
s cho kt qu:
4 chu so doan trung
1 vi tri doan trung
4. Map (nh x)
Map nh ngha cc nh x t cc kho (keys) vo cc gi tr. Lu : cc
kha phi l duy nht (khng cho php lp). Mi ko c nh x sang nhiu nht
mt gi tr, c gi l nh x n.

Cc nh x khng phi l cc tp hp, giao din Map cng khng phi l m rng
ca cc Collection. Song, php nh x c th xem nh l mt loi tp hp theo
ngha: cc kho (key) to thnh tp hp v tp hp cc gi tr (value) hoc tp cc
cp <key, value>.
Giao din Map khai bo nhng hm sau:
Object put(Object key, Object value);

// Ty chn

Chn vo mt cp <key, value>


Object get(Object key);
c gi tr c xc nh bi key nu c nh x, ngc li cho null nu
khng c nh x ng vi key.
Object remove(Object key);

// Ty chn

Loi b nh x c xc nh bi key.
boolean containsKey(Object key);
Cho gi tr true nu key c nh x sang mt gi tr no , ngc li l
false.
boolean containsValue(Object value);
Cho gi tr true nu value c nh x bi mt key no , ngc li l
false.
int size();
Cho s cc cp nh x <key, value>.
boolean isEmpty();
Cho gi tr true nu nh x rng, ngc li l false.
Mt s php ton thng dng
void putAll(Map t);

// Ty chn

Sao li cc nh x t t.
void clear();
Xo i tt c cc nh x.
Set keySet();

// Ty chn

Xc nh tp cc kho.
Collection values();
Xc nh tp hp cc gi tr.
Set entrySet();
Xc nh tp cc nh x <key, value>.
Cc lp HashMap v HashTable
Hai lp ny ci t giao din Map v c xy dng trong java.lang. Chng cho
php to ra cc nh x mi c th rng hoc c nhng kch thc ty .
I.

V d 6.6 Vit chng trnh nhp vo cc trng lng v in ra tn sut ca


cc trng lng trong cc nhm cch nhau 5 n v (kg).

import java.util.*;
public class NhomTrongluong {
public static void main(String args[]){
// To ra mt nh x lu tn sut ca mi nhm
Map demNhom = new HashMap();
int nArgs = args.length;
// c cc trng lng c nhp vo t i s v chia nhm cch
nhau 5 n v.
for(int i = 0; i < nArgs; i++){
double trongL = Double.parseDouble(args[i]);
Integer nhomTL=new Integer((int)Math.round(trongL/5)*5);
Integer demCu = (Integer)demNhom.get(nhomTL);
// Tng s ln trng lung trong cng nhm, nu l ln u (demCu
= null) th t l 1.
Integer demMoi = (demCu == null)?
new Integer(1): new Integer(demCu.intValue()+1);
demNhom.put(nhomTL, demMoi);
}

// Ly ra tp cc gi tr t nh x demNhom
List keys = new ArrayList(demNhom.keySet());
// Sp xp li theo cc nhm trng lng
Collections.sort(keys);
ListIterator keyIterator = keys.listIterator();
// Tm tn sut ca cc trng lng c nhp vo trong cc nhm
while(keyIterator.hasNext()) {
Integer nhom = (Integer) keyIterator.next();
Integer dem = (Integer) demNhom.get(nhom);
int demInt = dem.intValue();
// S dng hm fill() ca lp Array to ra xu gm
demInt cc du *
char[] bar = new char[demInt];
Arrays.fill(bar, '*');
System.out.println(nhom+"\t" + new String(bar));
}
}
}
Dch v chy chng trnh NhomTrongLuong vi cc tham s:
java NhomTrongLuong 75 72 93 12 34
s cho kt qu:
10

35

36

**

95

Nh vy, nhm 10 kg c 1, 35 kg c 1, 75 kg c 2 v 95 kg c 1.
4. SortedSet (tp c sp) v SortedMap (nh x c sp)
Cc cu trc tp hp (set) v nh x (map) c giao din c bit l SortedSet v
SortedMap nh trong hnh H6-5 ci t nhng cu trc c cc phn t c sp

theo th t ch nh.
Giao din SortedSet
SortedSet l giao din m rng ca Set cung cp cc hm x l cc tp c
sp.
SortedSet headSet(Object toElem);
Cho li tp c sp gm nhng phn t ng trc toElem.
SortedSet tailSet(Object fromElem);
Cho li tp c sp gm nhng phn t cui ng sau fromElem.
SortedSet subSet(Object fromElem, Object toElem);
Cho li tp c sp gm nhng phn t k t fromElem n
toElem.
Object first();Cho li phn t u tin (cc tiu) ca tp c sp.
Object last();Cho li phn t cui cng (cc i) ca tp c sp.
Comparator comparator()
Cho li th t so snh ca cu trc c sp, cho null nu cc phn t c sp
theo th t t nhin (tng dn)
Giao din SortedMap
SortedMap l giao din m rng ca Map cung cp cc hm x l cc nh x
c sp theo th t ca kho (key).
SortedMap headMap(Object toKey);Cho li nh x c sp gm nhng phn t
ng trc toKey.
SortedMap tailMap(Object fromKey);Cho li nh x c sp gm nhng phn
t cui ng sau fromKey.
SortedMap subMap(Object fromKey, Object toKey);Cho li nh x c sp gm
nhng phn t k t fromKey n toKey.
Object firstKey();Cho li phn t u tin (cc tiu) ca nh x c sp.
Object lastKey();Cho li phn t cui cng (cc i) ca nh x c sp.

TreeSet v TreeMap
Hai lp ny ci t hai giao din SortedSet v SortedMap tng ng. Chng c
bn loi ton t to lp nh sau:
TreeSet()
TreeMap()
To ra nhng tp hoc nh x mi v rng, c sp theo th t tng dn
ca cc phn t hoc ca kho.
TreeSet(Comparator c)
TreeMap(Comparator c)
To ra nhng tp hoc nh x mi c sp v xc nh th t so snh
theo c.
TreeSet(Collection c)
TreeMap(Map m)
To ra nhng tp hoc nh x mi c sp v c cc phn t ly t c
hoc t m tng ng.
TreeSet(SortedSet s)
TreeMap(SortedMap m)
To ra nhng tp hoc nh x mi c sp v c cc phn t ly t s hoc
t m tng ng.

Chng 3
X L NGOI L

i vi ngi lp trnh h c th gp mt trong cc li sau:


1 Li c php (syntac error)
2 Li logic thut ton
3 Li lc thc thi ( runtime error)
- i vi li c php ngi lp trnh c th pht hin v sa li, da vo trnh bin
dch, y l li d pht hin v sa cha, tuy nhimn y cng l li gy kh khn
v chn nn i vi ngi mi hc lp trnh.
- i vi li thut ton, y l li kh pht hin v sa cha nht, tuy nhin trong
bi ny ta khng bn lun v vn ny.
- i vi li lc thc thi, ta hon ton c th kim sot c chng, thng thng
li runtime thng do nguyn nhn khch quan nh: truy cp vo mt a nhng
a ny li cha sn sng, hay thc hin php chia nhng mu s li bng 0, kt
ni vi my tnh xa nhng my li khng tn ti, khi mt li runtime xy
ra JVM s pht sinh mt ngoi l, nu mt chng trnh khng cung cp m s l
ngoi l c th kt thc khng bnh thng, trong bi hm nay ta s bn v vn
s l ngoi l trong java.
- Mi lp bit l trong java u c dn xut t lp c s Throwable, ta c th
to ra lp ngoi l ring bng cch m rng lp Throwable
I. Mc ch ca vic x l ngoi l
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.
II. M hnh s l ngoi l ca java
M hnh s l ngoi l ca java da trn ba hot ng chnh: c t ngoi
l, nm ra ngoi l, v bt ngoi l.
- Mi phng thc u c th pht sinh cc ngoi l, cc ngoi l c th pht sinh
cn c m t chi tit trong lnh khai bo ca phng thc, vic khai bo ny
c gi l c t ngoi l.
- Khi mt cu lnh trong phng thc gy li, m ngi lp trnh khng cung cp
m x l li, th ngoi l c chuyn n phng thc gi phng thc , vic
ny c gi l nm ra bit l, ta c th nm ra bit l mt cch tng minh (iu
ny s c gii thiu sau).
- Sau khi JVM nm ra mt ngoi l, th h thng thi hnh java bt u tin trnh
tm m x l li. M x l li hay cn gi l m x l bit l, java runtime s tm
m x l li bng cch ln ngc tr li chui cc phng thc gi nhau, bt u
t phng thc hin ti. Chng trnh s kt thc nu khng tm thy m x l
bit l. Qu trnh tm kim ny gi l bt bit l.
III. c t ngoi l
c t ngoi l l khai bo cho trnh bin dch bit l phng thc ny c
th gy ra ngoi l lc thi hnh.
khai bo bit l ta s dng t kho throws trong khai bo phng thc,
v d:
public void myMethod() throws IOException, RemoteException
t kho throws ch cho trnh bin dch java bit rng phng thc ny c th nm

ra ngoi l IOException v RemoteException, nu mt phng thc nm ra nhiu


ngoi l th cc ngoi l c khai bo cch nhau bi du phy ,
III. Nm ra ngoi l
Mt phng thc sau khi khai bo cc bit l, th bn (hoc chng trnh thc
thi java) c th nm ra cc i tng bit l, c kiu m ta khai bo trong danh
sch throws. C php ca lnh nm ra ngoi l:
throw ExceptionObject;
Ch :
3 Bn phi ch gia lnh khai bo bit l v lnh nm ra ngoi l
4 Mt phng thc ch c th nm ra cc ngoi l m n c khai bo
IV. Bt ngoi l
Mt ngoi l (exception) trong chng trnh Java l du hiu ch ra rng c
s xut hin mt iu kin khng bnh thng no .
Khi mt ngoi l xy ra, i tng 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 ngoi l ny c th l mt ngoi l chun ca Java hoc c th
l mt ngoi l do ta to ra. Lp Throwable c Java cung cp l cha ca tt c
cc ngoi l trong Java (lp u tin trong cy tha k).
Sau khi bn bit cch khai bo v nm ra bit l, th phn vic quan
trng nht l bt v x l bit l.
Vn i vi ngi lp trnh java l phi bit c on m no ca anh
ta c th gy ra li. Khi h khoanh vng c on m c th gy ra li h s
t on m, c kh nng gy ra li trong khi try ( th lm), v t on m
x l li trong khi catch ( bt gi). Khun dng tng qut nh sau:
try{

// Cc lnh c kh nng gy li
}
catch ( TypeException1 ex){
// M c thc thi khi mt ngoi l TypeException1 c pht sinh trong khi
try
}
catch ( TypeException2 ex){
// M c thc thi khi mt ngoi l TypeException2 c pht sinh trong khi
try
}
...
catch ( TypeExceptionN ex){
// M c thc thi khi mt ngoi l TypeExceptionN c pht sinh trong khi
try
} finally{
// khi lnh nay lun c thc hin cho d ngoi l c xy ra trong khi try
hay khng.
}

Nu khng c mt ngoi l no pht sinh trong khi try th cc mnh


catch s b b qua, trong trng hp mt trong cc cu lnh bn trong khi try gy
ra mt ngoi l th, th java s b qua cc cu lnh cn li trong khi try i tm
m x l ngoi l, nu kiu ngoi l so khp vi kiu ngoi l trong mnh
catch, th m lnh trong khi catch s c thc thi, nu khng tm thy mt
kiu ngi l no c so khp java s kt thc phng thc v chuyn bit l
ra phng thc gi phng thc ny qu trnh ny c tip tc cho n khi
tm thy m x l bit l, nu khng tm thy m x l bit l trong chui cc

phng thc gi nhau, chng trnh c th chm dt v in thng bo li ra lung


li chun System.err
V d
class TryClass{
public static void main(String args[]){
int n=0;
try{
System.out.println(1/n);
}
catch(ArithmeticException ex){
System.out.println(Loi chia cho 0);
}
}
}
Khi chy chng trnh ny ta se thu c mt dng in ra mn hnh nh sau:
Loi chia cho 0
Trong on chng trnh trn khi chia mt s cho 0 s gp ngoi l
ArithmeticException, bit c ngoi l ny c th xy ra do vy ta bt n v x
l trong khi catch(ArithmeticException ex), y ex l mt i tng ca lp
ArithmeticException cha cc thng tin v ngoi l xy ra, ta c th ly c thng
tin v ngoi l chng hn nh ly v m t ngoi l nh sau:
System.out.println(a.getMessage()).
V. 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. Thng thng khi finally cha cc cu lnh mang tnh cht dn dp
nh: ng kt ni CSDL, ng tp tin,.
try{
//Cc lnh c kh nng nm ra ngoi l
}
catch(Exception1 ex1){

}
catch(Exception2 ex2){

}
catch(Exceptionn exn){

}
finally{
//M lnh dn dp
}
Khi finally l tu chn, khng bt buc phi c. 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.

Hnh minh ha s thc hin ca cc khi try, catch v finally.

try block
No Exception

Exception occurs

finally block

catch block

finally block

VI. Mt s lp ngoi l chun ca Java


Danh sch mt s lp ngoi l
Tn lp ngoi l

ngha

Throwable

y l lp cha ca mi lp ngoi l trong Java

Exception

y l lp con trc tip ca lp Throwable, n


m t mt ngoi l tng qut c th xy ra
trong ng dng

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 truy cp ra ngoi 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 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.

Chng 4
LP TRNH A TUYN

I. Cc kin thc lin quan


1. Tin trnh ( process)
Tin trnh l mt th hin ca mt chng trnh ang x l. S hu mt con
tr lnh, tp cc thanh ghi v cc bin. hon thnh tc v ca mnh, mt tin
trnh cn cn n mt s ti nguyn khc nh: CPU, b nh, cc tp tin, cc thit
b ngoi vi..
Cn phn bit c gia tin trnh v chng trnh. Mt chng trnh l mt th
hin th ng, cha cc ch th iu khin my tnh thc hin mc ch g ;
khi cho thc thi ch th ny th chng trnh s bin thnh tin trnh
C th ni tm tt tin trnh l mt chng trnh chy trn h iu hnh v c
qun l thng qua mt s hiu gi l th
2. Tiu trnh ( thread )
Mt tiu trnh l mt n v x l c bn trong h thng. Mi tiu trnh x
l tun t cc on code ca n, s hu mt con tr lnh, mt tp cc thanh ghi v
mt vng nh stack ring, cc tiu trnh chia s CPU vi nhau ging nh cch chia

s gia cc tin trnh. Mt tin trnh s hu nhiu tiu trnh, tuy nhin mt tiu
trnh ch c th thuc v mt tin trnh, cc tiu trnh bn trong cng mt tin trnh
chia s nhau khng gian a ch chung, iu ny c ngha l cc tiu trnh c th
chia s nhau cc bin ton cc ca tin trnh. Mt tiu trnh cng c th c cc
trng thi ging nh cc trng thi ca mt tin trnh.
3. H iu hnh n nhim, a nhim
HH n nhim l HH ch cho php 1 tin trnh chy ti mt thi im, v
d HH DOS l HH n nhim.
-

HH a nhim cho php nhiu tin trnh chy ti mt thi im, v d

HH windows, Unix, Linux l cc HH a nhim


HH a nhim u tin: cc tin trnh c cp pht thi gian s dng CPU
theo mc u tin khc nhau
HH a nhim khng u tin: cc tin trnh khng c mc u tin no c,
chng t gic nh quyn kim sot CPUsau khi kt thc phn cng vic
Ch : trong thc t mi my thng ch c 1 CPU, nn khng th c nhiu tin
trnh chy ti mt thi im. Nn thng thng s a chng ch l gi lp. Chng
c gi lp bng cch lu tr nhiu tin trnh trong b nh ti mt thi im, v
iu phi CPU qua li gia cc tin trnh.
4. Cc trng thi ca tin trnh
Trng thi ca mt tin trnh ti mt thi im c xc nh bi hot ng
hin thi ca tin trnh . Trong qu trnh sng mt tin trnh thay i trng
thi do nhiu nguyn nhn nh: ht thi gian s dng CPU, phi ch mt s
kin no xy ra, hay i mt thao tc nhp/xut hon tt
Ti mt thi im mt tin trnh c th nhn mt trong cc trng thi sau y:
To mi: tin trnh ang c thnh lp
Running: cc ch th ca tin trnh ang c x l, hay ni cch khc tin

trnh ang s hu CPU


Blocked: tin trnh ang ch c cp ti nguyn, hay ch mt s kin no
xy ra
Ready: tin trnh ang ch cp CPU x l
Kt thc: tin trnh hon tt vic x l

5. Min gng ( Critical Section )


a) Vn tranh chp ti nguyn
Ta xt tnh hung sau:
gi s A c 500$ trong ti khon ngn hng
A quyt nh rt ra 100$ t ti khon ngn hng, thao tc ca A gm 2 bc:
1) ly ra 100$
2) gim s ti khon i 100$
Tnh hung gia 2 thao tc 1 v 2, B tr A 300$, do vy B cp nht vo trong
ti khon ca A l 800$ ( =500$ +300$), sau A tip tc cng vic 2, n cp
nht li trong ti khon l 400$, nh vy B tr A 300$, nhng A khng nhn
c.
b) Min gng (Critical Section)
on chng trnh trong c th xy ra cc mu thun truy xut trn ti nguyn
dng chung c gi l min gng ( Critical Section )
6. Kho cht (deadlock)
Mt tp cc tin trnh c nh ngha l trong tnh trng kho cht nu nh,
mi tin trnh trong tp hp u u ch i mt s ti nguyn ang b nm

gi bi cc tin trnh khc, nh vy khng c tin trnh no c th tip tc x


l, cng nh gii phng ti nguyn cho cc tin trnh khc s dng, tt c cc
tin trnh trong tp hp u b kho vnh vin!.
II. Lp trnh a tuyn trong Java
Vi Java ta c th xy dng cc chong trnh a lung. Mt ng dng c th
bao gm nhiu lung. Mi lung c gn mt cng vic c th, chng c thc
thi ng thi vi cc lung khc.
C hai cch to ra lung
Cch 1: To ra mt lp k tha t lp Thread v ghi phng thc run ca
lp Thread nh sau:
class MyThread extends Thread{
public void run(){
//M lnh ca tuyn
}
}
Cch 2: To ra mt lp trin khai t giao din Runnable, ghi phng thc
run
class MyThread implements Runnable{
public void run(){
//M lnh ca tuyn
}
}
1. Lp Thread
Lp Thread cha phng thc to dng Thread() cng nh nhiu phng thc
hu ch c chc nng chy, khi ng, tm ngng, tip tc, gin on v ngng
tuyn. to ra v chy mt tuyn ta cn lm 2 bc:

M rng lp Thread v Ghi phng thc run()


Gi phng thc start() bt u thc thi tuyn
Lp Thread khng c nhiu phng thc lm, chng ch c mt vi phng thc
hu dng c lit k sau:
public void run()
c java gi thc thi tuyn thi hnh, bn phi ghi phng thc ny thc
thi nhim v ca tuyn, bi v phng thc run()ca lp Thread ch l phng
thc rng
public void start()
khi ta to ra tuyn n cha thc s chy cho n khi, phng thc start() c
gi, khi start() c gi th phng thc run() cng c kch hot
public void stop()
c chc nng ngng tuyn thi hnh, phng thc ny khng an ton, bn nn
gn null vo bin Thread dng tuyn, thay v s dng phng thc stop()
public void suspend()
C chc nng tm ngng tuyn, trong java 2, phng thc ny t c s
dng, bi v phng thc ny khng nh ti nguyn m n lm gi, do vy c
th nguy c dn n deadlock ( kho cht ), bn nn dng phng thc wait(),
tm ngng tuyn thay v s dng phng thc suspend()
public void resume()
Tip tc vn hnh tuyn nu nh n ang b ngng, nu tuyn ang thi hnh th
phng thc ny b b qua, thng thng phng thc ny c dng kt hp
vi phng thc suspend(), k t java 2 phng thc ny cn vi phng thc
suspend()b t chi, do vy bn nn dng phng thc notify () thay v s
dng phng thc resume()
public static void sleep( long millis) Threadows InterruptedException
t tuyn thi hnh vo trng thi ng, trong khong thi gian xc nh bng
mili giy. ch sleep() l phng thc tnh.

public void interrupt()


lm gin on tuyn thi hnh
public static boolean isInterrupt()
kim tra xem tuyn c b ngt khng
public void setpriority( int p)
n nh u tin cho tuyn thi hnh, u tin c xc nh l mt s
nguyn thuc on [1,10]
public final void wait() throws InterruptException
t tuyn vo trng thi ch mt tuyn khc, cho n khi c mt tuyn khc
thng bo th n li tip tc, y l phng thc ca lp c s Object
public final void notify ()
nh thc tuyn ang ch, trn i tng ny
public final void notifyAll() nh thc tt c cc tuyn ang ch trn i tng
ny
isAlive() Tr v True, nu lung l vn cn tn ti (sng)
getPriority() Tr v mc u tin ca lung
join() i cho n khi lung kt thc
isDaemon() Kim tra nu lung l lung mt lung chy ngm (deamon)
setDeamon(boolean on) nh du lung nh l lung chy ngm
v d: ta to ra 2 tuyn thi hnh song song, mt tuyn thc hin vic in 200 dng
i hc s phm k thut Hng Yn, trong khi tuyn ny ang thc thi th c
mt tuyn khc vn tip tc in 200 dng ch cho mng bn n vi java
/**
* <p>Title: </p>
* <p>Description: Giao trinh ngon ngu lap trinh Java</p>
* <p>Copyright: Copyright (c) 2004</p>

* <p>Company: DHSPKT HY</p>


* @author Hoang Trong The
* @version 1.0
*/
public class Hello{
public static void main ( String[] args ){
new ChaoDH ().start ();
new ChaoJV ().start ();
}
}
class ChaoDH extends Thread{
public void run (){
for ( int i = 1; i <= 200; i++ )
System.out.println ( "i hc s phm k thut Hng Yn" );
}
}
class ChaoJV extends Thread{
public void run (){
for ( int i = 1; i <= 200; i++ )
System.out.println ( "cho mng bn n vi java" );
}
}
khi ta chy chng trnh thy kt qu xen k nhau nh
..
i hc s phm k thut Hng Yn

i hc s phm k thut Hng Yn


cho mng bn n vi java
i hc s phm k thut Hng Yn
cho mng bn n vi java
i hc s phm k thut Hng Yn
cho mng bn n vi java
cho mng bn n vi java
...
2. Vng i ca Thread
Hnh sau th hin trng thi ca tuyn trong vng i ca chng

3. Lung chy ngm (deamon)


Mt chng trnh Java kt thc ch sau khi tt c cc lung thc thi xong.
Trong Java c hai loi lung:
- Lung ngi s dng
- Lung chy ngm (deamon)
Ngi s dng to ra cc lung ngi s dng, trong khi cc lung deamon
l cc lung chy nn. Lung deamon cung cp cc dch v cho cc lung khc.
My o Java thc hin tin trnh thot, khi ch cn duy nht lung deamon vn
cn sng. My o Java c t nht mt lung deamon l lung garbage collection
(thu lm ti nguyn - dn rc). Lung dn rc thc thi ch khi h thng khng c

tc v no. N l mt lung c quyn u tin thp. Lp lung c hai phng thc


lm vic vi lung deamon:
- public void setDaemon(boolean on)
- public boolean isDaemon()
4. Giao din Runnable
mc trc bn to ra cc lung thc hin song song vi nhau, trong
java ta cn c th to ra cc tuyn thi hnh song song bng cch trin khai giao
din Runnable. Chc bn s t hi, c lp Thread ri ti sao li cn c giao
din Runnable na, chng khc g nhau?, cu tr li ch, java khng h tr k
tha bi, nu chng trnh ca bn va mun k tha t mt lp no , li va
mun a tuyn th bn bt buc phi dng giao din Runnable, chng hn nh bn
vit cc Applet, bn va mun n l Applet, li va mun thc thi nhiu tuyn, th
bn va phi k tha t lp Applet, nhng nu k tha t lp Applet ri, th
bn khng th k tha t lp Thread na.
Ta vit li v d trn, nhng ln ny ta khng k tha lp Thread, m ta
trin khai giao din Runnable
public class Hello{
public static void main ( String[] args ){
Thread t = new Thread ( new ChaoDH () );
t.start ();
Thread t1 = new Thread ( new ChaoJV () );
t1.start ();
}
}
class ChaoDH implements Runnable{

public void run (){


ChaoDH thu = new ChaoDH ();
for ( int i = 1; i <= 200; i++ )

System.out.println("i hc s phm k thut Hng Yn");


}
}
}
class ChaoJV implements Runnable{
public void run (){
for ( int i = 1; i <= 200; i++ )

System.out.println ( "cho mng bn n vi java" );


}
}
}
Cho chy v d ny ta thy kt qu ra khng khc g vi v d trc.
5. Thit lp u tin cho tuyn
Khi mt tuyn c to ra, n nhn mt u tin mc nh, i khi ta
mun iu chnh u tin ca tuyn t c mc ch ca ta, tht n gin,
t u tin cho mt tuyn ta ch cn gi phng thc setPriority() v truyn
cho n mt s nguyn s ny chnh l u tin m bn cn t.
Ta vit li v d trn nh sau: Thm vo phng thc main() 2 dng lnh:
t.setPriority(1);//Tuyn ny c u tin l 1
t1.setPriority(10);// Tuyn ny c u tin l 1
Chy li chng trnh ny sau khi sa v trc khi sa ta thy tuyn t1 c cp
thi gian s dng CPU nhiu hn tuyn t, l do l ta t u tin ca tuyn

t1, ln hn u tin ca tuyn t


Ch :
1) u tin ca mt tuyn biu th bi mt s nguyn nm trong on t 1
n 10, mt li s pht sinh nu ta gn cho n u tin, nm ngoi khong
ny
2) 2)

nu mt tuyn khng c t u tin th n s nhn u tin

mc nh ( bng 5 ), ta c th kim tra iu ny bng cch gi phng thc


getPriority()
6. Nhm tuyn (Thread Group)
- Nhm tuyn l mt tp hp gm nhiu tuyn, khi ta tc ng n nhm tuyn
( chng hn nh tm ngng, ) th tt c cc tuyn trong nhm u nhn c
cng tc ng , iu ny l tin li khi ta mun qun l nhiu tuyn thc
hin cc tc v tng t nhau.
to mt nhm tuyn ta cn:
+ to ra mt nhm tuyn bng cch s dng phng thc to dng ca lp
ThreadGroup()
ThreadGroup g=new ThreadGroup(ThreadGroupName);
ThreadGroup g=
new ThreadGroup(ParentThreadGroup,ThreadGroupName);
Dng lnh trn to ra mt nhm tuyn g c tn l ThreadGroupName, tn
ca tuyn l mt chui v khng trng vi tn ca mt nhm khc.
+ a cc tuyn vo nhm tuyn dng phng thc to dng ca lp Thread()
:
Thread =new Thread (g, new ThreadClass(),ThisThread);
7. ng b cc tuyn thi hnh
Khi nhiu tuyn truy cp ng thi vo ti nguyn dng chung, m ti
nguyn ny li khng th chia s, cho nhiu tuyn, khi ti nguyn dng chung

c th b hng. V d, mt lung c th c gng c d liu, trong khi lung khc


c gng thay i d liu. Trong trng hp ny, d liu c th b sai.
Trong nhng trng hp ny, bn cn cho php mt lung hon thnh trn
vn tc v ca n, v ri th mi cho php cc lung k tip thc thi. Khi hai hoc
nhiu hn mt lung cn thm nhp n mt ti nguyn c chia s, bn cn
chc chn rng ti nguyn s c s dng ch bi mt lung ti mt thi im.
Bi trong java khng c bin ton cc, chng ta ch c thuc tnh ca i
tng, tt c cc thao tc c th dn n hng hc u thc hin qua phng thc,
do vy java cung cp t kho synchronized, t kho ny c thm vo nh
ngha ca phng thc bo cho java bit y l mt phng thc ng b, mi i
tng s c mt b qun l kho, b qun l kho ny ch cho 1 phng thc
synchronized ca i tng chy ti mt thi im
Mu cht ca s ng b ha l khi nim monitor (gim st), hay cn
gi semaphore (c hiu). Mt monitor l mt i tng m c kha c
quyn. Ch mt lung c th c monitor ti mi thi im. Tt c cc lung khc
c gng thm nhp vo monitor s b tr hon, cho n khi lung u tin thot
khi monitor. Cc lung khc c bo ch i monitor. Mt lung c th
monitor mt i tng nhiu ln.

Chng 5
NHP XUT

Mt chng trnh thng xuyn lm vic vi d liu, c th lu tr


lu di chng ta phi lu tr v nhn li d liu t thit b lu tr ngoi,
ngun thng tin ngoi khng ch gm d liu c lu tr trn a t, a CD
m n c th l d liu ca mt chng trnh khc, hoc c th l c lu
tr trn mng d chng c lu tr u chng cng ch c 1 s dng
nh: i tng, k t, hnh nh hoc m thanh, d d liu c lu tr di
hnh thc no, lu tr u th java u tru tng ho thnh cc lung,
iu ny l rt tinh vi n lm cho ta khng cn phi quan tm d liu c
lu tr u, di dng thc nh th no, n ng nht mi ngun d liu
vi nhau:
nhn v cc thng tin, mt chng trnh m mt lung lin kt vi
i tng ngun( tp tin, b nh, Socket) v c cc thng tin tun t.
Tng t ghi thng tin ra cc thit b ngoi bng cch m mt lung n
i tng ch v ghi thng tin ra mt cch tun t nh

Lung l s tru tng ho mc cao, do vy bt k d liu c c vo t


u hoc ghi ra u, th thut ton c/ghi tun t u ta nh sau:
c vo

open a stream
while more information
read information
close the stream
Ghi ra
open a stream
while more information
write information
close the stream
Lp lung
Java a ra nhiu lp lung, x l mi loi d liu, java chia lung
ra thanh 2 loi: lung byte ( byte stream) v lung k t (character stream),
lp InputStream v OutputStream l hai lp c s cho mi lung nhp xut
hng byte, v lp Reader/ Writer l hai lp c s cho vic c ghi hng k
t.
Lp RandomAccessFile k tha t lp Object v trin khai giao din,
InputStream v OutputStream, y l lp duy nht h tr c c ln ghi.
Lp nhp, xut hng k t
Reader v Writer l hai lp c s tru tng cho lung hng k t, hai lp
ny cung cp mt giao din chung cho tt c cc lp c/ ghi hng k t, mi
ln c/ ghi ra lung l c 2 byte tng ng vi mt k t unicode, Sau ay
l m hnh phn cp cc lp c/ ghi hng k t

Lung hng byte


c th c ghi 1 byte, ta phi s dng lung hng byte, hai lp InputStream
v OutputStream l hai lp c s tru tng cho cc lung hng byte, mi ln
c/ ghi ra lung l c/ ghi 8 bit d liu ra lung, Hnh sau th hin mi quan h
phn cp gia lp c/ ghi hng byte

S tng t gia hai lung hng byte v hng k t


Lp Reader v InputStream c mt giao din ging nhau, chng ch khc nhau v

kiu d liu c vo, v d lp Reader c cc phng thc sau gip cho vic c
mt k t hoc mt mng cc k t
int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
th trong lp InputStream cng c cc phng thc vi tn tng t cho vic c
mt byte hoc mt mng cc byte
int read()
int read(byte cbuf[])
int read(byte cbuf[], int offset, int length)
Cng tng t vy lp Writer v OutputStream cng c mt giao din tng t
nhau, v d lp Writer nh ngha cc phng thc ghi mt k t, mt mng cc
k t ra lung
int write(int c)
int write(char cbuf[])
int write(char cbuf[], int offset, int length)
th lp OutputStream cng c cc phng thc tng ng, ghi mt byte, mt
mng byte ra lung
int write(int c)
int write(byte cbuf[])
int write(byte cbuf[], int offset, int length)
X l tp tin
x l tp tin ngoi tr, ta s dng cc lung lin quan n tp tin nh
FileInputStream v FileOutputStream cho vic c ghi tp hng byte, FileReader
v FileWriter cho vic c ghi hng k t, thng thng mun s dng lung tp
tin ta s dng hm to ca cc lp tng ng lin kt lung vi mt tp tin c
th.

public void FileInputStream ( String FileName)


public void FileInputStream ( File file)
public void FileOutputStream ( String FileName)
public void FileOutputStream (File file)
public void FileWriter ( String FileName)
public void FileWriter (File file)
public void FileReader ( String FileName)
public void FileReader (File file)
V d: vit chng trnh file copy, thc hin vic copy mt tp, ta s vit chng
trnh ny s dng c 2 lung hng byte v hng k t
import java.io.*;
// chng trnh copy s dng lung hng k t
public class CopyCharacter {
public static void main(String[] args) throws IOException {
File inputFile = new File("C:/in.txt");
File outputFile = new File("C:/out.txt");
FileReader in = new FileReader(inputFile);
FileWriter out = new FileWriter(outputFile);
int c;
while ((c = in.read())! = -1)
out.write(c);
in.close();
out.close();
}

}
import java.io.*;
// Chng trnh copy s dng lung hng byte
public class CopyBytes {
public static void main(String[] args) throws IOException {
File inputFile = new File("farrago.txt");
File outputFile = new File("outagain.txt");
FileInputStream in = new FileInputStream(inputFile);
FileOutputStream out = new FileOutputStream(outputFile);
int c;
while ((c = in.read())! = -1)
out.write(c);
in.close();
out.close();
}
}

Lung d liu
c/ ghi cc kiu d liu nguyn thu, ta s dng lung DataInputStream v
DataOutputStream, lp DataInputStream trin khai giao din DataInput, cn lp
DataOutputStream trin khai giao din DataOuput
Cc phng thc sau c nh ngha trong giao din DataOutput

void write(byte[] b)

Ghi mt mng byte ra lung

void write(byte[] b, int off, int len)

Ghi mt mng byte ra lung k t v tr off,


len byte

void write(int b)

Ghi mt byte ra lung

void writeBoolean(boolean v)

Ghi mt gi tr logic ra lung

void writeByte(int v)

Ghi ra lung phn thp ca v

void writeBytes(String s)

Ghi mt xu ra lung

void writeChar(int v)

Ghi mt k t ra lung

void writeChars(String s)

Ghi mt xu k t ra lung

void writeDouble(double v)

Ghi mt s double ra lung

void writeFloat(float v)

Ghi mt s thc ra lung

void writeInt(int v)

Ghi mt s nguyn ra lung

void writeLong(long v)

Ghi mt s long ra lung

void writeShort(int v)

Ghi mt s short ra lung

void writeUTF(String str)

Chi mt xu k t Unicode ra lung

Cc phng thc sau c nh ngha trong giao din DataInput:


boolean readBoolean()

c mt gi tr logic t lung

byte readByte()

c mt byte t lung

char readChar()

c mt k t t lung

double readDouble()

c mt s double t lung

float readFloat()

c mt s float t lung

void readFully(byte[] b)

c mt mng byte t lung v ghi vo


mng

voidreadFully(byte[] b, int off, int len)

c len byte t lung v ghi vo mng


t v tr off

int readInt()

c mt s nguyn

String readLine()

c mt xu k t cho n khi gp k t
xung dng v b qua k t xung dng

long readLong()

c mt s long

short readShort()

c mt s short

int readUnsignedByte()

c mt s nguyn khng du trong


khong 0..255

in treadUnsignedShort()

c mt s nguyn khng du trong


on t 0..65535

String readUTF()

c mt xu k t Unicode

int skipBytes(int n)

B qua n byte t lung

Sau y l mt v d nh v lung nhp xut d liu, v d ny ghi d liu ra tp


ri li c lai:
import java.io.*;
public class DataIODemo {
public static void main(String[] args) throws IOException {
// write the data out
DataOutputStream out = new DataOutputStream(new
FileOutputStream(c:/TestIO.txt"));
// ghi s nguyn
out.writeInt(10);
// ghi s long
out.writeLong(123456789);
// ghi s thc chnh xc kp
out.writeDouble(123.456789);

// ghi s thc chnh xc n


out.writeFloat(123.456789f);
// ghi gi tr logic
out.writeBoolean(true);
// ghi mt xu
out.writeUTF("Day la mot xau ki tu");
out.close();
// read it in again
DataInputStream in = new DataInputStream(new
FileInputStream("c:/TestIO.txt"));
try {
// c li s nguyn
System.out.println("Gia tri nguyen " + in.readInt());
// c li s nguyn di
System.out.println("Gia tri long " + in.readLong());
// c li s thc chnh xc kp
System.out.println("Gia tri double " + in.readDouble());
// c li s thc chnh xc n
System.out.println("Gia tri float " + in.readFloat());
// c li gi tr logic
System.out.println("Gia tri boolean " + in.readBoolean());
// c li mt xu unicode
System.out.println("Gia tri xau " + in.readUTF());
}
catch (EOFException e) {
System.out.println("loi");
}

in.close();
}
}
Lung in n
V cc lung xut ghi d liu ra di dng nh phn do vy bn khng th dng
lnh type, hoc cc chng trnh son tho asciii xem c, trong java c th
s dng lung in n xut d liu ra di dng asciii. Lp PrintStream v
PrintWriter s gip ta lm vic ny. Hai lp ny thc hin chc nng nh nhau,
u xut ra d liu dng asciii.
Mt s phng thc ca lp PrintStream:
boolean checkError()

dn ht d liu ra v kim tra li lung

void close()

ng lung

void flush()

dn d liu trong vng m ra

void print(boolean b)

ghi gi tr logic ra lung

void print(char c)

ghi k t

void print(char[] s)

ghi mt mange k t

void print(double d)

ghi mt s thc chnh xc kp

void print(float f)

ghi mt s thc

void print(int i)

ghi mt s nguyn

void print(long l)

ghi mt s nguyn di

void print(Object obj)

ghi mt i tng

void print(String s)

ghi mt xu

void println()

to ra mt dng trng

void println(boolean x)

ghi gi tr logic ra lung v xung dng

void println(char x)

ghi k t v xung dng

void println(char[] x)

ghi mt mange k t v xung dng

void println(double x)

ghi mt s thc chnh xc kp v


xung dng

void println(float x)

ghi mt s thc v xung dng

void println(int x)

ghi mt s nguyn v xung dng

void println(long x)

ghi mt s nguyn di v xung dng

void println(Object x)

ghi mt i tng v xung dng

void println(String x)

ghi mt xu v xung dng

protected void setError()

t trng thi li ca lung l true

void write(byte[] buf, int off, int

ghi mng byte t v tr off len k byte ra

len)

lung

void write(int b)

ghi mt byte ra lung

Hm to ca lp PrintStream:
PrintStream(OutputStream out) to ra mt lung mi
PrintStream(OutputStream out, boolean autoFlush) to ra mt lung mi vi chc
nng AutoFlush ( t dn)
Mt s phng thc ca lp PrintWriter
boolean checkError()

dn ht d liu ra v kim tra li lung

void close()

ng lung

void flush()

dn d liu trong vng m ra

void print(boolean b)

ghi gi tr logic ra lung

void print(char c)

ghi k t

void print(char[] s)

ghi mt mange k t

void print(double d)

ghi mt s thc chnh xc kp

void print(float f)

ghi mt s thc

void print(int i)

ghi mt s nguyn

void print(long l)

ghi mt s nguyn di

void print(Object obj)

ghi mt i tng

void print(String s)

ghi mt xu

void println()

to ra mt dng trng

void println(boolean x)

ghi gi tr logic ra lung v xung dng

void println(char x)

ghi k t v xung dng

void println(char[] x)

ghi mt mange k t v xung dng

void println(double x)

ghi mt s thc chnh xc kp v


xung dng

void println(float x)

ghi mt s thc v xung dng

void println(int x)

ghi mt s nguyn v xung dng

void println(long x)

ghi mt s nguyn di v xung dng

void println(Object x)

ghi mt i tng v xung dng

void println(String x)

ghi mt xu v xung dng

protected void setError()

t trng thi li ca lung l true

void write(byte[] buf, int off, int

ghi mng byte t v tr off len k byte ra

len)

lung

void write(int b)

ghi mt byte ra lung

void write(int c)

Ghi mt k t n

void write(String s)

Ghi mt xu

void write(String s, int off, int len) Ghi mt xu len k t tnh t v tr off
Cc hm to ca lp PrintWriter
- PrintWriter(OutputStream out) to ra mt PrintWriter khng c chc nng t dn
t mt i tng OutputStream.
- PrintWriter(OutputStream out, boolean autoFlush) to ra mt PrintWriter vi
chc nng t dn t mt i tng OutputStrea.
- PrintWriter(Writer out) to ra mt PrintWriter khng c chc nng t dn t mt
i tng Writer

- PrintWriter(Writer out, boolean autoFlush) to ra mt PrintWriter vi chc nng


t dn t mt i tng Writer
Sau y l mt v d v lung in n, v d ny in ra mt tp mt s nguyn, mt s
thc v mt xu k t, sau khi chy chng trnh bn c th s dng lnh type ca
DOS xem
import java.io.*;
public class DataIODemo1 {
public static void main(String[] args) throws IOException {
// write the data out
PrintWriter out = new PrintWriter(new FileOutputStream("c:/a.txt"));
out.println(10);
out.println(1.2345);
out.print("xau ki tu");
out.close();
}
}
Lung m
V cc thao tc vi cng, mng thng lu hn rt nhiu so cc thao tc vi b
nh trong, do vy chng ta cn phi c mt k thut no tng tc c/ghi,
k thut chnh l vng m, vi vng m ta s gim c s ln c ghi
lung, trong java ta c th to ra vng m vi cc lp
BufferInputStream, BufferOutputStream, BufferReader, BufferWriter, thng
thng bn s ni cc lung ca bn vo lung m.
Cc phng thc to dng lung m:

public BufferInputStream( InputStream )


public BufferInputStream (InputStream in, int bufferSize)
public BufferOutputStream ( OutputStream out)
public BufferOutputStream ( OutputStream out, int bufferSize)
public BufferReader ( Reader in)
public BufferReader ( Reader in, int bufferSize)
public BufferWriter ( Writer out)
public BufferWriter ( Writer out, int bufferSize)
Tp tin truy cp ngu nhin
Tt c cc lung xt trn ch c th c, hoc ghi, chng khng th c ghi
ng thi, ch duy nht c mt lp cho php ta c ghi ng thi, l lp
RandomAccessFile, lp ny trin khai giao din InputData v OutputData, nn
chng c tt c cc phng thc ca c 2 lp ny, ngoi ra chng cn c cc
phng thc sau:
- public void seek(long pos) chuyn con tr n v tr pos tnh t v tr u tin,
ch v tr u tin tnh t 0
- public long getFilePointer() tr v v tr con tr tp tnh bng byte, k ta u tp
- public long length() tr v di ca tp
- public void writeChar(int v) ghi k t unicode ra tp vi byte cao c ghi trc
- public final void writeChars(String s) ghi mt xu k t ra tp
Tng t ging C/C++ khi bn m mt tp truy cp ngu nhin bn phi ch r
ch lm vic l c r, hay ghi w hay c ghi ng thi rw, v d nh bn
mun m tp a.txt theo ch c ghi ng thi th bn dng c php
RandomAccessFile =new RandomAccessFile(C:/ a.txt, rw)
Chng trnh di y minh ho cch dng lp RandomAccessFile. N ghi
mt gi tr boolean, mt int, mt char, mt double ti mt file c tn abc.txt. N
s dng phng php seek( ) tm v tr nh v bn trong tp tin (bt u t 1).

Sau n c gi tr s nguyn, k t v double t tp tin v hin th chng ra


mn hnh.
import java.lang.System;
import java.io.RandomAccessFile;
import java.io.IOException;
public class rndexam{
public static void main (String args[ ]) throws IOException

RandomAccessFile rf;
rf = new RandomAccessFile(abc.txt, rw);
rf.writeBoolean(true);
rf.writeInt(67868);
rf.writeChars(J);
rf.writeDouble(678.68);
//S dng phng thc seek() di chuyn con tr n byte th hai
rf.seek(1);
System.out.println(rf.readInt());
System.out.println(rf.readChar());
System.out.println(rf.readDouble());
rf.seek(0);
System.out.println(rf.readBoolean));
rf.close();
}
}
Kt qu xut ra ca chng trnh:

Lp File
Lp File cung cp giao din chung x l h thng tp c lp vi mi
trng ca cc my tnh. Mt ng dng c th s dng cc chc nng chnh ca
File x l tp hoc cc th mc (directory) trong h thng tp. x l cc ni
dung ca cc tp th s dng cc lp FileInputStream, FileOutputStream v
RandomAccessFile.
Lp File nh ngha cc thuc tnh ph thuc vo mi trng (platform)
c s dng x l tp v tn gi cc ng dn trong cc th mc mt cch
c lp vi mi trng.
public static final char separatorChar
public static final String separator
nh ngha cc k hiu hoc cc xu s dng ngn cch cc thnh phn
trong tn ca ng dn. K hiu / ngn cch cho Unix, \ c s dng
ngn cch cc mc ca ng dn trong Window.
V d: C:\book\Java l tn ng dn trong Window.
public static final char pathSeparatorChar
public static final String pathSeparator
nh ngha cc k hiu hoc cc xu s dng ngn cch cc tp hoc tn
th mc trong danh sch ca cc ng dn. K hiu ngn cch : cho Unix,
; c s dng phn cch cc ng dn trong Window.

V d: C:\book; C:\Java; D:\Anh\ABC; A:\Docs l danh sch cc ng dn trong


Window.
File(String pathName)
Gn ng dn c tn pathName cho i tng ca lp File. pathName c
th l ng dn tuyt i (c c tn a, tn ca tt c cc mc ln lt
theo cy th mc) hoc ng dn tng i (bt u t th mc hin thi).
V d:
File ch1 = new File(File.separator + book + File.separator + chuong1);
File(File direct, String filename)
Gn tp c tn filename th mc direct cho i tng ca lp File. Nu
direct l null th filename c x l th mc hin thi, ngc li tn ng
dn s l i tng direct ghp vi separator v filename.
V d:
File mucNhap = new File(book + File.separator + duThao);
File ch2 = new File(mucNhap, chuong1);
Lp File c th s dng truy vn vo cc h thng tp bit c cc thng
tin v tp v cc th mc.
Lp File cung cp cc hm nhn c cc biu din ph thuc vo mi trng
ca ng dn v cc thnh phn ca ng dn.
String getName()
Hm getName() cho li tn ca tp trong th mc ch nh. V d, tn ca
C:\java\bin\javac l javac.
String getPath()
Hm getPath() cho li tn ca ng dn (tuyt i hoc tng i) cha
tp ch nh.
String getAbsolutePath()
Hm getAbsolutePath() cho li tn ca ng dn tuyt i cha tp ch
nh.
long lastModified()

Hm ny cho li thi gian dng s long ca ln sa i tp ln cui cng.


long length()
Hm ny cho li kch thc ca tp tnh theo byte.
boolean equals(Object obj)
Hm ny so snh tn cc ng dn ca cc i tng tp, cho kt qu true
nu chng ng nht vi nhau.
boolean exists()
boolean isFile()
Hai hm ny cho kt qu true nu tp tn ti trn ng dn hin thi.
boolean isDirectory()
Hm ny cho kt qu true nu th mc tn ti trn a hin thi.
boolean createNewFile() throws IOException
Mt tp mi l rng c to ra th mc hin thi ch khi tp ny cha
c.
boolean mkdir()
boolean mkdirs()
To ra cc ng dn c xc nh trong i tng ca File.
boolean renameTo(File dest)
Hm ny i tn tp hin thi thnh dest.
String[] list()
Hm ny hin th danh sch cc tp th mc hin thi.
boolean delete()
Hm ny xo tp hin thi.
V d 8.1 Vit chng trnh c v hin th cc tp trong mt th mc.
import java.io.*;
public class DirectoryLister{
public static void main(String args[]){
File entry;
if (args.length==0){

System.err.println("Hay cho biet ten duong dan?");


return;
}
entry = new File(args[0]);// To ra i tng ca File ly tn t agrs[0]
listDirectory(entry); // Hin th cc mc trong danh mc ch nh
}
public static void listDirectory(File entry) {
try {
if(!entry.exists()) {
System.out.println(entry.getName() +"not found.");
return;
}
if (entry.isFile()){
// Nu i s ca chng trnh l mt tp th hin th tp
System.out.println(entry.getCanonicalPath());
} else if(entry.isDirectory()){
// Nu i s ca chng trnh l mt danh mc th c ra
(list())
String[] fileName = entry.list();
if (fileName ==null)return;
for (int i = 0; i<fileName.length; i++){
// To ra i tng ca File x l tng mc
File item = new File(entry.getPath(), fileName[i]);
// Gi qui hm listDirectory() hin th tng tp.
listDirectory(item);
}
}
}catch(IOException e){System.out.println("Error:" +e);
}

}
}
Dch xong c th chy trong mi trng DOS:
java DirectoryLister c:\users\lan
Tt c cc tp trong danh mc c:\users\lan s c hin ln.

Chng 6
LP TRNH HO

Mt kh nng ca Java l cho php ta xy dng cc ng dng c giao din


ho hay cn gi l GUI (Grapthical User Interface). Khi Java c pht hnh,
cc thnh phn ho c tp trung vo th vin mang tn Abstract Window
Toolkit (AWT). i vi mi h nn, thnh phn AWT s c nh x sang mt
thnh phn nn c th, bng cch s dng trc tip m native ca h nn, chnh v
vy n ph thuc rt nhiu vo h nn v n cn gy li trn mt s h nn. Vi
bn pht hnh Java 2, cc thnh phn giao din c thay bng tp hp cc thnh
phn linh hot, a nng, mnh m, c lp vi h nn thuc th vin Swing. Phn
ln cc thnh phn trong th vin Swing u c t v trc tip trn canvas
bng m lnh ca Java, ngoi tr cc thnh phn l lp con ca lp
java.awt.Window hoc Java.awt.Panel vn phi c v bng GUI trn nn c th.
Thnh phn Swing t ph thuc vo h nn hn do vy t gp li hn v c bit
n s dng t ti nguyn ca h thng hn cc thnh phn trong th vin awt. Mc
d cc thnh phn awt vn c h tr trong Java 2 nhng, tuy nhin Sun khuyn
bn nn s dng cc thnh phn Swing thay cho cc thnh phn awt, tuy nhin cc
thnh phn trong th vin Swing khng th thay tt c cc thnh phn trong th
vin awt. Chng ch thay th mt phn ca awt nh: Button, Panel, TextFeild, v.v.
Cn cc lp tr gip khc trong awt nh : Graphics, Color, Font, FontMetrics, v.v.
vn khng thay i. Bn cnh cc thnh phn Swing cn s dng m hnh s l
s kin ca awt.
I. Gii thiu v h thng ho ca Java
1. Gii thiu chung
Thit k API cho lp trnh ho ca Java l mt v d hon ho v cch dng

lp, s k tha v giao din. API cho lp trnh ho bao gm mt tp rt nhiu


lp nhm tr gip xy dng cc thnh phn giao din khc nhau nh: ca s,nt
n, vn bn, menu, hp kim, v.v. Mi quan h k tha gia cc thnh phn ny
c m t trong hnh sau:
1 Componient y l lp (tru tng) cha ca mi lp giao din ngi dng.
Lp ny cung cp cc thuc tnh, hnh vi c bn nht ca tt c cc thnh
phn giao din.
2 Container L mt vt cha dng ghp nhm cc thnh phn giao din
khc. Mi vt cha c mt lp qun l hin th, lp qun l hin th c
trch nhim b tr cch thc hin th cc thnh phn bn trong. Hai vt cha
hay c s dng nht la JFrame v JPanel.
3 Jcomponient L lp cha ca mi thnh phn Swing ligth weight, c v
trc tip ln canvas bng m lnh Java.
4 Window c s dng to ra mt ca s, Thng thng ta hay s dng
hai lp con ca n l JFrame v JDialog.
5 JFrame l ca s khng lng bn trong ca s khc.
6 JDialog l mt ca s c hin th di dng modal.
7 JAplet l lp cha ca mi lp ng dng aplet.
8 JPanel l mt vt cha, lu gi cc thnh phn giao din ngi dng.
9 Graphics l lp tru tng cung cp ng cnh ho v cc i tng
ho nh: ng thng, ng trn, hnh nh
10 Color lp ny biu din mt mu sc.
11 Font lp ny biu th cho mt font ho.
12 FontMetrics l mt lp tru tng dng xc nh cc thuc tnh ca
Font.
Tt c cc thnh phn ho trong th vin Swing c nhm trong gi
javax.swing. a s cc thnh phn trong th vin Swing u c tip u ng l J,
V d mt nt lnh trong th vin Swing c tn l JButton, mt memu c tn l

JMenu.
Tt c nhng lp khc c lit k trong hnh di y

Ch : ng pha trn cc thnh phn giao din swing v awt trong cng mt ng
dng. Chng hn nh ng nn t mt JButton vo mt Panel v ng nn t
Button vo JPanel. Vic lm ny c th gy li.
Mt lp c k tha t lp JComponent c th hin trong hnh sau:

2. Mt s phng thc ca lp Component


Lp Component cung cp cc thuc tnh, phng thc chung cho cc lp
con ca n. Sau y l mt s phng thc ca lp Component :
- Dimension getSize():cho li i tng thuc lp Dimension gm width (chiu
rng), height (chiu cao) xc nh kch thc ca mt thnh phn tnh theo pixel.
- void setSize(int width, int height) v void setSize(Dimension d) t li kch
thc ca thnh phn.
- Point getLocation(): cho li ta (kiu Point) trn cng bn tri (ta gc)
ca thnh phn ang xt.
- void setLocation(int x, int y) v void setLocation(Point p) t li cc ta c
ch nh cho mt thnh phn.
- Rectangle getBounds():cho li ng bin l hnh ch nht Rectangle bao gm

ta gc v chiu di, chiu rng ca hnh ch nht.


- void setBounds(int x, int y) v void setBounds(Rectangle r):t li ng bin
cho mt thnh phn.
- void setForeground(Color c):c s dng t mu v cho thnh phn ha
- void setBackground(Color c):t mu nn cho thnh phn ha. Cc tham s
ca hai hm ny l i tng ca lp Color s c gii thiu phn sau.
- Font getFont(): c s dng bit c font ca cc ch ang x l trong
thnh phn ha.
- void setFont(Font f):t li font ch cho mt thnh phn.
- void setEnabled(boolean b):Nu i s b ca hm getEnabled() l true th thnh
phn ang xt hot ng bnh thng, ngha l c kh nng kch hot (enable), c
th tr li cc yu cu ca ngi s dng v sinh ra cc s kin nh mong mun.
Ngc li, nu l false th thnh phn tng ng s khng kch hot c, ngha l
khng th tr li c cc yu cu ca ngi s dng.
- Lu : Tt c cc thnh phn giao din khi khi to u c kch hot
- void setVisible(boolean b):Mt thnh phn ha c th c hin th ln mn
hnh (nhn thy c) hoc b che giu ty thuc vo i s ca hm setVisible()
l true hay false.

3. Lp Container
Lp Container l lp con ca lp tru tng Component. Cc lp cha (lp
con ca Container) cung cp tt c cc chc nng xy dng cc giao din
ha ng dng, trong c phng thc add() c np chng dng b sung
mt thnh phn vo vt cha v phng thc remove() cng c np chng
g b mt thnh phn ra khi vt cha.
4. To ra Frame
Lp JFrame l lp con ca lp Frame (Frame l lp con ca lp Window)

c s dng to ra nhng ca s cho cc giao din ng dng GUI.


Kch bn chung to ra mt ca s l:
1. To ra mt frame c tiu g , v d My Frame :
JFrame myWindow= new JFrame(My Frame);
2. Xy dng mt cu trc phn cp cc thnh phn bng cch s dng hm
myWindow.getContentPane().add() b sung thm JPanel hoc nhng
thnh phn giao din khc vo Frame:
V d:

myWindow.getContentPane().add(new JButton(OK));// a vo
mt nt (JButton) c tn OK vo frame

3. t li kch thc cho frame s dng hm setSize():


myWindow.setSize(200, 300);// t li khung frame l 200 ( 300
4. Gi khung frame li bng hm pack():
myWindow.pack();
5. Cho hin frame:
myWindow.setVisible(true);
II. Trnh qun l hin th trong Java
Khi thit k giao din ha cho mt ng dng, chng ta phi quan tm
n kch thc v cch b tr (layout) cc thnh phn giao din nh: JButton,
JCheckbox, JTextField, v.v. sao cho tin li nht i vi ngi s dng. Java c
cc lp m nhim nhng cng vic trn v qun l cc thnh phn giao din GUI
bn trong cc vt cha.
Bng sau cung cp bn lp qun l layout (cch b tr v sp xp) cc thnh phn
GUI.

Tn lp

M t

FlowLayout

Xp cc thnh phn giao din trc tin theo hng t tri qua phi,
sau theo ct t trn xung di. Cch sp xp ny l mc nh
i vi Panel, JPanel ,Applet v JApplet.

GridLayout

Cc thnh phn giao din c sp xp trong cc li hnh ch


nht ln lt theo hng t tri qua phi v theo ct t trn xung
di trong mt phn t cha. Mi thnh phn giao din cha trong
mt .

BorderLayout

Cc thnh phn giao din (t hn 5) c t vo cc v tr theo cc


hng: north (bc), south (nam), west (ty), east (ng) v center
(trung tm)). Cch sp xp ny l mc nh i vi lp Window,
Frame, Jframe, Dialog v JDialog.

GridBagLayout Cho php t cc thnh phn giao din vo li hnh ch nht,


nhng mt thnh phn c th chim nhiu nhiu hn mt .
null

Cc thnh phn bn trong vt cha khng c sp li khi kch


thc ca vt cha thay i.

Cc phng php thit t layout


ly v layout hay t li layout cho vt cha, chng ta c th s dng hai
phng thc ca lp Container:
LayoutManager getLayout();
void setLayout(LayoutManager mgr);
Cc thnh phn giao din sau khi c to ra th phi c a vo mt phn
t cha no . Hm add() ca lp Container c np chng thc hin nhim
v a cc thnh phn vo phn t cha.
Component add(Component comp)
Component add(Component comp, int index)

Cmponent add(Component comp, Object constraints)


Cmponent add(Component comp, Object constraints, int index)
Trong , i s index c s dng ch ra v tr ca cn t thnh phn giao
din comp vo. i s constraints xc nh cc hng a comp vo phn t
cha.
Ngc li, khi cn loi ra khi phn t cha mt thnh phn giao din th s dng
cc hm sau:
void remove(int index)
void remove(Component comp)
void removeAll()

1. Lp FlowLayout
Lp FlowLayout cung cp cc hm to lp sp hng cc thnh phn giao din:
FlowLayout()
FlowLayout(int aligment)
FlowLayout(int aligment, int horizongap, int verticalgap)
public static final int LEFT
public static final int CENTER
public static final int RIGHT
i s aligment xc nh cch sp theo hng: t tri, phi hay trung tm,
horizongap v verticalgap l khong cch tnh theo pixel gia cc hng
cc ct. Trng hp mc nh th khong cch gia cc hng, ct l 5 pixel.

2. Lp GridLayout
Lp GridLayout cung cp cc hm to lp sp hng cc thnh phn giao din:
GridLayout()
GridLayout(int rows, int columns)
GridLayout(int rows, int columns, int hoiongap, int verticalgap)

To ra mt li hnh ch nht c rows ( columns c khong cch gia cc


hng cc ct l horizongap, verticalgap. Mt trong hai i s rows hoc
columns c th l 0, nhng khng th c hai, GridLayout(1,0) l to ra li
c mt hng.

3.Lp BorderLayout
Lp BorderLayout cho php t mt thnh phn giao din vo mt trong bn
hng: bc (NORTH), nam (SOUTH), ng (EAST), ty (WEST) v gia
(CENTER).
BorderLayout()
BorderLayout(int horizongap, int verticalgap)
To ra mt layout mc nh hoc c khong cch gia cc thnh phn (tnh
bng pixel) l horizongap theo hng v verticalgap theo ct.
Component add(Component comp)
void add(Component comp, Object constraint)
public static final String NORTH
public static final String SOUTH
public static final String EAST
public static final String WEST
public static final String CENTER
Trng hp mc nh l CENTER, ngc li, c th ch nh hng t
cc thnh phn comp vo phn t cha theo constraint l mt trong cc
hng trn.

III. X l s kin trong Java


Cc ng dng vi GUI thng c hng dn bi cc s kin (event).
Vic nhn mt nt, m, ng cc Window hay g cc k t t bn phm, v.v. u

to ra cc s kin (event) v c gi ti cho chng trnh ng dng. Trong Java


cc s kin c th hin bng cc i tng. Lp c s nht, lp cha ca tt c
cc lp con ca cc s kin l lp java.util.EventObject.

Hnh H7-20 Cc lp x l cc s kin


Cc lp con ca AWTEvent c chia thnh hai nhm:
1. Cc lp m t v ng ngha ca cc s kin,
2. Cc lp s kin mc thp.
1. ngha ca cc lp
a. ActionEvent
S kin ny c pht sinh bi nhng hot thc hin trn cc thnh phn ca

GUI. Cc thnh phn gy ra cc s kin hnh ng bao gm:


1 JButton - khi mt nt button c khch hot,
2 JList - khi mt mc trong danh sch c kch hot p,
3 JmenuItem, JcheckBoxMenu, JradioMenu - khi mt mc trong thc n
c chn,
4 JTextField - khi g phm ENTER trong trng vn bn (text).
b. AdjustmentEvent
S kin ny xy ra khi ta iu chnh (adjustment) gi tr thanh cun (JScollBar)
1 Scrollbar - khi thc hin mt ln cn chnh trong thanh trt Scrollbar.
Lp ny c phng thc int getValue(): cho li gi tr hin thi c xc nh bi
ln cn chnh sau cng.
c. ItemEvent
Cc thnh phn ca GUI gy ra cc s kin v cc mc gm c:
1 JCheckbox - khi trng thi ca hp kim tra Checkbox thay i.
2 CheckboxMenuItem - khi trng thi ca hp kim tra Checkbox ng vi
mc ca thc n thay i.
3 JRadioButton- khi trng thi ca hp chn (Option) thay i.
4 JList - khi mt mc trong danh sch c chn hoc b loi b chn.
5 JCompoBox - khi mt mc trong danh sch c chn hoc b loi b
chn.
Lp ItemEvent c phng thc Object getItem(): Cho li i tng c chn
hay va b b chn.
d. TextEvent
Cc thnh phn ca GUI gy ra cc s kin v text gm c:
1 TextArea - khi kt thc bng nhn nt ENTER,
2 TextField - khi kt thc bng nhn nt ENTER.

e. ComponentEvent
S kin ny xut hin khi mt thnh phn b n i/hin ra hoc thay thay i li
kch thc. Lp ComponentEvent c phng thc:
Component getComponent()
Cho li i tng tham chiu kiu Component.
f. ContainerEvent
S kin ny xut hin khi mt thnh phn c b sung hay b loi b khi
vt cha (Container).
g. FocusEvent
S kin loi ny xut hin khi mt thnh phn nhn hoc mt focus.
h. KeyEvent
Lp KeyEvent l lp con ca lp tru tng InputEvent c s dng
x l cc s kin lin quan n cc phm ca bn phm. Lp ny c cc phng
thc:
int getKeyCode()
- i vi cc s kin KEY_PRESSED hoc KEY_RELEASED, hm ny c s
dng nhn li gi tr nguyn tng ng vi m ca phm trn bn phm.
char getKeyChar()
- i vi cc s kin KEY_PRESSED, hm ny c s dng nhn li gi tr
nguyn, m Unicode tng ng vi k t ca bn phm.
i. MouseEvent
Lp MouseEvent l lp con ca lp tru tng InputEvent c s dng x
l cc tn hiu ca chut. Lp ny c cc phng thc:
int getX()
int getY()
Point getPoint()

Cc hm ny c s dng nhn li ta x, y ca v tr lin quan n


s kin do chut gy ra.
void translatePoint(int dx, int dy)
Hm translate() c s dng chuyn ta ca s kin do chut gy
ra n (dx, dy).
int getClickCount()
Hm getClickCount() m s ln kch chut.
j. PaintEvent
S kin ny xut hin khi mt thnh phn c v li, thc t s kin ny
xy ra khi phng thc paint()/ update() c gi n.
k. WindowEvent
S kin loi ny xut hin khi thao tc vi cc Window, chng hn nh:
ng, phng to, thu nh.. mt ca s. Lp ny c phng thc:
Window getWindow()
Hm ny cho li i tng ca lp Window ng vi s kin lin quan n
Window xy ra.

Kiu s kin

Ngun gy ra s kin

Phng thc ang k, g b Giao


i tng lng nghe

Listener

din
lng

nghe tng ng
AcitionEvent

JButton
JList
TexField

AdjustmentEvent

ItemEvent

JScrollbar

JCheckbox

addComponentlistener

AcitionListener

removeActiontListener
addAdjustmentListener

AdjustmentListe

removeAdjustmentListener

ner

addItemListener

ItemListener

JCheckboxMenuItem

removeItemListener

JRadioButton
JList
JCompoBox

TextEvent

JTextArea

addTexListener

JTexField

removeTextListener

TextListener

JTextPane
JEditorPane
ComponentEvent

Component

addComponentListener
removeComponentListener

ContainerEvent

FocusEvent

Container

Component

ComponentListe
ner

addContainerListener

ContainerListen

removeContainerListener

er

addFocusListener

FocusListener

removeFocusListener
KeyEvent

Component

addkeyListener

KeyListener

removeKeyListener
MouseEvent

Component

addMouseListener

MouseMotionLi

remoMouseListener

stener

addMouseMotionListener
remoMouseMotionListener
WindowEvent

Window

addWindowListener
removeWindowListener

WindowListener

3. Mt s lp iu hp
Giao din Listener lng nghe

Lp iu hp tng ng

AcitionListener

Khng c lp iu hp tng ng

AdjustmentListener

AdjustmentAdapter

ItemListener

Khng c lp iu hp tng ng

TextListener

Khng c lp iu hp tng ng

ComponentListener

ComponentAdapter

ContainerListener

ContainerAdapter

FocusListener

FocusAdapter

KeyListener

KeyAdapter

MouseMotionListener

MouseMotionAdapter

WindowListener

WindowAdapter

You might also like