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
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
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”.
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
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
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
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
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
}
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)
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
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 ó:
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:
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
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
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
>>>= 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
(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
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
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.