Professional Documents
Culture Documents
Bai Giang - LTM PDF
Bai Giang - LTM PDF
LI NI U
Ngy nay, hu nh vic vit mt ng dng chy trn my n cc b khng cn c a
chung v thch hp na. Cc chng trnh v ng dng hin i phi tch hp v triu gi ln
nhau trn mng Intranet (mng cc b), mng Internet (mng ton cu) v ngn ng lp trnh
Java l mt trong nhng la chn tt nht lm vic ny. Java l mt ngn ng lp trnh khng
n gin, ngoi s ni ting v bn thn ngn ng, nn tng Java cn hng n cc ng dng
mng nh: giao tip trn mng theo m hnh khch/ch (client/server) So vi lp trnh thng
thng, lp trnh mng i hi ngi lp trnh nhng hiu bit v k nng chuyn su hn to
giao tip v trao i d liu gia cc my tnh vi nhau.
gip sinh vin chuyn ngnh CNTT trong Nh trng c th tip cn c vi nhng k
thut mi ny, chng ti mnh dn son tho cun Bi ging Lp trnh mng a vo
ging dy cho sinh vin CNTT hc nm th 3 trong Nh trng. Cun bi ging ny c son
tho da trn nn tng cc sinh vin CNTT sau 2 nm hc u trong trng c trang b
y cc kin thc v Ngn ng lp trnh hng i tng, Mng my tnh, Thit k Web. y
l mt mn hc vi c th l kin thc lun i mi v cp nht, do yu cu vi mn hc ny
l sinh vin phi t c thm ti liu, gio vin ch l ngi hng dn nhng vn c bn
nht cho sinh vin.
Lp trnh mng l mn hc mi c a vo ging dy, nn trong qu trnh son tho bi
ging khng trnh khi b ng v thiu st. Chng ti rt mong c s gip , ng gp
kin ca cc ng nghip v c gi quan tm ln ti bn sau cun sch c hon thin hn.
Mi kin ng gp c th gi v theo a ch email: qtmcn1@yahoo.com.
Chng ti xin chn thnh cm n!
H Ni 12/2005
Cc tc gi
Trang 1
Bi ging Lp trnh Mng
MC LC
LI NI U ......................................................................................................................................................1
MC LC.............................................................................................................................................................2
Trang 2
Bi ging Lp trnh Mng
X.1. Cu trc r nhnh .......................................................................................................................................35
X.1.1. Cu trc iu kin r nhnh if.............................................................................................................35
X.1.2. Cu trc iu kin r nhnh phc : switch ..........................................................................................36
X.2. Cu trc lp ................................................................................................................................................38
X.2.1. Vng lp for ........................................................................................................................................38
X.2.2. Vng lp while v do: .........................................................................................................................39
X.3. Ngoi l v cu lnh nm bt ngoi l .......................................................................................................41
CHNG 3: APPLETS ..................................................................................................................................43
I. i cng v HTML............................................................................................................................43
II. Tng quan v applet........................................................................................................................43
II.1. V d v Applet ..........................................................................................................................................43
II.2. Vng i ca mt Applet ...........................................................................................................................44
II.2.1. Np mt Applet...................................................................................................................................44
II.2.2. Ri khi v quay tr v trang web cha applet...................................................................................45
II.2.3. Np li Applet (Reloading the Applet)................................................................................................45
II.2.4. Thot khi trnh duyt.........................................................................................................................45
II.2.5. Tm tt ................................................................................................................................................45
II.3. Cc phng thc c bn.............................................................................................................................46
II.3.1. init() ....................................................................................................................................................46
II.3.2. start() ...................................................................................................................................................46
II.3.3. stop() ...................................................................................................................................................46
II.3.4. destroy() ..............................................................................................................................................46
II.4. Cc phng thc v v nm bt s kin.....................................................................................................47
II.5. Cc phng thc cho lp trnh giao din ngi dng ................................................................................47
II.5.1. Cc thnh phn UI xy dng sn.........................................................................................................47
II.5.2. Cc phng thc s dng cc thnh phn UI trong cc Applet......................................................48
II.5.3. Thm mt Text Field khng edit c vo applet Simple ..............................................................48
II.6. Gii hn ca Applet ...................................................................................................................................49
II.6.1. Gii hn v bo mt ............................................................................................................................49
II.6.2. Cc kh nng ca Applet.....................................................................................................................50
II.7. Test mt applet...........................................................................................................................................50
III. Cc tnh nng cao cp ca Applet API...........................................................................................51
III.1. Tm kim v np cc file d liu...........................................................................................................52
III.2. Hin th chui tnh trng ngn ..............................................................................................................52
III.3. Hin th ti liu trong trnh duyt..........................................................................................................53
III.4. Gi thng ip ti cc applet khc .......................................................................................................54
III.5. Tm mt applet bng tn: s dng phng thc getApplet...................................................................55
III.6. Tm tt c cc applet trn mt trang: s dng phng thc getApplets................................................59
III.7. an xen vo cc trang Web ..................................................................................................................60
III.7.1. Cc thuc tnh (Attributes).................................................................................................................61
III.7.2. Cc thng s ca applet .....................................................................................................................61
CHNG 4: CC GI & GIAO DIN ..........................................................................................................63
I. Gii thiu.............................................................................................................................................63
II. Cc giao din..................................................................................................................................63
II.1.Cc bc to mt giao din .........................................................................................................................63
II.2.Hin thc giao din...........................................................................................................................................64
III. Cc gi............................................................................................................................................66
III.1.To mt gi .....................................................................................................................................................68
III.2.Thit lp ng dn cho lp (classpath)..........................................................................................................70
IV. Gi v iu khin truy xut.............................................................................................................72
IV.1. Gi java.lang ..................................................................................................................................................73
IV.1.1.Lp String (lp chui) ............................................................................................................................74
IV.1.2.Chui mc nh (String pool)..................................................................................................................75
IV.1.3.Cc phng thc ca lp String..............................................................................................................76
IV.1.4.Lp StringBuffer.....................................................................................................................................78
IV.1.5.Cc phng thc lp StringBuffer..........................................................................................................80
IV.1.5.Lp java.lang.Math.................................................................................................................................82
IV.1.6.Lp Runtime (Thi gian thc hin chng trnh)...................................................................................84
IV.1.7.Lp System .............................................................................................................................................85
IV.1.8.Lp Class ................................................................................................................................................87
IV.1.9.Lp Object ..............................................................................................................................................88
IV.2. Gi java.util....................................................................................................................................................89
IV.2.1.Lp Hashtable (bng bm)......................................................................................................................90
IV.2.2.Lp random.............................................................................................................................................93
IV.2.3.Lp Vector..............................................................................................................................................94
IV.2.4.Lp StringTokenizer ...............................................................................................................................97
Trang 3
Bi ging Lp trnh Mng
PHN 3: LP TRNH SOCKET ............................................................................................................102
CHNG 1: LP TRNH TCP SOCKET ...........................................................................................................102
I. Xy dng chng trnh EchoServer ..................................................................................................102
II. Xy dng chng trnh EchoClient ..............................................................................................103
CHNG 2: LP TRNH UDP SOCKET...........................................................................................................105
I. Xy dng chng trnh ExchangeRateServer ...................................................................................105
II. Xy dng chng trnh ExchangeRateTable ................................................................................106
PHN 4: LP TRNH TRN INTERNET ......................................................................................109
CHNG 1: JSP V CC KHI NIM M U ................................................................................................110
I. Cc c ch hot ng ca trang JSP ................................................................................................110
II. Xy dng trang JSP ......................................................................................................................110
CHNG 2: CC C PHP C BN CA JSP ................................................................................................112
I. Cc i tng mc nh ca JSP ......................................................................................................112
II. Cc th lnh JSP...........................................................................................................................112
II.1. Th bc m <% %>..................................................................................................................................112
II.2. Th hin th kt xut <%= %> .................................................................................................................113
II.3. Th ch dn bin dch trang <%@ page %>.............................................................................................114
II.4. Chn ch thch vo m trang JSP.............................................................................................................114
II.5. Khai bo phng thc v bin hng <%! %> ..........................................................................................116
III. Truy xut c s d liu trong trang JSP.......................................................................................116
TI LIU THAM KHO ...............................................................................................................................119
Trang 4
Bi ging Lp trnh Mng
Tp tin HOSTS
216.32.74.52 www.myyahoo.com
164.71.2.70 www.fujitsu.com
Trang 5
Bi ging Lp trnh Mng
Java.sun.com
Ni chung l theo quy c t phn ring bit nht n phn chung nht. Tuy nhin khng bt
buc l nh vy, ta vn c th t tn theo cch khc, khng nht thit l ch gm 3 hay 4 nhm
(v d: here.is.along.name.address.co.vn l hp l) bi v cui cng th tn vng cng c h
thng DNS chuyn thnh a ch IP m thi.
Giao thc TCP gi tng gi d liu i, ni nhn theo giao thc ny phi c trch nhim
thng bo v kim tra xem d liu n hay cha, c li hay khng c li. Trc khi chuyn
d liu bao gi cng c s kt ni gia my gi v my nhn. Do phi m bo d liu c
truyn chnh xc v lun duy tr kt ni nn s dng giao thc TCP cn chim thm mt s ti
nguyn ca h thng v cch lp trnh cho giao thc ny hi kh (phi thc hin cc bc kim
tra d liu theo yu cu ca TCP). Truyn d liu theo TC thng p dng cho cc dch v nh
truyn tp tin, cc dch v trc tuyn trn Internet i hi tin cy cao
Giao thc UDP ngc li khng ng tin cy lm, khng c s kt ni trc no gia ni gi
v ni nhn, d liu gi i mc nh rng my tnh u nhn lun trng thi sn sng tip
Trang 6
Bi ging Lp trnh Mng
My ch (server) s quy nh cng c s dng cho mi loi dch v. Thng tin gia my
khch (client) v my ch (server) phi s dng cng tng ng nhau th mi trao i c vi
nhau. Tuy nhin, hu ht cc chng trnh dch v ni ting hin nay u c quy nh chun cng
dnh ring cho mnh nh:
HTTP80
Telnet23
Finger79
SMTP25
Trang 7
Bi ging Lp trnh Mng
Trang 8
Bi ging Lp trnh Mng
V d 1-0 AddrLookupApp.java
import java.net
b. Lp Socket
Lp Socket dng to kt ni t pha khch vi my ch thng c khi dng bng cc
phng thc sau:
Trang 9
Bi ging Lp trnh Mng
Trang 10
Bi ging Lp trnh Mng
Trang 11
Bi ging Lp trnh Mng
Nhn gi d liu v.
public void synchronized close ()
ng kt ni.
e. Lp DatagramPackage
Lp ny dng cho mt gi d liu gi i trn mng theo kt ni DatagramSocket. Mt gi c
th cha cc thng tin nh d liu, chiu di gi, cc a ch IP v s cng m t cc gi d
liu c gi i. Di y l mt s phng thc hu dng ca lp DatagramPackage ny:
public DatagramPackage(byte buff[], int len)
Phng thc khi to ra gi c d liu cha trong b m buff[] v chiu di gi d liu l
len.
public DatagramPackage (byte buff[], int len, InetAddress iaddr, int port)
Phng thc khi to ra gi c d liu cha trong b m buff[] cng vi chiu di vng
m mun ly, a ch my ch v s hiu cng.
public InetAddress getAddress()
Tr v a ch cha trong gi d liu.
public byte[] getData()
Tr v d liu tht s cha trong gi.
public int getLength()
Tr v kch thc hay chiu di gi d liu.
public int getPort()
Tr v s hiu cng cha trong gi d liu.
f. Lp URL
URL(Uniform Resource Locator) l a ch nh v ti nguyn trn mng, thng mt mt
URL nh cp bao gm 3 phn: phn nghi thc(protocol), phn a ch hay tn my
ch(host name), v phn ch nh tn tp tin hay ti liu mun ly t my ch v.
Java ng gi tt c nhng c im ny vo mt lp URL. i tng URL c to ra bng
mt trong nhng phng thc khi to sau:
public URL(String protocol, String host, int port, String file) throws
MalformedURLException
Trang 12
Bi ging Lp trnh Mng
String getFile()
Ly v tn tp tin hay ti liu nm trong chui a ch URL c c.
String getHost()
Ly tn my ch(thng l thnh phn thc 2 ca chui URL)
String getPort()
Ly v s hiu cng.
String getProtocol()
Ly v tn giao thc(thng l thnh phn u tin trong chui URL)
String getRef()
Ly v ni dung chui tham kho thm trong chui URL(c t sau du # ca chui)
String line;
Trang 13
Bi ging Lp trnh Mng
System.out.println (line);
}catch (Exception e) {
System.out.println (e) ;
Trang 14
Bi ging Lp trnh Mng
Ban u, Gosling s dng C++ vit phn mm iu khin, hin th s cho thit b nh
VCR (Video Cassette Recorder), PDA (Personal Digital Assistant). Nhng ngay sau , Gosling
pht hin ra rng C++ khng phi l ngn ng thch hp cho cng vic ny. Ngn ng C++
mm do iu khin h thng, nhng n li d gy ra nhng li dn n treo h thng. Mt
cch chi tit hn, C++ xm nhp trc tip n ti nguyn h thng, yu cu ngi lp trnh phi
t mnh qun l cc ti nguyn ny. iu ny to thnh mt ro cn khng cho C++ tr thnh
mt cng c vit cc phn mm c tin cy cao, tnh tng thch ln, c bit trong vic iu
khin cc thit b in t dn dng.
Trang 15
Bi ging Lp trnh Mng
trnh dch Java u tin c a ra vo thng 1 nm 1996, Java c coi l mt chun cng
nghip cho Internet.
II.Java l g?
Java l cng ngh cho php to ra cc phn mm phn tn (distributed software). y l
nhng phn mm t trn my ch (server), c np v qua kt ni mng v thc hin trn my
khch (client).
Nh vy, c th ni Java thay i chc nng ca Internet, cng ging nh Web thay i
cch tip cn vo Internet ca chng ta. Ni cch khc, Java chuyn mng t ch ch n
thun cung cp thng tin v chia s ti nguyn sang ng vai tr h iu hnh. y chnh l nn
mng cho php xy dng cc my tnh mng (Network Computer - NC) ca Oracle, IBM v Sun.
Trang 16
Bi ging Lp trnh Mng
Cng nh cc ngn ng lp trnh khc, Java cn mt trnh bin dch chuyn i m lnh
cho ngi c (m ngun) sang ng dng thc thi c. Cc trnh bin dch thng thng nh
Microsoft Visual C++ cho Windows 95 s bin dch chng trnh sang m lnh thc hin trn
mt loi phn cng nht nh no (trong trng hp ny l m lnh cho Intel x86). Tri li,
trnh bin dch Java li chuyn chng trnh ngun Java thnh cc bytecode. Cc bytecode ny
ch c th chy c trn my o Java (Java Virtual Machine -JVM).
B Java Developers Kit (JDK) do Sun cung cp bao gm mt s chng trnh tin ch cho
php bn bin dch, bt li v to ti liu cho mt ng dng Java. Hin nay trn th trng ang
c rt nhiu mi trng pht trin Java ca hng th ba rt tin li (nh Visual J++, Symantec
Cafe,..), nhng tt c cc chng trnh ny u da trn nn JDK. Cc trnh tin ch ca JDK bao
gm:
javac: B bin dch Java: Lm nhim v chuyn m ngun Java sang bytecode.
java: B thng dch Java: Thc thi cc ng dng Java trc tip t tp tin lp (class).
appletviewer: Mt trnh thng dch Java thc thi cc Java applet t tp tin HTML.
jdb (Java debuger): Cho php bn thc hin tng dng trong chng trnh, t cc im dng
(breakpoint), xem gi tr cc bin.
Qu trnh bin dch Java nh sau: m ngun trong cc tp tin *.java, qua trnh bin dch javac
c chuyn thnh cc bytecode. Bytecode nm trong tp tin *.class, c gi l tp tin lp (bi
mi tp tin cha mt lp ring bit ca Java). Cc ng dng Java c th bao gm nhiu lp khc
nhau.
Trang 17
Bi ging Lp trnh Mng
Khi thc hin chng trnh Java, my o Java s dng trnh np lp (class loader) c cc
bytecode t a hoc kt ni mng. Cc lp c np s phi i qua trnh kim tra lp (class
verifier) chc chn rng chng s khng sinh ra cc li nh hng n h thng khi thc thi.
Qu trnh kim tra ny lm tng thi gian np mt lp, tuy nhin n ch phi thc hin c mt ln
m thi.
Phn thc hin (execution unit) trong my o Java s thc thi cc lnh quy nh trong tng
bytecode. B phn thc thi n gin nht l mt trnh thng dch, chuyn i tng bytecode sang
cc th tc cn lm trn tng h thng. Cch ny rt chm v trnh thng dch lun phi tra ngha
ca bytecode m n thc thi. khc phc nhc im ny, ngi ta a ra trnh bin dch Just-
in-time (JIT): Qu trnh chuyn i t bytecode sang m lnh ring ca tng h thng s c
lm lun mt ln ngay khi np chng trnh, do tng c tc ng k.
Chng trnh vit bng Java c th l ng dng ring bit (stand-alone application), hay l
ng dng k sinh trn Web (applet) hoc ng thi c hai. Applet l chng trnh c nhng
trong trang Web, c c v thc hin bi trnh duyt h tr Java (Java-enabled Web browser).
Khi trnh duyt c ti trang Web ny, applet s c thc thi. Tri li, mt ng dng Java ring
bit c chy bng dng lnh (java Tn-lp-cn-thc-thi Tham-s), khng cn thng qua trnh
duyt Web.
Mt trnh duyt Web h tr Java (Java-enabled browser) c my o Java ring. Hin nay, cc
trnh duyt h tr Java nh vy kh nhiu: Netscape 2.0 tr ln, HotJava, Microsoft Internet
Explorer 3.0 (bn beta 2 tr ln),... Cc trang Web nhng Java applet c cha ng dn kiu
URL ti tp tin lp chnh ca applet . Trnh duyt ch vic khi ng my o Java v cung cp
cho trnh np lp ng dn ny. Ch rng mi lp u a ra tn ca cc lp ph n cn, do
trnh np lp phi np mt s lp ph khc trc khi thc hin chng trnh.
IV.1.An ninh
An ninh l mt vn kh khn hng u m ngi lp trnh mng gp phi: Ngi s dng
lun e ngi hai iu: Th nht, thng tin h gi i trn mng c th b c ln v th hai, h
thng ca h c th b xm nhp v ph hoi. Cu trc an ninh ca Java nhm vo gii quyt
ng thi hai vn trn.
Trang 18
Bi ging Lp trnh Mng
Cu trc an ninh ca Java da vo ba thnh phn: Trnh np lp, trnh kim tra lp v trnh
qun l an ninh (SecurityManager). Chng ta bit rng trnh kim tra lp lm nhim v m
bo chc chn chng trnh Java c bin dch ng n, khi thc hin s khng gy li nh
hng n h thng cng nh khng ng chm n nhng d liu "ring t" trn my khch
hng.
IV.5.Hng i tng
Lp trnh hng i tng (OOP) l phng thc vit cc ng dng d bo tr, d nng cp
v c bit l c th ti s dng cc m lnh. Java l mt ngn ng hng i tng, do n c
Trang 19
Bi ging Lp trnh Mng
y cc c tnh trn. Ngoi ra, th vin lp Java cung cp kh y cho ngi lp trnh
bt u mt d n mi.
Cu trc v cc c tnh trn y ca Java cho thy Java c nhng im mnh v yu ring.
Tuy nhin, chng ta c th tin rng, trong tng lai, Java s dn dn hon thin nhng nhc
im, pht trin v tip tc lm thay i b mt ca Internet cng nh Intranet.
Trang 20
Bi ging Lp trnh Mng
Bi tp
1. Ci t Java 2
2. G cc lnh sau ti du nhc v lit k cc tham s khc nhau ca chng:
javac
java
Trang 21
Bi ging Lp trnh Mng
CHNG 2:
- Hng (literals): Cc gi tr hng c vit mt cch khc nhau ty thuc vo kiu d liu.
V d: phn bit cc k t "123" vi s 123.
I.Ghi ch (Comment)
Cc li ch thch c th c thm vo trong m ngun Java bng hai cch ging nh trong
C++. Cch th nht bt u li ch thch vi du /* v kt thc */ cho php t nhiu dng ch
thch trong cp du trn.
V d:
a = b + c;
/* Here is comment which
extends across two lines
*/
Ni chung bn khng th t cc ch thch trong ch thch
V d:
/* Here is a comment which /* a comment within a comment*/
extends across two line*/
Trang 22
Bi ging Lp trnh Mng
Nhiu dng ch thch c ngha c bit cho tin ch javadoc khi k hiu u tin bn trong
du ch thch l mt du * .
V d:
a = b+ c;
/* * This comment has epecial meaning for the javadoc
unitily.It will be part of documenttation
automaticlly generated By the javadoc program
*/
Cch th hai nh du // v ghi li ch thch sau trn cng mt dng.
V d:
a = b + c;//this comment extends to the end of this line of text
Nhng ch thch ny c th t trong cp du ch thch /* */.
Nh vy, ghi ch nhm gip cho ngi lp trnh d dng nh li qu trnh suy ngh nht l
khi cn b sung, sa cha nng cp chng trnh
Bt u Kt thc Mc ch
Th d:
Dng a = b + c + d + e + f + g;
Cng ging nh a = b + c + d +
e + f + g;
Trang 23
Bi ging Lp trnh Mng
k t xung dng, v u dng (CR/CF hay m ASCII l 13/10). Java bin dch nhn ra cc k t
trn cng nh cc k t trng v khng quan tm n nhng dng vn bn kt thc.
II.2.Khi lnh
Cc cu lnh n c th nhm li thnh cc khi bi vy mt khi lnh c th d dng kim
sot s thc hin ca nhiu cu lnh khc. B lnh ca Java khng gii hn trong cp ngoc nhn
{v }. Bn nhn thy cc khi lnh c dng to thnh nhm cc lnh thuc mt lp:
class Flight {
int altitude;
int heading;
int speed;
float latitude;
float longintude;
//change the flight's heading by angle degree
void turnFlight (int angle){
heading = (heading + angle) % 360 ;
// make sure angle is in the range 0-359 degrees
if (heading<0)
heading = heading + 360 ;
} //end turnFlight
} //end Flight
Nh bn thy cc khi lnh c th t trong cc khi khc
10 ch s : 0..9
Du ni : _
Trang 24
Bi ging Lp trnh Mng
IV.T kha v tn
IV.1.Tn
Cng tng t nh cc ngn ng lp trnh khc nh C, C++, ngn ng lp trnh JAVA cng
quy nh cch t tn nh sau :
IV.2.T kha
T kha l nhng t c ngha xc nh. Thng c s dng khai bo cc kiu d liu,
vit cc ton t v cc cu lnh.
V.Kiu d liu
Mi bin phi c mt kiu d liu. Kiu d liu ca bin xc nh cc gi tr m bin c th
cha ng v cc ton t thao tc trn chng.
Trang 25
Bi ging Lp trnh Mng
V.1.Kiu d liu c bn
Kiu M t ln Min Max
boolean true , false 1 bit
char K t n 16 bits \u0000 \uFFFF
byte Byte-length 8 bits -128 127
short integer 16 bits -32768 32767
int S nguyn ngn 32 bits -2147483648 2147483647
long S nguyn 64 bits -9223372036854775808
S nguyn di 9223372036854775807
float 32 bits +/-3.40282347E+38 +/-1.40239846E-
double S thc 64 bits 45
S thc +/-1.79769313486231570E
+/-4.9065645841246544E-324
V.3.Gi tr mc nh
Mt li hay gp phi khi lp trnh l s dng nhng bin cha c khi to. iu ny
thng gy ra li kh on c bi v n c th nhn bt k gi tr no trong vng nh khi
chng trnh bt u chy. Java trnh c li trn bng cch khi to gi tr mc nh cho
cc bin
Trang 26
Bi ging Lp trnh Mng
Kiu Gi tr mc nh
byte 0
short 0
int 0
long 0L
float 0.0f-
double 0.0d
char null
boolean false
dn xut null
VI.Hng (literal)
Hu ht cc ngn ng u c mt cch khai bo bin l hng s ( l gi tr khng i).
Java khng l ngoi l T kha final ch dn mt bin cc b hoc bin thnh phn khng th
thay i. Mc ch chnh s dng ca bin final nh l biu th mt hng s. Bn c th thch
hng s l tn, v tn c nh ngha trong mt ch nh n trong m ngun ca bn. Nu
sau ny bn phi thay i s trong m ngun ca bn, bn ch cn thay i ti bin final nh
ngha.
C php:
final Type ConstName = Value;
V du:
final int MAX = 10;
Lu : C hai cch khai bo hng trong C v C++ l #define v const u khng dng trong
JAVA.
VII.Bin
Mt chng trnh tham chiu ti gi tr ca bin bng tn bin. Tn bin phi l duy nht
trong cng mt phm vi, c th c nhiu bin cng tn nhng khai bo cc phm vi khc nhau.
Trang 27
Bi ging Lp trnh Mng
Mi bin cn c khia bo trc khi s dng. Vic khai bo c thc hin theo mu sau.
L nhng v tr trong b nh m gi tr c th c lu tr chng c tn v kiu gi tr.
C php:
Type Variable;
hay:
Type Variable = Value;
VII.1.Kiu bin
C th l mt trong ba hnh thc sau :
- Tn ca mt lp.
- Mt mng.
khai bo mt kiu bin mi, ta phi khai bo mt lp mi. Sau cc bin mi c khai
bo l kiu ca lp .
VII.1.1.Bin i tng
Thng dng nh ngha thuc tnh, trng thi cho mt i tng n c th l bin ton
cc ca mt i tng. Khai bo nh sau :
Type Variable;
VII.1.2.Bin lp
Tng t nh bin i tng, nhng gi tr ca n nm trong chnh lp . N nh hng
ton cc n mt lp v tt c cc i tng trong lp. Rt thch hp trao i thng tin gia
cc i tng khc nhau trong cng mt lp hay theo di trng thi ton cc ca mt i tng.
khai bo mt bin l bin lp ta dng t kha static nh sau :
static Type Variable;
VII.1.3.Bin cc b
c khai bo v s dng trong thn phng thc. Bin cc b bt buc phi gn gi tr
trc khi s dng. Khng ging nh cc ngn ng lp trnh khc. JAVA khng c bin ton cc.
Bin i tng hay bin lp c dng truyn thng tin ton cc gia hai hay nhiu i
tng.
Trang 28
Bi ging Lp trnh Mng
VII.1.4.Phm vi ca bin
Ging nh ngn ng COBOL tt c cc bin u l bin ton cc. Bin ton cc l mt bin
c th truy cp bt c t u trong mt chng trnh v do vy m bin ton cc phi l bin c
tn c nht. Do tt c cc bin trong COBOL l ton cc nn mi bin trong chng trnh
COBOL l duy nht. T , trong thc tin vic s dng mt bin n cho nhiu mc ch khc
nhau trong tng phn ca chng trnh. Vic kim sot bin ton cc l mt cng vic kh khn
v lm nhiu chng trnh tr nn kh chu. c bit, mt thay i trong mt phn nh ca m c
th nh hng bt li n hu ht cc phn khc ca chng trnh.
Gii php cho vn rc ri ca bin ton cc l s dng bin cc b, bin ny c thi gian
tn ti gii hn v quan h ch trong phn nh ca m. Bn c th dng hai bin cc b c cng
tn nh danh trong cc phn khc nhau ca chng trnh.
Trang 29
Bi ging Lp trnh Mng
- Chuyn i kiu d liu c bn sang i tng v ngc li: Thng thng ta khng th
chuyn i c nhng trong gi java.lang c sn nhng lp c bit tng ng vi tng kiu
nguyn thy. Nh lp Integer cho kiu int, lp Float cho kiu float... do ta c th to ra cc
i tng tng ng bng cch dng ton t new.
- op1 - op2 Tr
V d:
public class ArithmeticDemo {
public static void main(String[] args) {
//a few numbers
int i = 37;
int j = 42;
double x = 27.475;
Trang 30
Bi ging Lp trnh Mng
double y = 7.22;
System.out.println("Variable values...");
System.out.println(" i = " + i);
System.out.println(" j = " + j);
System.out.println(" x = " + x);
System.out.println(" y = " + y);
//adding numbers
System.out.println("Adding...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));
//subtracting numbers
System.out.println("Subtracting...");
System.out.println(" i - j = " + (i - j));
System.out.println(" x - y = " + (x - y));
//multiplying numbers
System.out.println("Multiplying...");
System.out.println(" i * j = " + (i * j));
System.out.println(" x * y = " + (x * y));
//dividing numbers
System.out.println("Dividing...");
System.out.println(" i / j = " + (i / j));
System.out.println(" x / y = " + (x / y));
//mixing types
System.out.println("Mixing types...");
System.out.println(" j + y = " + (j + y));
System.out.println(" i * x = " + (i * x));
}
}
Kt qu ca chng trnh:
Variable values... y = 7.22
i = 37 Adding...
j = 42 i + j = 79
x = 27.475 x + y = 34.695
Trang 31
Bi ging Lp trnh Mng
Subtracting... i / j = 0
i - j = -5 x / y = 3.8054
x - y = 20.255 Computing the remainder...
i % j = 37
Multiplying... x % y = 5.815
i * j = 1554 Mixing types...
x * y = 198.37 j + y = 49.22
Dividing... i * x = 1016.58
== Bng a == 10;
!= Khng bng a != b
< B hn 5 < 6
> Ln hn 7 > 4
IX.4.Ton t lun l
Cc biu thc m c kt qu tr v l gi tr boolean, c th kt hp li vi nhau bng cc
ton t lun l nh AND ( & hoc &&), OR ( | hoc ||), XOR ( ^), NOT (!)...
Ton t ngha
& V
| Hoc
^ Hoc loi tr
<< Dch tri 1 bit
Trang 2
Bi ging Lp trnh Mng
IX.6.Ton t gn
Ton t gn c dng nh sau:
Variable Operator = Value.
iu ny tng ng vi:
V d : a + = 4; tng ng vi a = a + 4;
Trang 33
Bi ging Lp trnh Mng
V d :
System.out.println(name+ "is a" + color );
Nu c phn t con no khng phi l kiu String th n t ng chuyn sang kiu String.
Trang 34
Bi ging Lp trnh Mng
==, !=
&
^
|
? :
=, +=, -=, *=, /=, %=, ^=
&=, |=, <<=, >>=, >>>=
IX.10.Biu thc
Biu thc l s kt ni cc bin, cc t kha hay cc k hiu tr v mt gi tr ca mt
kiu no . Gi tr ny c th l s, chui, hoc kiu d liu khc. Bn c th hiu rng mt
biu thc l mt ci g dc vit bn phi ca mt lnh gn.
V d: 22, a, "Hello"
s = "Hello";
V d:
b = a = 25;
V d : a <= 10;
Trang 35
Bi ging Lp trnh Mng
else{
Statements2;
}
S khi:
Statement(s)2 Statement(s)1
V d:
public class IfElseDemo {
public static void main(String[] args) {
int testscore = 76;
char grade;
if (testscore >= 90) {
grade = 'A';
} else if (testscore >= 80) {
grade = 'B';
} else if (testscore >= 70) {
grade = 'C';
} else if (testscore >= 60) {
grade = 'D';
} else {
grade = 'F';
}
System.out.println("Grade = " + grade);
}
}
Kt qu chng trnh l:
Grade = C
Expression phi l biu thc logic tr v gi tr kiu boolean ( true hoc false). Tng t
nh C v C++ cc cu lnh iu kin c th lng nhau ty .
Trang 36
Bi ging Lp trnh Mng
break;
...
default:
statement(s)
break;
}
Expression : Biu thc iu kin ph thuc vo kiu d liu c bn (byte, int ...)
S khi:
true
case a case a action(s) break
false
true
case b case b action(s) break
false
.
.
.
true
case z case z action(s) break
false
default action(s)
V d:
public class SwitchDemo {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
Trang 37
Bi ging Lp trnh Mng
case 4:
case 6:
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0))
|| (year % 400 == 0) )
numDays = 29;
else
numDays = 28;
break;
}
System.out.println("Number of Days = " + numDays);
}
}
Kt qu ca chng trnh:
Number of Days = 29
X.2.Cu trc lp
X.2.1.Vng lp for
C php:
for ( initialization; loopContinuationTest; increment ) {
Statements;
}
S khi:
initialization
Statement(s)
true
loopContinuationTest increment
Trang 38
false
Bi ging Lp trnh Mng
V d:
public class ForDemo {
public static void main(String[] args) {
int[] arrayOfInts = { 32, 87, 3, 589, 12,
1076, 2000, 8, 622, 127 };
for (int i = 0; i < arrayOfInts.length; i++) {
System.out.print(arrayOfInts[i] + " ");
}
System.out.println();
}
}
Kt qu chng trnh: 32 87 3 589 12 1076 2000 8 622 127.
C php:
while (Condition){
Statement(s)
}
S khi:
true
Condition statement(s)
flase
V d:
public class WhileDemo {
public static void main(String[] args) {
int i = 0;
Trang 39
Bi ging Lp trnh Mng
char c = copyFromMe.charAt(i);
while (c != 'g') {
copyToMe.append(c);
c = copyFromMe.charAt(++i);
}
System.out.println(copyToMe);
}
}
Java cung cp mt cu trc khc tng t nh cu lnh while.
C php:
do {
Statement(s);
while (Condition);
action(s)
S khi:
true
Condition
flase
V d:
public class DoWhileDemo {
public static void main(String[] args) {
Trang 40
Bi ging Lp trnh Mng
C php:
try {
statement1(s)
} catch (exceptiontype name) {
statement(s)
} catch (exceptiontype name) {
statement2(s)
} finally {
statement3(s)
}
Trang 41
Bi ging Lp trnh Mng
Trang 42
Bi ging Lp trnh Mng
CHNG 3:
APPLETS
I.i cng v HTML
"Ngn ng nh du siu vn bn" (Hypertext Markup Language - HTML) c dng
khi to cc "siu vn bn" trn WEB. N khng phi l mt ngn ng lp trnh phc tp nh
C, C++, Java... Ngn ng HTML ch mt tp hp nhng quy tc ch nh bi nhng TAGS
(Th) v MARK (nh du) trn nhng thnh phn ca ti liu.
II.1. V d v Applet
Sau y l m ngun ca mt applet gi l Simple
import java.applet.Applet;
import java.awt.Graphics;
StringBuffer buffer;
Trang 43
Bi ging Lp trnh Mng
buffer = new StringBuffer();
addItem("initializing... ");
}
II.2.Vng i ca mt Applet
C th s dng v d trn minh ho cho vng i ca mt applet
II.2.1.Np mt Applet
Bn c th thy "initializing... starting..." trn, l kt qu tr v khi mt applet ang
np. Khi mt applet np s xy ra cc vic sau:
Trang 44
Bi ging Lp trnh Mng
Khi ngi dng ri khi trang web cha applet sang mt trang khc, khi phng thc
stop() ca applet s c gi. Khi ngi dng quay v li trang th applet t ng kch
hot li phng thc start(). Qu trnh ny cng xy ra khi ngi dng thay i ca s cha
applet (minaturize, minimize, v close.)
Mt s trnh duyt cho php ngi dng np li applet, ngha l ngi dng thot applet
v np li mt ln na. V mi khi thot khi Applet phng thc stop() s t ng thc hin,
xy ra qu trnh dn rc bng phng thc destroy(). Nh vy, applet gii phng cc ti
nguyn m n dng v applet chnh thc khng cn trong b nh. V khi c np li, qu
trnh np s xy ra ging nh ni trn.
Khi ngi dng thot khi trnh duyt (hay ng dng cha applet) th applet t
ng gi phng thc stop() dn dp ti nguyn h thng trc khi trnh duyt
thot.
II.2.5.Tm tt
N c th t khi to (initialize).
N c th t ng khi ng (start).
N c th t dng (stop) .
S :
Trang 45
Bi ging Lp trnh Mng
Creation Destruction
Initialization
Start/Restart Stop
II.3.1.init()
Dng khi to mt ln, nhng hot ng khng ko di. Phng thc ny thng cha
cc m lnh m ta thng dng trong cc constructor.
II.3.2.start()
Applet sau khi khi to cn lm cng vic g th phi ci t phng thc start(), tr
khi phi tr li trc tip tc ng ca ngi dng. Phng thc ny c th thc hin mt s
vic ca applet hay khi to cc tuyn on.
II.3.3.stop()
a s cc applet khi ci phng thc start() u c ci stop(). Phng thc ny dng
tm ngng cc hot ng ca applet nhng khng gii phng ti nguyn h thng.
II.3.4.destroy()
Phng thc ny thng dng gii phng ti nguyn h thng.
Trang 46
Bi ging Lp trnh Mng
Simple applet nh li phng thc paint override phng thc paint ca applet:
- paint: L phng thc v c bn. Nhiu applet ci t phng thc paint v nhng
trnh by ca n bn trong trnh duyt.
- update: L phng thc m bn c th s dng sau khi thc hin paint tng thm
hiu qu v.
Applet tha hng cc phng thc ny t lp AWT. Applet cn tha hng cc phng
thc v s kin nh nhp chut, r chut,... trong lp Component ca AWT.
Th vin AWT h tr cc thnh phn cho lp trnh giao din (UI components) (Cc lp
dng ci t mi thnh phn c t trong du ngoc n):
Buttons (java.awt.Button)
Checkboxes (java.awt.Checkbox)
Labels (java.awt.Label)
Lists (java.awt.List)
Choices (java.awt.Choice)
Trang 47
Bi ging Lp trnh Mng
remove : Xo mt Component.
Trang 48
Bi ging Lp trnh Mng
void addItem(String newWord) {
//Ni chui vo TextField.
String t = field.getText();
System.out.println(newWord);
field.setText(t + newWord);
repaint();
}
//Phng thc paint khng cn thit,
//khi TextField t ng repaints.
Xem li phng thc init to ra mt text field khng edit c. N thit lp trnh qun l
cch trnh by vo applet lm cho text field c th rng ra c sau t text field vo applet
Sau cng phng thc init gi mt phng thc hp l (phng thc m Applet tha
hng t Component). iu ny lm cho c hiu lc i vi mt hoc nhiu thnh phn thm
vo applet v bo m rng cc thnh phn ny t v ra trn mn hnh.
Sau y l kt qu ca applet:
initializing... starting...
II.6.Gii hn ca Applet
II.6.1.Gii hn v bo mt
Tt c cc trnh duyt c ci t ch bo mt u gi n li trong h thng bo mt. Mc
ny m t ch bo mt m cc trnh duyt hin thi km vo. Tuy nhin vic ci t c ch
bo mt gia cc trnh duyt l khc nhau. Ngoi ra c ch bo mt thng thay i. Th d
nh nu mt trnh duyt c pht trin ch s dng trong mi trng tin cy th c ch bo
mt c th lng lo hn nhng m t y.
Cc trnh duyt hin thi thng gii hn hot ng ca applet khi np cc applet t mng
v nh sau:
Trang 49
Bi ging Lp trnh Mng
Sau y l mt s ci m cc trnh duyt hin hnh v cc applet viewer cho php applet
thc hin:
Khi applet chy trong trnh duyt th c th dng ti liu HTML hin th.
Applet c th gi ti mt phng thc cng cng ca mt applet khc trong cng trang
Web.
Hu ht cc applet ngng thc thi khi ri khi trang web cha n, nhng khng nht
thit nh vy.
II.7.Test mt applet
Mt khi vit vi on m cho applet ca bn, bn s mun chy applet kim tra n.
chy applet trc ht bn phi t applet vo trong mt trang HTML bng cch s dng th
(tag) <APPLET>. Sau nh a ch URL ca trang HTML trong mt trnh duyt c h tr
Java.
y l mt th <APPLET> n gin:
<APPLET CODE=AppletSubclass.class WIDTH=anInt HEIGHT=anInt>
</APPLET>
Trang 50
Bi ging Lp trnh Mng
Th ny cho trnh duyt bit cn np mt applet c tn l AppletSubclass. Hnh sau cho thy
ni t file applet, quan h vi ti liu HTML cha th <APPLET>. Nh hnh v th tr khi
applet c t trong mt gi (package), applet phi t trong cng th mc vi tp HTML
cha th <APPLET>.
To m thanh.
Trang 51
Bi ging Lp trnh Mng
D liu m applet lun cn hoc nhng nhu cu tin cy cn sao lu, thng thng c ch
r ti code base. D liu m ngi dng applet ch r, thng dng cc tham s, thng thng
c ch ti document base.
Trang 52
Bi ging Lp trnh Mng
Khng nn t cc thng tin ct yu vo dng trng thi. Nu nhiu ngi dng cn thng
tin, thay vo ta nn hin th trong vng applet. Nu ch mt it thng tin phc tp m ngi
dng cn th nn xut thng tin ra thit b u ra chun.
V d:
showStatus("MyApplet: Loading image file " + file);
to ra nu cn thit.
"_self": Hin th ti liu trong ca s v frame cha applet.
"_parent": Hin th ti liu trong ca s applet nhng trong frame cha ca frame applet.
V d:
Trang 53
Bi ging Lp trnh Mng
Nhiu trnh duyt i hi cc applet phi cng th mc trn cng mt server (cng code
base)
Java API i hi cc applet phi chy trn cng mt trang, trong cng ca s trnh
duyt.
Trang 54
Bi ging Lp trnh Mng
Ch : Mt vi trnh duyt cho php applet gi cc phng thc ca mt applet khc thm
ch trn cc trang khc trong cng tnh duyt min l cng code base (cng th mc). Phng
thc quan h gia cc applet ny khng c Java API h tr nn nhiu trnh duyt khng cho
php applet gi cc applet khc trn cc trang khc nhau.
phng thc getApplets ca AppletContext). C hai phng thc nu thnh cng s cho
applet gi mt hay nhiu i tng Applet. Mt khi applet gi tm c mt i tng Applet
th n c th gi cc phng thc trn i tng .
Phng thc getApplet tm kim tt c cc applet khc trn trang hin hnh thy mt
trong s cc applet bng mt tn c bit. Nu tm thy, getApplet s tr v mt i tng
Applet.
Di y l hai applet minh ho cho vic tm bng tn. Applet u tin l Sender tm applet
th hai l Rciver, Sender gi mt thng ip ti Reciever bng cch gi cc phng thc ca
Reciever. Reciever p ng li "Received message from sender-name!"
Trang 55
Bi ging Lp trnh Mng
setLayout(gridBag);
Trang 56
Bi ging Lp trnh Mng
c.fill = GridBagConstraints.BOTH; //make this big
c.weightx = 1.0;
c.weighty = 1.0;
gridBag.setConstraints(status, c);
add(status);
myName = getParameter("NAME");
Label senderLabel = new Label("(My name is " + myName + ".)",
Label.CENTER);
c.weightx = 0.0;
c.weighty = 0.0;
gridBag.setConstraints(senderLabel, c);
add(senderLabel);
newline = System.getProperty("line.separator");
}
Trang 57
Bi ging Lp trnh Mng
}
Trang 58
Bi ging Lp trnh Mng
public void paint(Graphics g) {
g.drawRect(0, 0, size().width - 1, size().height - 1);
}
Di y l chng trnh:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Enumeration;
public class GetApplets extends Applet
implements ActionListener {
private TextArea textArea;
private String newline;
public void init() {
Button b = new Button("Click to call getApplets()");
b.addActionListener(this);
setLayout(new BorderLayout());
add("North", b);
newline = System.getProperty("line.separator");
}
Trang 59
Bi ging Lp trnh Mng
while (e.hasMoreElements()) {
Applet applet = (Applet)e.nextElement();
String info = ((Applet)applet).getAppletInfo();
if (info != null) {
textArea.append("- " + info + newline);
} else {
textArea.append("- "
+ applet.getClass().getName()
+ newline);
}
}
textArea.append("________________________"
+ newline + newline);
}
}
Cng nh nhng th khc th <APPLET> cng bao gm nhiu phn. Tuy nhin ch c mt
vi phn l cn thit. Mt s Applets nht thit phi c cc thnh phn trong trong th; mt
s khc th ch cn nhng phn ti thiu.
Trang 60
Bi ging Lp trnh Mng
Thuc tnh M t
CODE Xc nh tn tp tin applet
HEIGHT Xc nh chiu cao ca applet theo pixel
WIDTH Xc nh chiu rng ca applet theo pixel
Thuc tnh M t
ALIGN Xc nh v tr t applet trn trang vn bn bao quanh n.
ALT Xc nh vn bn thay th
CODEBASE Xc nh URL c s cho applet, mc nh l coi nh applet nm cng th mc
vi trang Web.
HSPACE Xc nh s du cch theo chiu ngang bao quanh applet
NAME Xc nh tn ca applet. Dng lin lc vi cc applet khc trong cng trang
Trang 61
Bi ging Lp trnh Mng
Bi tp
1. Vit applet nh sau:
Khi ngi s dng nhp vo vn bn v click chut vo nt 'Check identifier' applet phi
kim tra xem t c trong vn bn c phi l mt t kho c trong java khng.
Ghi ch: S dng cc font ch khc nhau cho vn bn, nt lnh v nhn.
2. Vit applet nh sau:
Ngi s dng c php nhp vo gi tr mu trong cc tng ng. Khi click nt 'Draw'
cc biu dng ng, bar, pie c hin ra.
Trang 62
Bi ging Lp trnh Mng
CHNG 4:
I.Gii thiu
Giao din l mt trong nhng khi nim quan trng nht ca ngn ng Java. N cho php
mt lp c nhiu lp cha (superclass). Cc chng trnh Java c th tha k ch mt lp ti mt
thi im, nhng c th hin thc hng lot giao din. Giao din c s dng thay th mt
lp tru tng, khng c mt s k tha m thc thi no. Giao din tng t nh cc lp tru
tng. S khc nhau ch mt lp tru tng c th c nhng hnh vi c th, nhng mt giao
din th khng th c mt phng thc c th no c hnh vi ca ca ring mnh. Cc giao din
cn c hin thc. Mt lp tru tng c th c tha k, nhng khng th to ra c th
hin (i tng).
Trang 63
Bi ging Lp trnh Mng
javac myinterface.java
Mt giao din c hin thc vi t kho implement. Trong trng hp trn, giao din
cho php ng dng mi quan h is a . V d:
Cc giao din khng th tha k (extends) cc lp, nhng chng c th tha k cc giao
din khc. Nu khi bn hin thc mt giao din m tha k cc giao din khc, bn nh ngha
(override) cc phng thc trong giao din mi giao din tha k. Trong v d trn, cc
phng thc ch c khai bo, m khng c nh ngha. Cc phng thc phi c nh
Trang 64
Bi ging Lp trnh Mng
ngha trong mt lp m lp hin thc giao din ny. Ni mt cch khc, bn cn ch ra hnh
vi ca phng thc. Tt c cc phng thc trong cc giao din phi l kiu public. Bn khng
c s dng cc b ng (modifers) chun khc nh protected, private,..khi khai bo cc
phng thc trong giao din.
import java.io.*;
System.out.println( +(x+y));
System.out.println( +(x*y*z));
d.add(10,20);
d.volume(10,10,10);
Khi bn nh ngha mt giao din mi, c ngha l bn ang nh ngha mt kiu d liu
tham chiu mi. Bn c th s dng cc tn giao din bt c ni u nh bt k kiu d liu
Trang 65
Bi ging Lp trnh Mng
III.Cc gi
package mypackage;
Trang 66
Bi ging Lp trnh Mng
Cc pht biu khc c th xut hin sau khai bo gi l cc cu lnh nhp, sau chng bn
c th bt u nh ngha lp ca bn.
Hp l
package mypackage;
import java.io.*;
Khng hp l
import java.io.*;
package mypackage;
import java.mypackage.calculate
import java.mypackage.*;
Gi M t
Trang 67
Bi ging Lp trnh Mng
III.1.To mt gi
Khai bo gi bng cch s dng c php thch hp. on m phi bt u vi khai bo gi.
iu ny ch ra rng lp c nh ngha trong tp tin l mt phn ca gi xc nh.
package mypackage;
import java.util.*;
Trang 68
Bi ging Lp trnh Mng
import java.util.*;
int var;
Calculate(int n)
var = n;
//
Trang 69
Bi ging Lp trnh Mng
nhp mt lp ta dng:
import java.mypackage.Calculate;
import java.mypackage.*;
import java.io.*;
import mypackage.Calculate;
class PackageDemo{
Chng trnh dch v chng trnh thng dch tm kim cc lp trong th mc hin
hnh, v tp tin nn (zip) cha cc lp ca JDK. iu ny c ngha cc tp tin nn cha cc lp
ca JDK v th mc hinh hnh cha m ngun t ng c t vo classpath. Tuy nhin,
trong mt vi trng hp, bn cn phi t thit lp classpath.
Trang 70
Bi ging Lp trnh Mng
V d ca mt gi
package mypackage;
return (height*width*depth);
return (x+y);
return (x/y);
Nhp lp c s dng.
Trang 71
Bi ging Lp trnh Mng
import java.io.*;
import mypackage.calculate;
class PackageDemo{
Trang 72
Bi ging Lp trnh Mng
Subclass)
Mc nh, mi chng trnh java u nhp gi java.lang. V th, khng cn lnh nhp
gi java.lang ny trong chng trnh.
Trang 73
Bi ging Lp trnh Mng
Chng trnh sau y minh ha cch s dng lp wrapper cho kiu d liu int
class CmdArg
int sum = 0;
for(int i = 0;i<args.length;i++)
sum+= Integer.parseInt(args[i]);
System.out.println(Tng l: +sum);
Trang 74
Bi ging Lp trnh Mng
StrFirst = Charlie;
StrSecond = Chaplin;
StrFinal = strFirst.concat(strSecond);
Mt chng trnh Java c th cha nhiu chui. String Pool i din cho tt c cc
ch c to trong chng trnh. Mi khi mt chui c to, String Pool tm kim trong n,
nu tm thy nu chui tn ti th khng to th hin m ch gn th tm thy cho chui mi.
Vic ny tit kim rt nhiu khng gian b nh. V d:
Trang 75
Bi ging Lp trnh Mng
u nhm ch vo chui ging ht nhau trong String Pool. Hnh nh sau minh ho khi nim
ca String Pool.
1 Sunday
day 2 Monday
3 Hello
4 Aptech
Weekday
N World
charAt( )
V d:
char ch = name.charAt(5);
Bin ch cha gi tr L, t v tr cc s bt u t 0.
startsWith( )
endsWith( )
Trang 76
Bi ging Lp trnh Mng
copyValueOf( )
toCharArray( )
indexOf( )
//cha 2
//cha mc 0
toUpperCase( )
Trang 77
Bi ging Lp trnh Mng
toLowerCase( )
trim()
System.out.println(space);
equals()
IV.1.4.Lp StringBuffer
class StringBufferCons
Trang 78
Bi ging Lp trnh Mng
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.
NewCapacity = OldCapacity * 2 + 2
Trc khi dung lng ca StringBuffer c t li, iu kin sau s c kim tra:
class test{
Trang 79
Bi ging Lp trnh Mng
s1.ensureCapacity(8);
s1.ensureCapacity(30);
s1.ensureCapacity(8);
s1.ensureCapacity(30);
append()
s1.append(evening);
Gi tr trong s1 by gi l goodevening.
insert()
Trang 80
Bi ging Lp trnh Mng
str.insert(1,b);
charAt()
setCharAt()
name.setCharAt(2,v);
setLength()
str.setLength(str.length() +10);
getChars()
Ch s u: v tr bt u, t ni m k t c ly ra.
Ch s kt thc: v tr kt thc
Trang 81
Bi ging Lp trnh Mng
str.getChars(3,6,ch,0);
reverse()
IV.1.5.Lp java.lang.Math
Lp ny cha cc phng thc tnh (static) thc hin cc thao tc ton hc. Chng
c m t nh sau:
abs()
Math.abs(num) //tr v 1.
ceil()
floor()
Trang 82
Bi ging Lp trnh Mng
max()
min()
round()
random()
sqrt()
sin()
cos()
Trang 83
Bi ging Lp trnh Mng
tan()
Lp Runtime cha thng tin v mi trng thc thi. Lp ny c s dng cho vic
qun l b nh, v vic thc thi ca cc qu trnh x l khc. Mi chng trnh Java c mt th
hin ca lp ny, cho php ng dng giao tip vi mi trng. N khng th c khi to,
mt ng dng khng th to ra mt th hin ca thuc lp ny. Tuy nhin, chng ta c th tham
chiu th hin trong lc thc hin chng trnh t vic dng phng thc getRuntime().
By gi, chng ta bit rng vic thu gom cc d liu khng thch hp trong Java l mt
tin trnh t ng, v chy mt cch nh k. kch hot mt cch th cng b thu thp d
liu khng cn c s dng ta gi phng thc gc() trn i tng Runtime hin thi. xem
chi tit vic cp pht b nh, s dng cc phng thc totalMemory() v freeMemory().
Runtime r = Runtime.getRunTime();
..
..
r.gc();
Trang 84
Bi ging Lp trnh Mng
IV.1.7.Lp System
Lp System cung cp cc tin chi nh l, dng vo, dng ra chun v dng li. N
cng cung cp phng thc truy cp cc thuc tnh lin quan n h thng Runtime ca
Java, v cc thuc tnh mi trng khc nhau nh l, phin bn (version), ng dn, hay cc
dch v, v.v..Cc trng ca lp ny l in, out, v err, cc trng ny tiu biu cho dng vo,
ra v li chun tng ng.
Trang 85
Bi ging Lp trnh Mng
class SystemDemo
System.out.println(System.getProperty(java.class.path));
System.out.println(System.getProperty(java.home));
System.out.println(System.getProperty(java.class.version));
System.out.println(System.getProperty(java.specification.vendor));
System.out.println(System.getProperty(java.specification.version));
System.out.println(System.getProperty(java.vendor));
System.out.println(System.getProperty(java.vendor.url));
System.out.println(System.getProperty(java.version));
System.out.println(System.getProperty(java.vm.name));
Trang 86
Bi ging Lp trnh Mng
IV.1.8.Lp Class
Cc th hin ca lp ny cha trng thi thi gian thc hin ca mt i tng trong
ng dng Java ang chy. iu ny cho php chng ta truy cp thng tin v i tng trong
thi gian chy.
interface A
final int id = 1;
Trang 87
Bi ging Lp trnh Mng
class B implements A
int deptno;
class ClassDemo
A a = new B();
B b = new B();
Class x;
x = a.getClass();
x= b.getClass();
x=x.getSuperclass();
IV.1.9.Lp Object
Trang 88
Bi ging Lp trnh Mng
Trong chng trnh sau, chng ta khng khai bo bt k lp hoc gi no. By gi,
chng ta c th to bng cch s dng phng thc equals(). Bi v, theo mc nh lp
ObjectDemo m rng lp Object.
Class ObjectDemo
if (args[0].equals(Aptech))
IV.2. Gi java.util
Hashtable
Trang 89
Bi ging Lp trnh Mng
Random
Vector
StringTokenizer
Hashtable m rng kch thc khi cc phn t c thm vo. Khi mt Hashtable mi,
bn c th ch nh dung lng ban u v yu t np (load factor). iu ny s lm cho
hashtable tng kch thc ln, bt c lc no vic thm vo mt phn t mi lm vt qua gii
hn hin hnh ca Hashtable. Gii hn ca Hashtable l dung lng nhn ln bi cc yu t
c np.V d: mt bng bm vi dung lng 100, v mt yu t np l 0.75 s c mt gii
hn l 75 phn t. Cc phng thc xy dng cho bng bm c biu din trong bng sau:
Constructor Purpose
Hashtable(int) Xy dng mt bng mi vi dung lng
ban u c ch nh.
Hashtable(int, Xy dng mt lp mi vi dung lng ban
float) u c ch nh v yu t np.
Hashtable() Xy dng mt lp mi bng cch s dng
gi tr mc nh cho dung lng ban u v
yu t np.
Bng 4.7 Cc phng thc xy dng Hashtable.
Trang 90
Bi ging Lp trnh Mng
Phng thc Mc ch
clear() Xo tt c cc phn t t bng bm.
clone() To mt bn sao ca Hashtable.
contains(Object) Tr v True nu bng bm cha cc i tng c
ch nh.
containsKey(Objec Tr v True nu bng bm cha kho c ch nh.
t)
elements() Tr v mt tp hp phn t ca bng bm.
get(Object key) Tr v i tng c kho c ch nh.
isEmpty() Tr v true nu bng bm rng.
keys() Tr v tp hp cc kho trong bng bm.
put(Object, Object) Thm mt phn t mi vo bng bm (Object,
Object) l kho v gi tr.
rehash() Thay i bng bm thnh mt bng bm ln hn.
remove(Object Xo mt i tng c cho bi kho c ch nh.
key)
size() Tr v s phn t trong bng bm.
toString() Tr v i din chui c nh dng cho bng bm.
Bng 4.8 Cc phng thc lp Hashtable.
contains c s dng tra cu phn t nguyn 1969, thy c danh sch cha bt k cc
tp nh t 1969.
Phng thc get() c s dng tm tp nh Wish You Were Here c trong bng
bm khng. Phng thc get() tr v phn t cng vi kho (tn v nm).
import java.util.*;
Trang 91
Bi ging Lp trnh Mng
//to mt bng bm mi
//Hin th bng bm
System.out.println(Initailly: +ht.toString());
if(ht.contains(new Integer(1969)))
if(ht.containsKey(Animals))
//Tm ra
//Xo mt tp nh
System.out.println(Removing Ummagumma\r\n);
ht.remove(Ummagumma);
System.out.println(Remaining:\r\n);
System.out.println((String)enum.nextElement());
Trang 92
Bi ging Lp trnh Mng
IV.2.2.Lp random
nextDouble()
nextFloat()
nextGaussian()
nextInt()
nextLong()
Trang 93
Bi ging Lp trnh Mng
ngu nhin.
nextFloat() Tr v mt gi tr kiu float k tip gia 0.0F v 1.0F t b to s
ngu nhin.
nextGaussian() Tr v gi tr kiu double c phn phi Gaussian k tip t b to
s ngu nhin. To ra cc gi tr Gaussian s c mt gi tr trung bnh
ca 0, v mt lch tiu chun ca 1.0.
nextInt() Tr v gi tr kiu Integer k tip t mt b to s ngu nhin.
nextLong() Tr v gi tr kiu long k tip t mt b to s ngu nhin.
setSeed(long) Thit lp gi tr khi to t b to s ngu nhin.
Bng 4.9 Cc phng thc lp Random.
IV.2.3.Lp Vector
Lp Vector ca Java gii quyt vn ny. N cung cp mt dng mng vi kch thc
ban u, mng ny c th tng thm khi nhiu phn t c thm vo. Mt lp Vector lu tr
cc mc l kiu Object, n c th dng lu tr cc th hin ca bt k lp Java no. Mt lp
Vector c th lu tr cc phn t khc nhau, cc phn t khc nhau ny l th hin ca cc lp
khc nhau.
Trang 94
Bi ging Lp trnh Mng
Phng thc Mc ch
addElement(Object) Thm phn t c ch nh vo lp Vector.
capacity() Tr v dung lng hin thi ca lp Vector.
clone() sao chp lp vector, nhng khng phi l cc phn t ca n.
contains(Object) Tr v True nu lp Vector cha i tng c ch nh.
copyInto(Object []) Sao chp cc phn t ca lp Vector vo mng c ch nh.
elementAt(int) Ly phn t v tr c ch nh.
elements() Tr v mt bng lit k ca cc phn t trong lp Vector.
ensureCapacity(int) m bo rng lp Vector c th lu tr t nht dung lng ti
thiu c ch nh.
firstElement() Tr v phn t u tin trong lp Vector.
indexOf(Object) Tm kim lp Vector, v tr v ch mc u tin tm thy i
tng.
indexOf(Object, int) Tm kim lp Vector bt u t v tr ch nh, tr v v tr u
tin tm thy.
insertElementAt(Object, Chn i tng c ch nh ti v tr c ch nh.
int)
isEmpty() Tr v True nu lp Vector khng c phn t.
lastElement() Tr v phn t cui cng trong lp Vector.
lastIndexOf(Object) Tm kim lp Vector, v tr v ch mc ca i tng tm thy
cui cng.
lastIndexOf(Object, int) Tm kim lp Vector bt u ti s ch mc c ch nh, v
tr v ch mc ca phn t cui cng tm thy.
removeAllElements() Xo tt c cc phn t t lp Vector.
removeElement(Object) Xo i tng c ch nh t lp Vector.
removeElementAt(int) Xo i tng ti ch mc c ch nh.
setElementAt(Object, Thay th i tng ti ch mc c ch nh vi i tng
int) c ch nh.
setSize(int) Thit lp kch thc ca lp Vector thnh kch thc mi
c ch nh.
Size() Tr v s ca cc phn t hin thi trong lp Vector.
toString() Tr v mt chui cha ni dung ca lp Vector.
Trang 95
Bi ging Lp trnh Mng
import java.util.*;
vect.addElement(One);
vect.addElement(Two);
vect.addElement(Three);
vect.addElement(Four);
vect.addElement(Five);
vect.insertElementAt(Numbers In Words,0);
vect.insertElementAt(Four,4);
System.out.println(Size: +vect.size());
System.out.println(Vector );
System.out.println(vect.elementAt(i)+ , );
vect.removeElement(Five);
System.out.println();
Trang 96
Bi ging Lp trnh Mng
System.out.println(Size: +vect.size());
System.out.println(Vector );
for(int i = 0;i<vect.size();i++)
System.out.print(vect.elementAt(i)+ , );
IV.2.4.Lp StringTokenizer
Trang 97
Bi ging Lp trnh Mng
Phng thc Mc ch
countTokens() Tr v s cc token cn li.
hasMoreElements() 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.
Trang 98
Bi ging Lp trnh Mng
import java.util.*;
while(st1.hasMoreTokens())
System.out.println(st1.nextToken());
System.out.println(Comma-delimited tokens : );
while (st2.hasMoreTokens())
Trang 99
Bi ging Lp trnh Mng
System.out.println(st2.nextToken());
1. lun l lnh u tin trc cc lnh: import, class trong chng trnh Java.
5. Lp bao bc (wrapper) cho cc kiu d liu double v long cung cp hai hng s l
.v...
Bi tp
Trang 100
Bi ging Lp trnh Mng
Kim tra xem mu tin ca Jack c hin hu trong s ghi nh ca bn hay khng.
Xo s in thoi ca Joy.
Trang 101
Bi ging Lp trnh Mng
V d 1.1: EchoServer.java
import java.io.*;
import java.net.*;
class EchoServer {
Trang 102
Bi ging Lp trnh Mng
for (;;) {
String str = in.readLine();
if (str == null) {
break;
} else {
out.println("Echo: " + str);
out.flush();
System.out.println("Received: " + str);
if (str.trim().equals("BYE"))
break;
}
}
incoming.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
System.out.println("EchoServer stopped.");
}
}
Bin dch chng trnh: javac EchoServer.java
ri chy trn my ch Server sau khi xy dng xong chng trnh EchoClient.
class EchoClient {
Trang 103
Bi ging Lp trnh Mng
}
Socket t = new Socket(host, 8008);
BufferedReader in
= new BufferedReader(new InputStreamReader(t.getInputStream()));
PrintWriter out
= new PrintWriter(new OutputStreamWriter(t.getOutputStream()));
for (;;) {
String str = in.readLine();
if (str == null) {
break;
} else {
System.out.println(str);
}
}
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
Bin dch chng trnh: javac EchoClient.java
Hy chy chng trnh EchoServer trn mt my v EchoClient trn my khc nu h thng
c mng. Nu th nghim trn mt my n ta c th m phng m hnh khch/ch bng cch
m hai ca s dng lnh DOS. EchoClient s chy trn mt ca s cn EchoServer chy trn
ca s khc, quan st kt qu tr v thy c m hnh khch/ch lm vic (Ch l chy
EchoServer trc ri mi n EchoClient).
Trang 104
Bi ging Lp trnh Mng
CHNG 2:
V d 2.1: ExchangeRateServer.java
import java.io.*;
import java.net.*;
import java.util.*;
public class ExchangeRateServer {
public static void main (String args[]) {
try {
DatagramSocket socket = new DatagramSocket (2345);
String localAddress = InetAddress.getLocalHost().getHostName().trim();
int localPort = socket.getLocalPort();
System.out.println (localAddress+ ": " );
System.out.println ("Exchange Rate Server is listening on port " +localPort +".");
int bufferLength = 256;
byte outBuffer[];
byte inBuffer[] = new byte[bufferLength];
Trang 105
Bi ging Lp trnh Mng
Trang 106
Bi ging Lp trnh Mng
Lp ExchangeRateTable
Lp ExchangeThread
y l mt phn tuyn chy song song vi chng trnh chu trch nhim mi giy s
gi yu cu n my ch v ly s liu v cp nht.
Lp ExchangeData
V d 2.2: ExchangeRateTable.java
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class ExchangeRateTable {
public static void main (String args[]) {
Frame myWindow = new Frame("Stock Exchange Application");
TextArea rateTable = new TextArea("Wait ...");
Label rateLabel = new Label("Exchange Rate Table");
rateTable.setBounds(new Rectangle(16,33,240,100));
rateLabel.setBounds(new Rectangle(16,6,158,21));
myWindow.setLayout(null);
myWindow.add(rateTable, null);
myWindow.add(rateLabel,null);
myWindow.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
System.exit(0);
}
});
myWindow.setSize(new Dimension(300,150));
myWindow.show();
Trang 107
Bi ging Lp trnh Mng
public ExchangeData(){
try
{
socket = new DatagramSocket();
inDatagram = new DatagramPacket(inBuffer, inBuffer.length);
Trang 108
Bi ging Lp trnh Mng
serverAddress = InetAddress.getByName("my.testing.server");
}
catch (Exception e)
{
System.out.println("Connect error!");
}
}
public String getRates(){
String data="";
try
{
outBuffer = new byte[bufferLength];
outBuffer = "rate".getBytes();
outDatagram = new DatagramPacket(outBuffer, outBuffer.length, serverAddress, 2345);
socket.send(outDatagram);
socket.received(inDatagram);
Trang 109
Bi ging Lp trnh Mng
JSP (Java Server Page) l mt cch n gin hn na ngi dng (nht l lp trnh
vin Java khng chuyn) tip cn c hng lp trnh Web pha my ch hiu qu v nhanh
hn. Nu bn cha bit tng tn Java hay servlet bn vn c th thit k c ng dng Web
p ng nhu cu ngi dng pha trnh khch thng qua cc trang JSP.
Servlet a m HTML vo lnh Java trong khi ngc li JSP a lnh Java vo cc m
(hay th) HTML. Tng t cc trang SHTML cha th <servlet> c trnh ch thng dch
trc khi tr kt xut v cho my khch. Cc trang JSP cha cc th c bit quy nh gn
ging th ca ngn ng HTML. Khi bn yu cu mt trang JSP , trnh ch s c trang JSP t
a cng, b din dch JSP (JSP Page Compiler) s din dch m lnh Java cha trong trang JSP
thnh mt servlet. Sau trnh ch Java Web Server s triu gi servlet tr kt xut thun
HTML v cho trnh khch. C ch hot ng ca trang JSP c minh ha nh hnh di y
Trnh din
dch JSP
Web Yu cu
Browser
Servlet tm
Kt xut Trang
JSP
HTTP Service
V d 1-1: FirstPage.jsp
Trang 110
Bi ging Lp trnh Mng
<HTML>
<H1>
Hello JSP!
</H1> <P>
<%
for(int i=6;i>0;i--){
out.println("<FONT Size="+i+">Hello</FONT>");
%>
</HTML>
Chng ta c th s dng trnh son tho Notepad ca Windows, hoc EditPlus, UltraEdit
to ra file FirstPage.jsp trn.
Trang 111
Bi ging Lp trnh Mng
CHNG 2:
Cc c php c bn ca JSP
I.Cc i tng mc nh ca JSP
Trnh din dch JSp cho php bn s dng mt s i tng khai bo trc. iu ny s
gip bn vit m lnh trong trang JSP nhanh hn servlet.
V d 2-1:
<HTML>
<%
if(curTime.get(curTime.HOUR_OF_DAY)<12){
%>
<%}
Trang 112
Bi ging Lp trnh Mng
else{
%>
<% }
else {
%>
<% } %>
</HTML>
V d 2-2:
<html>
Welcome<%=username%>
</html>
Trong v d trn username l bin cha tn ngi dng ng nhp (login) vo Website
ca chng ta, getNewMail() l mt hm tr v s int cho bit s mail hin c trong hp th ca
ngi dng.
Ch : khng c du (;) cui cc bin hoc biu thc gi hm trong c php <%= %>.
Bi v ni dung ca biu thc nm trong <%= %> s c chuyn thnh lnh kt xut
out.println() tng ng nh sau:
out.println("<html>");
out.println("Welcome "+username);
out.println("</html>");
Trang 113
Bi ging Lp trnh Mng
V d 2-3:
<HTML>
<%@page import="java.sql.*"%>
<%
Connection con;
Statement stmt;
ResultSet rs;
try{
...
%>
</HTML>
<%@page errorPage="error.html"%>
V d 2-4:
<HTML>
Trang 114
Bi ging Lp trnh Mng
<%
String username=session.getAttribute("user");
%>
<%
/*
To i tng Date
*/
%>
</HTML>
JSP cn cung cp thm cho bn c php ch thch <%-- --%>. Tt c cc khi lnh Java
v HTML nm gia hai du ch thch ny s c trnh bin dch trang b qua khng quan tm
n. V d:
<%--
--%>
<HTML>
<%--
<%
String username=session.getAttribute("user");
%>
--%>
Trang 115
Bi ging Lp trnh Mng
<%
%>
</HTML>
V d 2-5: nethodCall.jsp
<HTML>
return line;
%>
%>
</HTML>
V d 3-1: EmployeeList.jsp
<HTML>
Trang 116
Bi ging Lp trnh Mng
<%!
ResultSet rs = null;
try {
Class.forName(driverName).newInstance();
con = DriverManager.getConnection(connectionURL);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
return rs;
catch(Exception es){
out.println("Connection error!");
return rs;
%>
<%
ResultSet rs = query("sun.jdbc.odbc.JdbcOdbcDriver",
"jdbc:odbc:MyAccessDataSource",
if (rs==null){
out.println("<center><table border>");
out.println("<tr>");
out.println("</tr>");
Trang 117
Bi ging Lp trnh Mng
while (rs.next()){
out.println("<tr>");
out.println("</table></center>");
%>
</HTML>
Trang 118
Bi ging Lp trnh Mng
[6] www.java.sun.com
[7] www.javavietnam.org
Trang 119