Trang 1
Tr-ờng đại học s- phạm kỹ thuật h-ng yên
khoa công nghệ thông tin
ooo
Đề c-ơng bài giảng Java
Nhúm biờn son: 1. Hong Trng Th
2. Nguyn Duy Tõn
Trang 2
C LC
Chng 1: CÁC KHÁI NIM C BN 5
BÀI 1. LÀM QUEN VI JAVA 5
I. Lch s java 5
II. Java em là ai 5
II. Mt sc trng ca java 5
III. Các kiu ng dng Java 7
IV. Máy o Java (JVM-Java Virtual Machine) 7
BÀI 2 NN TNG CA JAVA 9
I. Tp ký t dùng trong java 9
II. T khoá ca Java 9
III. nh danh (tên) 10
IV. Cu trúc mt chng trình java 10
V. Chng trình JAVA u tiên 12
VI. Chú thích trong chng trình 14
VII. Kiu d liu 15
VII. Mt s phép toán trên kiu d liu nguyên thu 17
IX. Toán t chuyn kiu 23
X. Các hàm toán hc 24
XI. Các phép toán trên kiu kí t 26
BÀI 3. IU KHIN LUNG CHNG TRÌNH 27
I. Cu trúc r nhánh 27
II. Cu trúc lp while và do-while 30
III. Cu trúc for 32
IV. Lnh break và continue 34
Chng 2: LP TRÌNH HNG I TNG 37
BÀI 1. NH NGHA LP 38
I. Khai báo lp 38
II. Chi tit v khai báo mt phng thc 40
III. T khoá this 43
IV. T khoá super 43
V. S dng lp 44
VI. iu khin vic truy cp n các thành viên ca mt lp 44
BÀI 2. KHI U VÀ DN DP 47
I. Phng thc to dng (constructor) 47
II. Khi khi u vô danh và khi khi u tnh 49
III. Dn dp: kt thúc và thu rác 51
BÀI 3. CÁC THÀNH PHN TNH 52
I. Thuc tính tnh 52
II. Phng thc tnh 52
BÀI 4. NP CHNG PHNG THC 53
I. Khái nim v phng thc bi ti 53
Trang 3
II. Yêu cu ca các phng thc bi ti 53
BÀI 5. K THA (INHERITANCE) 54
I. Lp c s và lp dn xut 54
II. Cách xây dng lp dn xut 54
III. Tha k các thuc tính 54
IV. Tha k phng thc 54
V. Khi u lp c s 54
VI. Ghi è phng thc ( Override ) 56
VI. Thành phn protected 56
VII. T khoá final 56
BÀI 6. LP C S TRU TNG 61
BÀI 7. A HÌNH THÁI 62
BÀI 8. GIAO DIN, LP TRONG, GÓI 63
I. Giao din 63
II. Lp trong 65
Bài 9. MNG, XÂU KÝ T, TP HP 67
I. Mng 67
II. Xâu ký t 70
III. Lp StringTokenizer 75
IV. Mt s lp c bn ca Java 77
V. Các lp tp hp 83
Chng 3: X LÝ NGOI L 92
I. Mc ích ca vic x lý ngoi l 92
II. Mô hình s lý ngoi l ca java 92
III. c t ngoi l 93
III. Ném ra ngoi l 93
IV. Bt ngoi l 93
V. Khi ‘finally’ 95
VI. Mt s lp ngoi l chun ca Java 96
Chng 4: LP TRÌNH A TUYN 97
I. Các kin thc liên quan 97
II. Lp trình a tuyn trong Java 98
Chng 5: NHP XUT (Input/Output) 104
I. Lp lung 105
II. Lp File 113
Chng 6: LP TRÌNH HO AWT 120
I. Gii thiu v h thng ho ca Java 120
II. Trình qun lý hin th trong Java 124
III. X lý s kin trong Java 125
Chng 7 LP TRÌNH C S D LIU 143
I. Tng quan 143
II. Các ku trình iu khin JDBC 143
Trang 4
III. Các lp trong JDBC API dùng truy cp CSDL 146
IV. Kt ni CSDL vi JDBC 147
V. Tng tác vi CSDL 152
VI. Qun lý giao dch 160
Chng 8: LP TRÌNH SOCKET 164
I. Các kin thc liên quan 164
II. Kho sát mt s lp trong gói java.net 164
2. Lp URL và URI 171
3. Lp Socket 176
4. Lp ServerSocket 182
5. Lp DatagramSocket 185
6. Lp DatagramPacket 185
III. TCP Socket 185
Chng 9: JAVA MAIL 205
I. Các khái nim MAIL 205
II. Gi mail vi th vin có sn ca java 206
III. Gii thiu java mail API 207
III. Gi mail 212
IV. Nhn mail 215
V. Xoá mail 221
Chng 10: LP TRÌNH PHÂN TÁN VI 222
JAVA RMI ( REMOTE METHOD INVOKE) 222
I. RMI và lp trình phân tán i tng 222
II. Gi phng thc t xa và các vn phát sinh 223
III. Vai trò ca các lp trung gian 223
IV. Cài t i tng phân tán 224
Chng 11: JAVA JSP (JAVA SERVLET) 233
Chng 12: EJB (ENTERPRISE JAVA BEANS) 234
I. Tng quan v JavaBean 234
II. Xây dng thành phn JavaBean 234
III. Tìm hiu Instrospector 247
IV. óng gói JavaBean 249
Trang 5
Chng 1: CÁC KHÁI NIM C BN
BÀI 1. LÀM QUEN VI JAVA
I. Lch s java
Java là mt ngôn ng lp trình c Sun Microsystems gii thiu vào tháng 6 nm
1995. Tó, nó ã tr thành mt công c lp trình ca các lp trình viên chuyên nghip.
Java c xây dng trên nn tng ca C và C++. Do vy nó s dng các cú pháp ca C và
các c trng hng i tng ca C++.
Ban u Java c thit k làm ngôn ng vit chng trình cho các sn phm
in t dân dng nhu video, tivi, n thoi, máy nhn tin . Tuy nhiên vi s mãnh
m ca Java ã khin nó ni ting n mc vt ra ngoài s tng tng ca các nhà thit
k ra nó.
Java khi thu tên là Oak- là cây si mc phía sau vn phòng ca nhà thit k
chính ông Jame Gosling, sau này ông thy rng ã có ngôn ng lp trình tên Oak ri, do
vy nhóm thit k quyt nh i tên, “Java” là cái tên c chn, Java là tên ca mt
quán cafe mà nhóm thit k java hay n ó ung.
II. Java em là ai
Java là ngôn ng lp trình hng i tng, do vy không th dùng Java vit
mt chng trình hng chc nng. Java có th gii quyt hu ht các công vic mà các
ngôn ng khác có th làm c.
Java là ngôn ng va biên dch va thông dch. u tiên mã ngun c biên dch
bng công c JAVAC chuyn thành dng ByteCode. Sau ó c thc thi trên tng
loi máy c th nh chng trình thông dch JAVA. Mc tiêu ca các nhà thit k Java là
cho phép ngi lp trình vit chng trình mt ln nhng có th chy trên bt c phn
cng c th, th nên khu hiu ca các nhà thit k Java là “Write One, Run Any Where”.
Ngày nay, Java c s dng rng rãi vit chng trình chy trên Internet. Nó là
ngôn ng lp trình hng i tng c lp thit b, không ph thuc vào hu hành.
Java không ch dùng vit các ng dng chy n l hay trong mng mà còn xây
dng các trình iu khin thit b cho n thoi di ng, PDA, …
II. Mt sc trng ca java
1n gin
Nhng ngi thit k mong mun phát trin mt ngôn ng d hc và quen thuc
vi a s ngi lp trình. Java ta nh C++, nhng ã lc bi các c trng phc tp,
không cn thit ca C và C++ nh: thao tác con tr, thao tác nh ngha chng toán t
(operator overloading),… Java không s dng lnh “goto” cng nh file header (.h). Cu
trúc “struct” và “union” cng c loi b khi Java. Nên có ngi bo Java là “C++ “,
ng ý bo java là C++ nhng ã bi nhng th phc tp, không cn thit.
2. Hng i tng
Có th nói java là ngôn ng lp trình hoàn toàn hng i tng, tt cc trong java
u là s vt, âu âu cng là s vt.
3. c lp vi h nn
Mc tiêu chính ca các nhà thit k java là c lp vi h nn hay còn gi là c
lp phn cng và hu hành. ây là kh nng mt chng trình c vit ti mt máy
nhng có th chy c bt kâu
Trang 6
Tính c lp vi phn cng c hiu theo ngha mt chng trình Java nu chy
úng trên phn cng ca mt h máy nào ó thì nó cng chy úng trên tt c các h máy
khác. Mt chng trình ch chy úng trên mt s h máy c thc gi là ph thuc
vào phn cng.
Tính c lp vi hu hành c hiu theo ngha mt chng trình Java có th
chy c trên tt c các hu hành. Mt chng trình ch chy c trên mt s h
iu hành c gi là ph thuc vào hu hành.
Các chng trình vit bng java có th chy trên hu ht các h nn mà không cn
phi thay i gì, iu này ã c nhng ngi lp trình t cho nó mt khu hiu vit
mt ln, chy mi n, iu này là không th có vi các ngôn ng lp trình khác.
i vi các chng trình vit bng C, C++ hoc mt ngôn ng nào khác, trình biên
dch s chuyn tp lnh thành mã máy (machine code), hay lnh ca b vi x lý. Nhng
lnh này ph thuc vào CPU hin ti trên máy bn. Nên khi mun chy trên loi CPU
khác, chúng ta phi biên dch li chng trình.
4. Mnh m
Java là ngôn ng yêu cu cht ch v kiu d liu, vic ép kiu tng ba bãi ca
C, C++ nay c hn ch trong Java, u này làm chng trình rõ ràng, sáng sa, ít li
n.Java kim tra lúc biên dch và c trong thi gian thông dch vì vy Java loi b mt
mt s loi li lp trình nht nh.Java không s dng con tr và các phép toán con tr.
Java kim tra tt c các truy nhp n mng, chui khi thc thi m bo rng các truy
nhp ó không ra ngoài gii hn kích thc.
Trong các môi trng lp trình truyn thng, lp trình viên phi t mình cp phát
b nh. Trc khi chng trình kt thúc thì phi t gii phóng b nhã cp. Vn ny
sinh khi lp trình viên quên gii phóng b nhã xin cp trc ó. Trong chng trình
Java, lp trình viên không phi bn tâm n vic cp phát b nh. Qúa trình cp phát, gii
phóng c thc hin tng, nh dch v thu nht nhng i tng không còn s dng
na (garbage collection).
ch by li ca Java giúp n gin hóa qúa trình x lý li và hi phc sau li.
5. H tr lp trình a tuyn
ây là tính nng cho phép vit mt chng trình có nhiu n mã lnh c chy
song song vi nhau. Vi java ta có th vit các chng trình có kh nng chy song song
mt cách d dàng, hn th na vic ng b tài nguyên dùng chung trong Java cng rt
ng gin. u này là không th có i vi mt s ngôn ng lp trình khác nh C/C++,
pascal …
6. Phân tán
Java h try các mô hình tính toán phân tán: mô hình client/server, gi th
tc t xa…
7. H tr internet
Mc tiêu quan trng ca các nhà thit k java là to u kin cho các nhà phát trin
ng dng có th vit các chng trình ng dng internet và web mt cách d dàng, vi
java ta có th vit các chng trình s dng các giao thc TCP, UDP mt cách d dàng, v
lp trình web phía máy khách java có công ngh java applet, v lp trình web phía máy
khách java có công ngh servlet/JSP, v lp trình phân tán java có công ngh RMI,
CORBA, EJB, Web Service.
Trang 7
8. Thông dch
Các chng trình java cn c thông dch trc khi chy, mt chng trình java
c biên dch thành mã byte code mã c lp vi h nn, chng trình thông dch java s
ánh x mã byte code này lên mi nn c th, u này khin java chm chp i phn nào.
III. Các kiu ng dng Java
Vi Java ta có th xây dng các kiu ng dng sau:
1. ng dng Applets
Applet là chng trình Java c to ra s dng trên Internet thông qua các trình
duyt h tr Java nh IE hay Netscape. Applet c nhúng bên trong trang Web. Khi
trang Web hin th trong trình duyt, Applet sc ti v và thc thi ti trình duyt.
2. ng dng dòng lnh (console)
Các chng trình này chy t du nhc lnh và không s dng giao din ha.
Các thông tin nhp xut c th hin ti du nhc lnh.
3. ng dng ha
ây là các chng trình Java chy c lp cho phép ngi dùng tng tác qua giao
din ha.
4. JSP/Servlet
Java thích hp phát trin ng dng nhiu lp. Applet là chng trình ha
chy trên trình duyt ti máy trm. các ng dng Web, máy trm gi yêu cu ti máy
ch. Máy ch x lý và gi kt qu tr li máy trm. Các Java API chy trên máy ch chu
trách nhim x lý ti máy ch và tr li các yêu cu ca máy trm. Các Java API chy trên
máy ch này m rng kh nng ca các ng dng Java API chun. Các ng dng trên máy
ch này c gi là các JSP/Servlet. hoc Applet ti máy ch. X lý Form ca HTML là
cách s dng n gin nht ca JSP/Servlet. Chúng còn có thc dùng x lý d liu,
thc thi các giao dch và thng c thc thi thông qua máy ch Web.
5. ng dng c s d liu
Các ng dng này s dng JDBC API kt ni ti c s d liu. Chúng có th là
Applet hay ng dng, nhng Applet b gii hn bi tính bo mt.
6. ng dng mng
Java là mt ngôn ng rt thích hp cho vic xây dng các ng dng mng. Vi th
vin Socket bn có th lp trình vi hai giao thc: UDP và TCP.
7. ng dng nhiu tng
Vi Java bn có th xây dng phân tán nhiu tng vi nhiu h tr khác nhau nh:
RMI, CORBA, EJB, Web Service
8. ng dng cho các thit b di ng
Hin nay phn ln các thit b di ng nh: in thoi di ng, máy tr giúp cá
nhân… u h tr Java. Th nên bn có th xây dng các ng dng chy trên các thit b
di ng này. ây là mt kiu ng dng khá hp dãn, bi vì các thit b di ng này ngày
càng ph bin và nhu cu có các ng dng chy trên ó, c bit là các ng dng mang
tính cht gii trí nh game
IV. Máy o Java (JVM-Java Virtual Machine)
Máy o là mt phn mm mô phng mt máy tính tht (máy tính o). Nó có tp
hp các lnh logic xác nh các hot ng ca máy tính và có mt hu hành o.
Ngi ta có th xem nó nh mt máy tính tht (máy tính có phn cng o, hu hành
Trang 8
o). Nó thit lp các lp tru tng cho: Phn cng bên di, hu hành, mã ã biên
dch.
Trình biên dch chuyn mã ngun thành tp các lnh ca máy o mà không ph thuc
vào phn cng và hu hành c th. Trình thông dch trên mi máy s chuyn tp lnh
này thành chng trình thc thi. Máy o to ra mt môi trng bên trong thc thi các
lnh bng cách:
Ø Np các file .class
Ø Qun lý b nh
Ø Dn “rác”
Vic không nht quán ca phn cng làm cho máy o phi s dng ngn xp lu tr
các thông tin sau:
Ø Các “Frame” cha các trng thái ca các phng thc.
Ø Các toán hng ca mã bytecode.
Ø Các tham s truyn cho phng thc.
Ø Các bin cc b.
Khi JVM thc thi mã, mt thanh ghi cc b có tên “Program Counter” c s dng.
Thanh ghi này tr ti lnh ang thc hin. Khi cn thit, có th thay i ni dung thanh
ghi i hng thc thi ca chng trình. Trong trng hp thông thng thì tng lnh
mt ni tip nhau sc thc thi.
Mt khái nim thông dng khác trong Java là trình biên dch “Just In Time-JIT”. Các
trình duyt thông dng nh Netscape hay IE u có JIT bên trong tng tc thc thi
chng trình Java. Mc ích chính ca JIT là chuyn tp lnh bytecode thành mã máy c
th cho tng loi CPU. Các lnh này sc lu tr và s dng mi khi gi n.
Trang 9
BÀI 2 NN TNG CA JAVA
I. Tp ký t dùng trong java
Mi ngôn ng nói chung, ngôn ng lp trình nói riêng u phi xây dng trên mt
tp hp ch cái (hay còn gi là bng ch cái), các kí tc nhóm li theo mt cách nào
ó to thành các t, các t li c nhóm li thành các câu (trong ngôn ng lp trình
gi là câu lnh), mt chng trình máy tính tính là mt tp các câu lnh c b trí theo
mt trt t mà ngi vit ra chúng sp t
Ngôn ng java c c xây dng trên bng ch cái unicode, do vy ta có th
dùng các kí t unicode t tên cho các nh danh.
II. T khoá ca Java
Mi ngôn ng lp trình có mt tp các t khoá, ngi lp trình phi s dng t
khoá theo úng ngha mà ngi thit k ngôn ngã ra, ta không thnh ngha li
ngha ca các t khoá, nh s dng nó t tên bin, hàm
Sau ây là mt s t khoá thng gp:
T khóa Mô t
abstract
S dng khai báo lp, phng thc tru tng
boolean
Kiu d liu logic
break
c s dng kt thúc vòng lp hoc cu trúc switch
byte
kiu d liu s nguyên
case
c s dng trong ln switch
cast
Cha c s dng ( dành cho tng lai)
catch
c s dng trong x lý ngoi l
char
kiu d liu ký t
class
Dùng khai báo lp
const
Cha c dùng
continue
c dùng trong vòng lp bt u mt vòng lp mi
default
c s dng trong lnh switch
do
c dùng trong vòng lp u kin sau
double
kiu d liu s thc
else
kh nng la chn th hai trong câu lnh if
extends
ch rng mt lp c k tha t mt lp khác
false
Gía tr logic
final
Dùng khai báo hng s, phng thc không th ghi è, hoc lp không
th k tha
finally phn cui ca khi x lý ngoi l
float
kiu s thc
for
Câu lnh lp
goto
Cha c dùng
if
Câu lnh la chn
implements
ch rng mt lp trin khai t mt giao din
import
Khai báo s dng th vin
instanceof
kim tra mt i tng có phi là mt th hin ca lp hay không
interface
s dng khai báo giao din
long
kiu s nguyên
native
Khai báo phng thc c vit bng ngông ng biên dch C++
new
to mt i tng mi
Trang 10
null mt i tng không tn ti
package
Dùng khai báo mt gói
private
c t truy xut
protected
c t truy xut
public
c t truy xut
return
Quay t phng thc v ch gi nó
short
kiu s nguyên
static
Dùng khai báo bin, thuc tính tnh
super
Truy xut n lp cha
switch
lnh la chn
synchronized
mt phng thc c quyn truy xut trên mt i tng
this
Ám ch chính lp ó
throw
Ném ra ngoi l
throws
Khai báo phng thc ném ra ngoi l
true
Giá tr logic
try
s dng bt ngoi l
void
Dùng khai báo mt phng thc không tr v giá tr
while
Dùng trong cu trúc lp
III. nh danh (tên)
Tên dùng xác nh duy nht mt i lng trong chng trình. Trong java tên c
t theo quy tc sau:
- Không trùng vi t khoá
- Không bt u bng mt s, tên phi bt u bng kí t hoc bt u bng kí $,_
- Không cha du cách, các kí t toán hc nh +, -, *,/, %
- Không trùng vi mt nh danh khác trong cùng mt phm vi
Chú ý:
- Tên nên t sao cho có th mô tc i tng trong thc t
- Ging nh C/C++, java có phân bit ch hoa ch thng
- Trong java ta có tht tên vi dài tu ý
- Ta có th s dng các kí t ting vit t tên
Quy c v t tên trong java
Ta nên t tên bin, hng, lp, phng thc sao cho ngha ca chúng rõ ràng, d hiu,
khoa hc và mang tính c l quc t. Do java có phân bit ch hoa, ch thng nên ta
phi cn thn và chú ý.
Sau ây là quy c t tên trong java (chú ý ây ch là quy c do vy không bt buc
phi tuân theo quy c này):
- i vi bin và phng thc thì tên bao gi cng bt u bng ký t thng, nu tên
có nhiu t thì ghép li thì: ghép tt c các t thành mt, ghi tu tiên ch thng,
vit hoa kí tu tiên ca mi t theo sau trong tên, ví d area, radius, readInteger…
-i vi tên lp, giao din ta vit hoa các kí tu tiên ca mi t trong tên, ví d lp
WhileTest, Circle
- Tên hng bao gi cng vit hoa, nu tên gm nhiu t thì chúng c ni vi hau bi
kí t ghch di ‘_’, ví d PI, MAX_VALUE
IV. Cu trúc mt chng trình java
- Mi ng dng Java bao gm mt hoc nhiu n v biên dch (mi n v biên dch
là mt tp tin có phn m rng Java)
- Mi n v biên dch bao gm mt hoc nhiu lp
Trang 11
- Mi ng dng c lp phi có duy nht mt phng thc main (m bt u ca ng
dng)
- Mi n v biên dch có nhiu nht mt lp c khai báo là public, nu nh trong
n v biên dch có lp public thì tên ca n v biên dch phi trùng vi tên ca lp
public (ging ht nhau c ký t hoa ln ký t thng)
- Bên trong thân ca mi lp ta khai báo các thuc tính, phng thc ca lp ó, Java
là ngôn ng hng i tng, do vy mã lnh phi nm trong lp nào ó. Mi lnh u
c kt thúc bng du chm phy “;”.
- Trong ngôn ng Java, lp là mt n v mu có cha d liu và mã lnh liên quan n
- mt thc th nào ó. Khi xây dng mt lp, thc cht bn ang to ra mt mt kiu d
liu. Kiu d liu mi này c s dng xác nh các bin mà ta thng gi là “i
ng”. i tng là các th hin (instance) ca lp. Tt c các i tng u thuc v
mt lp có chung c tính và hành vi. Mi lp xác nh mt thc th, trong khi ó mi
i tng là mt th hin thc s.
- Khi ban khai báo mt lp, bn cn xác nh d liu và các phng thc ca lp ó.
V c bn mt lp c khai báo nh sau:
//Nhp khu các th vin
import th_vin;
//Xây dng các lp
public class clsMain{
public static void main(String args[])
{
//m bt u ca chng trình
}
}
class lp1
{
}
class lp2
{
}
t n v biên dch là mt tp
tin .java
Trang 12
Cú pháp:
class classname
{ var_datatype variablename;
<met_datatype> methodname (parameter_list){ }
}
Trong ó:
class - T khoá xác nh lp
classname - Tên ca lp
var_datatype - kiu d liu ca bin
variablename - Tên ca bin
met_datatype - Kiu d liu tr v ca phng thc
methodname - Tên ca phng thc
parameter_list – Các tham sc ca phng thc
- Bn còn có thnh ngha mt lp bên trong mt lp khác. ây là lp xp lng nhau,
các th hin (instance) ca lp này tn ti bên trong th hin ca mt lp che ph chúng.
Nó chi phi vic truy nhp n các thành phn ca lp bao ph chúng. Có hai loi lp
trong ó là lp trong tnh “static” và lp trong không tnh “non static”
+ Lp trong tnh (static)
Lp trong tnh c nh ngha vi t khoá “static”. Lp trong tnh có th truy nhp
vào các thành phn tnh ca lp ph nó.
+ Lp trong không tnh (non static)
Lp bên trong (không phi là lp trong tnh) có th truy nhp tt c các thành phn ca
lp bao nó, song không th ngc li.
V. Chng trình JAVA u tiên
có th biên dch và chy các chng trình java ta phi cài
- JRE (Java Runtime Enviroment) môi trng thc thi ca java, nó bao gm: JVM (Java
Virtual Machine) máy o java vì các chng trình java c thông dch và chy trên
máy o java và tp các th vin cn thit chy các ng dng java.
- B công c biên dch và thông dch JDK ca Sun Microsystem
Sau khi cài t JDK (gi s th mc cài t là C:\JDK1.4) ta s nhn c mt cu trúc
th mc nh sau:
- biên dch mt chng trình java sang mã byte code ta dùng lnh
C:\JDK1.4\BIN\javac TênTp.java
- thông dch và chy chng trình ta s dng lnh
Trang 13
C:\JDK1.4\BIN\java TênTp
biên dch và chy chng trình Java n gin ta nên thit t hai bin môi trng
“paht” và “classpath” nh sau:
-i vi dòng WinNT:
+ R-Click vào My Computerà chn Propertiesà chn AdvancedàEnviroment
Variables
+ Trong phn System variables chn new thêm bin môi trng mi, trong hp
thoi hin ra gõ “classpath” vào ô 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ú ý không gõ du “ vào, mc ích cho d nhìn mà thôi)
+ Cng trong phn System variables tìm n phn path trong danh sáchàchn edit
sa li giá tr hin có, trong ô value ta thêm vào cui “;C:\jdk1.4\bin”
Công vic t các bin môi trng ã xong, thy c tác dng ca các bin môi
tng ta cn phi khi ng li máy
-i vi dòng Win9X:
M tp C:\Autoexec.bat sau ó thêm vào hai dòng sau:
+classpath=.;C:\jdk1.4\lib\tools.jar;C:\jdk1.4\lib\dt.jar;C:\jdk1.4\jre\lib\rt.jar
+ path=…;c:\jdk1.4\bin
Khi ng li máy thy c tác dng ca các bin môi trng này
Ví du tiên: chng trình Hello World (chng trình khi chy s in ra màn hình li
chào Hello World)
Các bc:
Trang 14
- M mt chng trình son tho vn bn h tr asciii, nh notepad, wordpad,
EditPlus… và gõ vào các dòng sau:
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
}
- Ghi li vi cái tên C:\HelloWorld.java (chú ý tên tp phi trùng vi tên lp, k c ch
hoa ch thng, phn m rng là java)
- M ca s DOS Prompt
+ Chuyn vào th mc C:\
+ Gõ lnh javac HelloWorld.java biên dch chng trình, nu vic biên dch
thành công (chng trình không có li cú pháp) thì ta s thu c tp
HelloWorld.class trong cùng th mc, nu trong chng trình còn li cú pháp
thì trong bc này ta s nhn c mt thông báo li và lúc này tp
HelloWorld.class cng không c to ra
+ Gõ lnh java HelloWorld (chú ý không gõ phn m rng) chy chng trình
HelloWorld.
Sau khi thông dch và chy ta nhn c
VI. Chú thích trong chng trình
Trong java ta có 3 cách ghi chú thích
Cách 1: s dng cp /* và */ ý ngha ca cp chú thích này ging nh ca C, C++
Cách 2: s dng cp // ý ngha ca cp chú thích này ging nh ca C, C++
Cách 3: s dng cp /** và */, ây là kiu chú thích tài liu (không có trong C/C++), nó
dùng to ra tài liu chú thích cho chng trình.
Vi cách th nht và cách ba ta có th vit chú thích trên nhiu dòng, vi cách chú thích
hai ta ch có th chú thích trên mt dòng.
Chú ý: Trong java ta có tht chú thích âu?, câu tr li là: âu có tht c mt
du cách thì ó có tht chú thích.
Trang 15
VII. Kiu d liu
1. Các kiu d liu nguyên thu
T khoá Mô t Kích c Ti thiu Ti a
Lp bao
(kiu s nguyên)
byte s nguyên mt byte 8 bit -128 127 Byte
short s nguyên ngn 16 bit -2
15
2
15
-1 Short
int s nguyên 32 bit -2
31
2
31
-1 Integer
long s nguyên dài 64 bit -2
63
-2
63
-1 Long
(kiu s thc)
float ki
u thc vi chính
xác n
32 bit IEEE754 IEEE75
4
Float
double Double-precision
floating point
64 bit IEEE754 IEEE75
4
Double
(kiu khác)
char kiu kí t 16 bit Unicode 0
Unicode
2
16
-1
Character
boolean kiu logic true hoc false - - Boolean
void - - - - Void
c m ca các bin có kiu nguyên thy là vùng nh ca chúng c cp phát phn
stack. Do vy vic truy xut vào mt bin kiu nguyên 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 các d liu cùng kiu.
Lp (Class) Là s cài t mô t v mt i tng trong bài toán.
Giao din
(Interface)
Là mt lp thun tru tng c to ra cho phép cài t
a tha k trong Java.
c m ca các bin kiu tham chiu là nó cha a ch ca i tng mà nó tr
n.
u nguyên thu
kiu logic boolean
Kiu s
Kiu s thc
Kiu kí t
Kiu s
boolean
char
byte short
int
long
float
doubl
e
Trang 16
Vùng nh ca bin tham chiu c cp phát vùng nh stack còn vùng nh ca
i tng c cp phát vùng nh heap. Vic truy xt vào vùng nh heap chm hn truy
xt vào vùng nh stack tuy nhiên java có c ch cho phép truy cp vào vùng nh heap vi
tc xp x bng tc truy cp vào vùng nh stack.
VIII. Khai báo bin
1. Khai báo bin
ng t ngôn ng C/C++, khai báo bin trong java ta s dng cú pháp sau:
type name [=InitValue];
trong ó:
- type là kiu d liu cu bin
- name là tên ca bin, tên bin là mt xâu kí tc t theo quy tc t tên ca java
- InitValue là giá tr khi to cho bin, ây là phn tu chn, nu b qua phn này thì giá
tr ban u ca bin c khi to giá tr mc nh
Chú ý:
- Nu cn khai báo nhiu bin có cùng mt kiu d liu ta có tht các khai báo các bin
trên mt dòng, các bin này c phân cách nhau bi du phy
- Java s x lý các bin không c khi u giá tr nh sau:
+ i vi thuc tính (bin c khai báo trong phm vi ca lp) thì Java s tng
khi gán giá tr cho các 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 các bin cc b thì bin không c khi gán giá tr mc nh, tuy nhiên
Java s báo li nu ta s dng mt bin cha c nhn giá tr
2. Phm vi bin
Mi bin c khai báo ra có mt phm vi hot ng, phm vi ca bin là ni mà
bin có thc truy cp, u này xác nh c tính thy c và thi gian sng ca bin.
Bin tham chiu
i tng
Trang 17
Ø Bin phm vi lp là bin c khai báo bên trong lp nhng bên ngoài các phng
thc và hàm to, tuy nhiên vic khai báo phi xut hin trc khi bin c s dng
Ø Bin phm vi cc b là bin c khai báo bên trong mt khi, phm vi ca bin tính
tm bin c khai báo cho n cui khi mà bin c khai báo
Ví d:
{
int i=1; // ch có i sn sàng s dng
{
int j=10; // c i và j u sn sàng
}
// ch có i sn sàng
// j không sn sàng vì nm ngoài phm vi
}
Chú ý: Ta không th làm iu sau cho dù nó có th trong C/C++
{
int i=1;
{ int i=10;// không c phép vì ã có mt bin cùng tên vi nó }
}
Nhng ngi thit k java cho rng u ó có th gây ln ln, do vy hã quyt
nh không cho phép che giu mt bin phm vi ln hn.
Chú ý:
thi gian sng ca các i tng không tuân theo quy lut thi gian sng ca các
bin kiu nguyên thu.
VII. Mt s phép toán trên kiu d liu nguyên thu
1. Phép gán
Cú pháp Bin=BiuThc;
Phép gán c thc hin bng toán t ‘=’, nó có ngha là “ hãy tính toán giá tr biu
thc bên phi du gán, sau ó a giá tró vào ô nh có tên nm bên trái du gán’
Chú ý:
+ Câu lnh gán gm mt du ‘=’
+ Kiu ca biu thc bên phi du gán phi tng thích vi kiu d liu ca bin
+ Trong java ta có th thc hin mt dy gán nh sau:
i = j = 10; // c i và j u có giá tr 10
Trang 18
2. Toán t toán hc
Ngôn ng java cng có các phép toán s hc nh các ngôn ng khác: + ( phép cng), - (
phép tr ), * ( phép nhân ),/ ( phép chia ), % ( phép toán chia ly phn nguyên)
Ta mô t tóm tt các phép toán s hc qua bng tng kt sau:
Phép toán S dng Mô t
+ op1 + op2 Cng op1 viop2
- op1 - op2 Tr op1 cho op2
* op1 * op2 Nhân op1 vi op2
/ op1/ op2 chia op1 cho op2
% op1 % op2 Tính phn d ca phép chia op1 cho op2
3. Toán t tng, gim
Ging nh ngôn ng C/C++, java cng có phép toán tng, gim, ta có th mô t
tóm tt qua các bng sau:
Phép toán S dng
Mô t
++ op++
ng op lên 1 n v, giá tr ca op c tng lên trc khi biu
thc cha nó c tính
++ ++op
ng op lên 1 n v, giá tr ca op c tng lên sau khi biu thc
cha nó c tính
op
Gim op xung1 n v, giá tr ca op c gim xung trc khi
biu thc cha nó c tính
op
Gim op xung1 n v, giá tr ca op c gim xung sau khi
biu thc cha nó c tính
Chú ý: nu toán t tng trc, tng sau(gim trc, gim sau) ng mt mình(không
nm trong biu thc ) thì chúng hot ng nh nhau, chúng ch khác nhau khi chúng nm
trong biu thc
4. Phép toán quan h
Phép toán quan h bao gi cng cho kt qu boolean, phép toán quan h s so sánh
2 giá tr, nó xác nh mi quan h gia chúng, ví d! = s tr v true nu 2 toán hng là
khác nhau.
Ta tóm tt các phép toán qua bng sau:
Phép toán 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 khác op2
Ví d: S dng các phép toán quan h
public class RelationalDemo {
public static void main(String[] args) {
// a few numbers
Trang 19
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 trình
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
Trang 20
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. Phép toán logic
Java h tr 6 phép toán logic c ch ra trong bng sau:
Phép toán S dng Nhn v giá tr true khi
&& op1 && op2
C op1 và op2 u là true, giá tr ca op2 chc tính
khi op1 là true
|| op1 || op2
Hoc op1 hoc op2 là true, giá tr ca op2 chc tính
khi op1 là false
! ! op op là false
& op1 & op2
C op1 và op2 u là true, giá tr ca op2 luôn c tính
k c khi op1 là false
| op1 | op2
Hoc op1 hoc op2 là true, giá tr ca op2 luôn luônc
tính k c khi op1 là true
^ op1 ^ op2 Nu op1 khác op2
Nhn xét:
+ Phép toán && ( & ) ch nhn giá tr true khi và ch khi c hai toán hng u là true
+ Phép toán || ( | ) ch nhn giá tr false khi và ch khi c hai toán hng là false
+ Phép toán ^ ch nhn giá tr true khi và ch khi hai toán hng khác nhau
6. phép toán thao tác trên bit
6.1. Phép toán dch bit
Ta s mô t phép toán dch chuyn qua bng sau:
Phép toán S dng Kt qu
>> op1 >> op2
Dch chuyn op1 sang phi op2 bit, op2 bit phía bên phi s
c n bng các bít 0
<< op1 << op2
Dch chuyn op1 sang trái op2 bit(gi nguyên du ca op1),
op2 bit nm bên trái sc n bng các bít 0
>>> op1>>> op2 Dch chuyn op1 sang phi op2 bit, op2 bit
Sau ây là hình minh ho phép toán dch bít
Trang 21
Ví d:
13>>1=6 vì 13=11012 do vy khi dch phi mt bit ta sc 1102=6
5<<1=10 vì 5=1012 do vy khi dch trái 1 bit ta sc 10102=10
5<<2=100 vì 5=1012 do vy khi dch trái 2 bit ta sc 101002=100
Nhn xét: phép toán dch trái mt bit chính là phép nhân vi 2, còn dch phi chính là
phép chia cho 2
6.2. Phép toán logic trên bit
Các phép toán thao tác bit cho phép ta thao tác trên tng bit riêng l trong mt kiu d liu
thích hp, các phép toán thao tác bit thc hin i s boolean trên các bit tng ng ca 2
toán hng to ra kt qu
Ta tóm tt các phép toán trong bng sau:
Phép toán S dng Thc hin
& op1 & op2 Thc hin phép and các bit tng ng ca op1 vi op2
| op1 | op2 Thc hin phép or các bit tng ng ca op1 vi op2
^ op1 ^ op2 Thc hin phép xor các bit tng ng ca op1 vi op2
~ ~op2 Thc hin phép lt not các bit ca op2
Bng giá tr chân lý ca các phép toán ái s boolean:
Trang 22
Phép AND
op1 op2 Result
0 0 0
0 1 0
1 0 0
1 1 1
Phép XOR
op1 op2 Result
0 0 0
0 1 1
1 0 1
1 1 0
op1 op2 Result
0 0 0
0 1 1
1 0 1
1 1 1
Ví d:
1101// 13
& 1100// 12
1100// 12
1101// 13
| 1100// 12
1101// 13
1101// 13
^ 1100// 12
0001// 1
! 10101=01010
7. Toán t gán tt
Ging nh C/C++ java cng có toán t gán, ta tóm tt các toán t gán qua bng
sau:
Phép gán S dng ng 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
Phép NOT
op1 Result
0 1
1 0
Trang 23
&= 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 tiên ca các phép toán
Th t u tiên ca các phép toán xác nh trình t tính toán giá tr ca mt biu thc, java
có nhng quy tc riêng xác nh trình t tính toán ca biu thc, ta phi nh quy tc
sau:
Ø Các phép toán mt ngôi bao gi cng c thc hin trc tiên
Ø Trong mt biu thc có nhiu phép toán thì phép toán nào có u tiên cao hn s
c thc hin trc phép toán có u tiên thp
Ø Trong mt biu thc có nhiu phép toán có u tiên ngang nhau thì chúng sc
tính theo trình t t trái qua phi
Ta có bng tóm tt th t u tiên ca các phép toán 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 trên th t u tiên ca các phép toán c gim t trên xung di,
trên cùng mt hàng thì chúng có u tiên ngang nhau.
• Toán t dy
Không ging nh C/C++, trong java ch duy nht mà ta có tht toán t dy là bên trong
cp ngoc tròn ca cu trúc for( sc mô t chi tit trong chng sau )
IX. Toán t chuyn kiu
9.1 Chuyn i kiu không tng minh
Vic chuyn i kiu thng c din ra mt cách tng trong trng hp biu
thc gm nhiu toán hng có kiu d liu khác nhau. u này ôi khi làm cho bn khá
ngc nhiên vì nhn c mt kt qu không theo ý mun. Ví d ta xét n trình sau:
int two=2, three=3;
Trang 24
float result=1.5 +three/two;
kt qu nhn c ca result là 2.5. iu mà bn mong mun là 3.0 ch không phi là 2.5.
Kt qu 2.5 nhn c là do three và two là hai giá tr nguyên nên kt qu ca phép chia
three/two cho ta mt giá tr nguyên bàng 1 ch không phi là 1.5. nói rng kt qu ca
phép chia three/two là mt giá tr thc ch không phi là mt giá tr nguyên thì mt trong
hai toán hng ca phép chia này phi là mt s thc. Do vy ta cn phi chuyn kiu ca
mt trong hai toán hng này hoc c hai thành s thc. nhn c kt quúng trong
trng hp này 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 trên là nu trong mt phép toán có s tham gia ca nhiu toán hng
có kiu khác nhau thì java s chuyn kiu tng cho các toán hng mt cách tng
theo quy tc sau:
byte -> short -> int -> long -> float -> double
9.2. Chuyn i kiu tng minh
chuyn i kiu mt cách tng minh ta s dng cú pháp sau:
(type) biu_thc;
khi gp câu lnh này java s tính toán giá tr ca biu thc sau ó chuyn i kiu giá tr
ca biu thc thành 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ú ý:
- Phép toán chuyn kiu là phép toán có u tiên cao, nên (int)3.5*2≠(int)(3.4*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 này có th bn s b mt thông tin.
X. Các hàm toán hc
Các hàm toán hc nh sin, cos, sqrt c java vit sn trong lp Math. Lp này nm trong
gói java.lang (gói mc nh) do vy bn không cn phi thêm câu lnh import u
chng trình có th s dng lp này. Các hàm này c vit là các phng thc tnh do
vy ta không cn phi to ra th hin ca lp Math.
Bng sau lit kê mt s phng thc tnh trong lp Math:
Tên phng thc Mô t ý ngha Kiu tham s Kiu tr v
sin(arg)
tính sin ca arg arg là mt biu thc kiu
double th hin mt cung
theo radians
double
cos(arg) tính cos ca arg arg là mt biu thc kiu
double th hin mt cung
theo radians
double
tan(arg)
tính tang ca arg arg là mt biu thc kiu
double th hin mt cung
theo radians
double
asin(arg)
tính sin-1 (arcsin) arg là mt biu thc kiu double trong h
Trang 25
arg double th hin mt cung
theo radians
radians
acos(arg)
tính cos-1
(arccosin) ca arg
arg là mt biu thc kiu
double th hin mt cung
theo radians
double trong h
radians
atan(arg)
tính tan-1
(arctang) ca arg
arg là mt biu thc kiu
double th hin mt cung
theo radians
double trong h
radians
atan2 (arg1,arg2)
tính tan-1
(arctang) ca
arg1/arg2
arg1,arg2 là các biu thc
kiu double th hin mt
cung theo radians
double trong h
radians
abs(arg)
tính tr tuyt i
ca arg
arg là mt biu thc kiu
int, long, float, hoc double
The same type as
the argument
max (arg1,arg2)
Nhn v giá tr ln
trong hai tham s
arg1, arg2 là mt biu thc
kiu int, long, float, hoc
double
Nhn v kiu
cùng kiùu vi
tham s
min (arg1,arg2)
Nhn v giá tr
nh trong hai tham
s
arg1, arg2 lµ mét biùu thøc
kiùu int, long, float, hoÆc
double
Nhn v kiu
cùng kiùu vi
tham s
ceil(arg)
Nhn v giá tr
nguyên nh hn
hoc bng arg
arg là biu thc kiu float
hoc double
double
floor(arg)
Nhn v giá tr
nguyên ln hn
hoc bng arg
arg là biu thc kiu float
hoc double
double
round(arg)
Tr v giá tr
nguyên gn arg
nht, giá tr này
chính là giá tr ca
arg sau khi ã làm
tròn
arg là biu thc kiu float
hoc double
Nhn v kiu int
nu arg kiêu float,
nhn v kiùu long
nu arg kiu
double
rint(arg)
Ging nh
round(arg)
arg là biu thc kiu double double
sqrt(arg)
tính cn bc hai
ca arg
arg là biu thc kiu double
double
pow (arg1,arg2)
tính arg1arg2 C arg1 và arg2 là các biu
thc kiu double
double
exp(arg)
tính earg arg là biu thc kiu double double
log(arg)
tính logarithm s
e ca arg
arg là biu thc kiu double double
random()
Nhn v mt s
gi ngu nhiên
nm trong khon
[0, 1)
Không có tham s double
Ví d v các hàm toán hc trong lp Math, bn hãy gõ on chng trình sau và cho chy
th thy c kt qu tính toán ca các hàm toán hc.