giaotrinhjava1234
TRANSCRIPT
-
8/3/2019 giaotrinhJava1234
1/352
GIO TRNH BI GING
MN HC : LP TRNH JAVA
-
8/3/2019 giaotrinhJava1234
2/352
M U
GII THIU SLC LPTRNH HNG I TNG
-
8/3/2019 giaotrinhJava1234
3/352
Mc Tiu Bi Hc
Th no l lp trnh hngitng
Tm hiuvtrutngdliu
nhnghalp v itng Constructor v Destructor
Tm hiuv tnh lutr, bao bcdliu,tnh ktha v a hnh
Cc u im caphng php lp trnhhngitng
-
8/3/2019 giaotrinhJava1234
4/352
Lp Trnh Hng i Tng
Ly i tng lm nn tng c s caphng php lp trnh
Phng php thitk v thchinbng cchphnmm
-
8/3/2019 giaotrinhJava1234
5/352
Tru Tng D Liu
L tin trnh xc nh v tphp cc tnh chtv cc hnh ng ca mt thc th c lin
quan nngdng Li ch :
Tp trung vo vn
Xc nhnhng tnh cht v hnh ngthityu
Loitrnhng chi tit khng cnthit
-
8/3/2019 giaotrinhJava1234
6/352
Tru Tng D Liu
Cc tnh chtca mt i
tng Ngi
Tn
a ch
Tui
Chiu cao
Mu tc
Cc tnh cht camt i tng
Khch hng
Tn
a ch
-
8/3/2019 giaotrinhJava1234
7/352
Tru Tng D Liu (tip theo)
Cc thuc tnh Cc hnh ng
Tn ca khch hng Nhp tn ca khch hng
a ch ca khch hng Nhp a ch ca khch hng
i xe hi mua Nhp i xe hi mua c
Ngi bn xe hi Nhp tn ngi bn xe hi
Lp ho n
-
8/3/2019 giaotrinhJava1234
8/352
Lp
Lp l mt nhm cc i tng c chungnhng tnh cht v hnh ng
Lp Khch hng
Tn khch hnga ch khch hng
i xe hi mua
Tn ngi bn xe hi
Nhp tnNhp a ch
Nhp i ca xe hi mua c
Nhp tn ca ngi bn xe hi
Lp ha n
-
8/3/2019 giaotrinhJava1234
9/352
i Tng
i tng l mt th hin ca lp
Ton
Anh
Tun
-
8/3/2019 giaotrinhJava1234
10/352
i Tng ( tip theo )
Thuc tnh Tnh cht m tmtitng
Hnh ng Dchv m itng c thpng
Phngthc ct cch pngbng hnh ng khi c yu cu
Thng ip Yu cumt hnh ng
Binc
S kch thch titng ny gi sang itng khc
-
8/3/2019 giaotrinhJava1234
11/352
Lp V i Tng
Lp l mt thc th, cn i tng l mt thcththct
Lp l mt m hnh nimnh r cc tnh chtv cc hnh ng c quy nhbi mt itng, cn itng l mt m hnh thcs
Lp l khun mutitngcto ra
Tt c cc i tng trong cng mt lp c cctnh cht v cc hnh ngnh nhau
-
8/3/2019 giaotrinhJava1234
12/352
Constructor
Tin trnh to ra mtitngcgi lConstructor
Mt Constructor: Cp pht vng nh
Khi gn nhng thuc tnh (nu c)
Cho php truy cp nhng thuc tnh vphng thc
-
8/3/2019 giaotrinhJava1234
13/352
Destructor
Tin trnh hy mt i tng gi lDestructor
Mt Destructor:
Gii phngbnh
Cm truy cpthuc tnh vphngthc
-
8/3/2019 giaotrinhJava1234
14/352
Tnh Lu Tr
Tnh lu tr l khnngca i tng cthlulidliuca n sau khi bhy
-
8/3/2019 giaotrinhJava1234
15/352
Tnh Bao Bc D Liu
Tin trnh che dunhng chi tithinthcmtitngcgi l tnh baobc
uim: Tt c nhng thuc tnh v phng thc cn
thitucto
Mt lp c th c nhiu tnh cht v phngthcnhngchmts trong chinthcho ngi dng
-
8/3/2019 giaotrinhJava1234
16/352
Tnh K Tha
LP SINH VIN LP NHNVIN
LP KHCHHNG
Tn Tn Tn
a ch a ch a chim mn 1 Lng Sn phm mua
c
im mn 2 Chc v Nhp tn
Nhp tn Nhp tn Nhp a ch
Nhp a ch Nhp a ch Nhp m sn phmNhp im Nhp lng Lp ha n
Tnh tng s im Tnh lng
-
8/3/2019 giaotrinhJava1234
17/352
Tnh K Tha (tip theo)
Lp Ngi
Tn
a ch
Nhp tnNhp a ch
-
8/3/2019 giaotrinhJava1234
18/352
Tnh K Tha ( tip theo )
LP NGI
Tn
a ch
Nhp tnNhp a ch
Thm cc thuc tnh v hnh ngcn thit vo lp khch hng
Nhp m sn phm mua
Lp ha n
Lp Khch Hng+ =
-
8/3/2019 giaotrinhJava1234
19/352
Tnh K Tha ( tip theo )
Tnh Thak L cch cho php mtlp chia snhngthuc tnh
v nhng hnh ng nh ngha trong mt hocnhiulp khc
Lp con L lpthaktlp khc
Lp cha L lptmtlp khc thak cc ngxca n
athak Khi mtlp con thakt hai hocnhiulp
-
8/3/2019 giaotrinhJava1234
20/352
Tnh a Hnh
Text Line Picture
How are you?
Hnh ngDisplay
Tnh a hnh l thuc tnh cho php mthnh ng ng x khc nhau trn cc lpkhc nhau
-
8/3/2019 giaotrinhJava1234
21/352
u im ca phng phphng i tng
Chia s trongphm vi mtngdng y mnh s dng li ca cc i tng
khi hinthcnhngngdngmi V lu di, chi phgimngk Gimli v rcri trongbo tr
iuchnh nhanh hn
-
8/3/2019 giaotrinhJava1234
22/352
TNG KT
Tip cn hng i tng a ra mt gii phpton din cho mt bi ton cth
Tru tngd liu l mt tin trnh xc nh vtphp cc tnh cht v cc hnh ng c quan hvimtthcthcth
Lp m tmtthcth, cn itng l mtthc
ththct Constructor v Destructor
Tnh lu tr, bao bcd liu, tnh k tha v a
hnh
-
8/3/2019 giaotrinhJava1234
23/352
Chng 1
Gii thiu ngn ng
lp trnh Java
-
8/3/2019 giaotrinhJava1234
24/352
Gii thiu
S pht trin ca Java
Hng ti ngi dng
Ging vi C / C++
-
8/3/2019 giaotrinhJava1234
25/352
Cc c trng ca Java
ngin Hngitng
clpphncng Mnh Bo mt Phn tn
a lung ng
-
8/3/2019 giaotrinhJava1234
26/352
Cc chng trnh dch
truyn thng
-
8/3/2019 giaotrinhJava1234
27/352
Chng trnh dch Java
-
8/3/2019 giaotrinhJava1234
28/352
28
Java Translation and ExecutionJava source
code
Machinecode
Javabytecode
Javainterpreter
Bytecodecompiler
Javacompiler
-
8/3/2019 giaotrinhJava1234
29/352
Cc loi chng trnh Java Applets
ngdngclp (console Application)
ngdng giao din (GUI Application)
Servlet
ng dng c s d liu
-
8/3/2019 giaotrinhJava1234
30/352
My o Java
L mtphnmmda trn cs my tnho
L tp hp cc lnh logic xc nh hotngca my tnh
c xem nh l mthiu hnh thu nh N thitlplptrutng cho:
Phncng bn di Hiu hnh M bin dch
-
8/3/2019 giaotrinhJava1234
31/352
Qu trnh dch chng trnh Java
Trnh bin dch chuyn m ngun thnh tpcc lnh khng phthuc vo phncng
Trnh thng dch trn mi my chuyn tplnh ny thnh chng trnh thc thi
My oto ra mt mi trngthc thi cclnhbng cch:
Np cc file .class
Qun l b nh
Dnrc
-
8/3/2019 giaotrinhJava1234
32/352
Trnh dch Java
Java Development Kit Java 1.0
Java 1.1
Java 2
..............
-
8/3/2019 giaotrinhJava1234
33/352
B cng c JDK
Trnh bin dch, 'javac'
javac [options] sourcecodename.java
Trnh thng dch, 'java' java [options] classname
Trnh dch ngc, 'javap'
javap [options] classname
Cng c sinh ti liu, 'javadoc'
javadoc [options] sourcecodename.java
-
8/3/2019 giaotrinhJava1234
34/352
Chng trnh tm li - Debug, 'jdb
jdb [options] sourcecodename.javaOR
jdb -host -password [options]
sourcecodename.java
Chng trnh xem Applet ,
'appletviewer appletviewer [options]sourcecodename.java / url
-
8/3/2019 giaotrinhJava1234
35/352
Cc gi chun ca Java java.langGeneral support java.applet - Creating applets for the web java.awt - Graphics and graphical user interfaces
java.io java.utilUtilities java.net - Network communication java.awt.event
java.rmi java.security java.sql
-
8/3/2019 giaotrinhJava1234
36/352
Chng 2
Cc kin thc c bn Cu trc chng trnh ca
ngn ng Java
-
8/3/2019 giaotrinhJava1234
37/352
Cc thnh phn c bn
1. TP K T CA JAVA
2. T KHO
3. TN, LI CH THCH4. CU LNH V DU CHM CU
5. CU TRC CA CHNG TRNH JAVA
6. MT S CHNG TRNH JAVA MU
-
8/3/2019 giaotrinhJava1234
38/352
Tp k t ca java
Mi ngn ng u c xy dng trn b k t. B k tca Java nh sau:+ Cc ch ci in hoa: A, B, C, Y, Z+ Cc ch ci in thng: a, b, c, y, z+ Cc ch s: 0, 1, 2, ,9
+ Cc du cu: , ; : / ? . [ ] { }! ~ @ # $ % ^ & * ( )- + = < >+ Cc du ngn cch khng nhn thy: du cch, du
tab, du xung hng enter+ Du gch ni di _
Ch :+ Java phn bit ch in hoa v ch in thng.+ C th dng cc k t khc nh , , , , , hay
c ting Vit trong chng trnh Java
-
8/3/2019 giaotrinhJava1234
39/352
B t kha ca Java
-
8/3/2019 giaotrinhJava1234
40/352
Tn v Li ch thch
* Tn :- Tn dng xc nh cc i lng khc nhau trongmtchng trnh.- Mi tn c s dng trong chng trnh uphic khai bo.- Tn hpl l dy ktlin nhau, c thgm cc chci (a..,z, A..,Z), cc chs (0..9), ktgchdi (_).- Tnphibtubngch ci hocdugchdi.
- Tn khng c trng vit kho.Vd : Nghiem_x, hoan_doi, y_1, y2,.. l tn hpl.
-
8/3/2019 giaotrinhJava1234
41/352
Tn v Li ch thch* Lich thch :
- Khng c tc dngto ra m cachng trnh, gip ddng trong vic tm kim,kim tra, sachng trnh
- Li ch thch c th c t bt k u trongchng trnh
- Cch ghi li ch thch:
Cch 1 : Ch thch cho nhiu dng
/* li ch thch
--------------*/
Cch 2 : Ch thch cho mt dng
//li ch thch
-
8/3/2019 giaotrinhJava1234
42/352
Cu lnh v Du chm cu
Mt cu lnh thnggmphn m td liu v phnlnh theo quy nhca Java. C hai loi:
+ Cu lnhngin: l nhng lnh khng cha cc
lnh khc : lnh gn, lnhgiphngthc, ...+ Cu lnh cu trc: gm khi lnh, lnh r nhnh,lnhlp
Khilnh l gmnhiulnhct trong du { } Cc cu lnh cch nhaubidu; Duchmphy; dng ngn cch cc lnh,ngha l
cuimilnh,mi khai bo u c chmphy
-
8/3/2019 giaotrinhJava1234
43/352
Cu lnh v Du chm cu
cu lnh
cu lnh n gin
cu lnh cu trc
php gn
li gi phng thc
lnh nhy
khi lnh
lnh la chn
lnh lp
if (...) else ...switch ...
for (...) ...
do ... while ( )while (...) ...
-
8/3/2019 giaotrinhJava1234
44/352
Cu trc mt chng trnh Java
Xc lp thng tin mi trng Khai bo lp i tng (Class)
Cc thnh phn (Tokens): nh danh T kha/ t d phng
K t phn cch Hng (Literals) Ton t
-
8/3/2019 giaotrinhJava1234
45/352
45
Java Program Structurepublic class MyProgram
{
}
public static void main (String[] args)
{
}
// comments about the class
// comments about the method
method headermethod body
-
8/3/2019 giaotrinhJava1234
46/352
Chng trnh Java mu
// This is a simple program called Ex1.java// import java.lang.*;class Ex1
{public static void main(String args[]){
System.out.println(My first program in Java);
}}
-
8/3/2019 giaotrinhJava1234
47/352
Bin dch chng trnh java
..\jdk\bin>javac Ex1.java
..\jdk\bin>java Ex1
Ktqu:My first program in Java
-
8/3/2019 giaotrinhJava1234
48/352
Truyn i s dng lnh
class Ex2{
public static void main(String s[])
{System.out.println(s[0]);System.out.println(s[1]);System.out.println(s[2]);
}}
-
8/3/2019 giaotrinhJava1234
49/352
Truyn i s trong dng lnh
(Tip theo)
-
8/3/2019 giaotrinhJava1234
50/352
Chng trnh tnh cn bc hai ca m
import java.io.*;public class canbachai{
public static void Tinhcb2(int m){
double n=0.0;n=Math.sqrt(m);System.out.println("Can bac hai cua " +m+ "la" +n);
}public static void main(String args[]){
// tao doi tuong de goicanbachai t=new canbachai();t.Tinhcb2(9);t.Tinhcb2(16);
}}
-
8/3/2019 giaotrinhJava1234
51/352
Chng trnh tnh n10
import java.io.*;class Tinh_n_mu10{
public static long Tinh(int n){
long tg=1;for(int i=1;i
-
8/3/2019 giaotrinhJava1234
52/352
Chng trnh kim tra mt s c phi bi ca 5 khng
import java.io.*;public class Boi5
{public static void Kiemtraboi5(int m){
if(m%5!=0)System.out.println(m+"Khong la boi so cua 5");
else System.out.println(m+"La boi cua 5");}public static void main(String[] args){
Boi5 dt1=new Boi5();// tao doi tuong dt1
dt1.Kiemtraboi5(9);Boi5 dt2=new Boi5();// tao doi tuong dt2dt2.Kiemtraboi5(10);
}}
-
8/3/2019 giaotrinhJava1234
53/352
Chng trnh nhn cc k t g vo t bnphm v ch nhn cc k t s.
class Convert{public static void main (String [] args) throws java.io.IOException {System.out.print ("Please enter a number: ");int num = 0;int ch;
while ((ch = System.in.read ()) != '\n')if (ch >= '0' && ch
-
8/3/2019 giaotrinhJava1234
54/352
Kiu d liu
Kiu d liu c s (Primitive Data Types)
Kiu d liu tham chiu (Reference data types)
Kiu d liu c s
-
8/3/2019 giaotrinhJava1234
55/352
Kiu d liu c s 4 kiu integers:
byte, short, int, long 2 kiu s thc:
float, double
1 kiu characters: char
1 kiu boolean :
boolean
-
8/3/2019 giaotrinhJava1234
56/352
Kiu d liu c s
Type
byte
short
intlong
float
double
Storage
8 bits
16 bits
32 bits64 bits
32 bits
64 bits
Min Value
-128
-32,768
-2,147,483,648< -9 x 1018
+/- 3.4 x 1038 with 7 significant digits
+/- 1.7 x 10308 with 15 significant
digits
Max Value
127
32,767
2,147,483,647> 9 x 1018
Ch t
-
8/3/2019 giaotrinhJava1234
57/352
57
Characters Character literals are delimited by single
quotes:'a' 'X' '7' '$' ',' '\n'
The ASCII characters :
uppercase letterslowercase lettersPunctuationdigits
special symbolscontrol characters
A, B, C, a, b, c, period, semi-colon, 0, 1, 2,
&, |, \, carriage return, tab, ...
B l
-
8/3/2019 giaotrinhJava1234
58/352
58
Boolean A boolean value represents a true or
false condition
A boolean can also be used to represent any
two states, such as a light bulb being on oroff
The reserved words true and falseare the only valid values for a boolean type
boolean done = false;
-
8/3/2019 giaotrinhJava1234
59/352
Kiu d liu tham chiu
Mng (Array)
Lp (Class) Interface
-
8/3/2019 giaotrinhJava1234
60/352
Cc ton t
Cc loi ton t: Ton tshc (Arithmetic operators)
Ton tdng Bit (Bitwise operators) Ton t so snh (Relational operators)
Ton t logic (Logical operators)
Ton tiukin (Conditional operator) Ton t gn (Assignment operator)
-
8/3/2019 giaotrinhJava1234
61/352
Ton t s hc
Arithmetic Operators+ Addition (Php cng)
- Subtraction (Php tr)
* Multiplication (Php nhn)
/ Division (Php chia)
% Modulus (Ly s d)
++ Increment (Tng dn)
-- Decrement (Gim dn)
-
8/3/2019 giaotrinhJava1234
62/352
+= Php cng v gn
-= Php tr v gn
*= Php nhn v gn
/= Php chia v gn
%= Php lysd v gn
-
8/3/2019 giaotrinhJava1234
63/352
Ton t so snh
(Relational Operators)== So snh bng
!= So snh khc
< Nh hn> Ln hn
= Ln hn hoc bng
-
8/3/2019 giaotrinhJava1234
64/352
Ton t Bit
(Bitwise Operators)~ Ph nh (NOT)
& V (AND)
| Hoc (OR)
^ Exclusive OR (XOR)
>> Dch sang phi (Shift right)
-
8/3/2019 giaotrinhJava1234
65/352
Ton t Logic
(Logical Operators )&& Logical AND
|| Logical OR
! Logical unary NOT
-
8/3/2019 giaotrinhJava1234
66/352
Ton t iu kin
(Conditional Operator) C php
Biuthc 1 ? Biuthc 2 : Biuthc 3;
Biuthc 1
iukinkiu Boolean trv gi tr True hoc False
Biuthc 2
Trv gi trnuktqucamnh 1 l True Biuthc 3
Trv gi trnuktqucamnh 1 l False
-
8/3/2019 giaotrinhJava1234
67/352
Ton t gn
(Assignment Operator)= Assignment (Php gn)
Gi tr c th c gn cho nhiu bin s
V da = b = c = d = 90;
Th t u tin ca cc ton t
-
8/3/2019 giaotrinhJava1234
68/352
Th t ca cc ton t c th c thay i bngcch sdng cc dungocn trong mnh
Th t Ton t
1. trong ngoc tnh trc
2. Cc ton t n nh +,-,++,--
3. Cc ton t s hc v cc ton t dchnh *,/,+,-,
4. Cc ton t quan h nh >,=,
-
8/3/2019 giaotrinhJava1234
69/352
Operator Precedence What is the order of evaluation in the
following expressions?a + b + c + d + e
1 432
a - b / c + d * e
3 241
a / (b + c) - d % e
2 341
a / (b * (c + (d - e)))
4 123
Assignment Revisited
-
8/3/2019 giaotrinhJava1234
70/352
Assignment Revisited
The assignment operator has a lowerprecedence than the arithmetic operators
First the expression on the right hand
side of the = operator is evaluated
Then the result is stored in the
variable on the left hand side
answer = sum / 4 + MAX * lowest;
14 3 2
Assignment Revisited
-
8/3/2019 giaotrinhJava1234
71/352
Assignment Revisited The right and left hand sides of an
assignment statement can contain the samevariableFirst, one is added to theoriginal value ofcount
Then the result is stored back into count
(overwriting the original value)
count = count + 1;
-
8/3/2019 giaotrinhJava1234
72/352
p kiu (Type Casting)
Kiu d liu ny c chuyn i sang mt kiu dliu khcC php: (kiu_mi)biu_thc;
V d : int m=8, n=2;float x1,x2;x1 = m/n; // x1 nhn gi tr l s nguyn;x2 = m/float(n); // x2 nhn gi tr l sthc;
V d :float c = 34.29675;
int b = (int)c + 10;
-
8/3/2019 giaotrinhJava1234
73/352
Cc k t nh dng xut d liu(Escape Sequences)
Escape
SequenceM t
\n Xung dng mi\r Chuyn con tr n u dng hin hnh
\t Chuyn con tr n v tr dng Tab k tip(k t Tab)
\\ In du\
\ In du nhy n ()
\ In du nhy kp ()
-
8/3/2019 giaotrinhJava1234
74/352
Hng, Bin, Biu thc
* Hng : Hng l i lng c gi tr khng thay i trong
sut qu trnh thc thi ca chng trnh
* Bin : Bin l i lng c gi tr thay i trong sut qu
trnh thc thi ca chng trnh Khai bo bin chng trnh dnh ring vng
nh thch hp cho bin . Mi lnh truy cp n bin l truy cp n gi trca n.
-
8/3/2019 giaotrinhJava1234
75/352
Hng, Bin, Biu thc
* Bin:
C php khai bo bin :datatype identifier [=value][, identifier[=value]...];
Khai bo bin s gm 3 thnh phn: Kiu d liu ca bin s
Tn bin Gi tr ban u ca bin (khng bt buc)
-
8/3/2019 giaotrinhJava1234
76/352
Hng, Bin, Biu thc
* Biu thc :
L mt dy cc ton t v ton hng
+ Ton hng: c th l hng, hm, bin, ...+ Ton t : +, -, *, / , $ , %, & ...
Mi biu thc s c gi tr thuc mt kiud liu no
u tin cao nht cho biu thc con trongcp ngoc n
-
8/3/2019 giaotrinhJava1234
77/352
Khai bo mng
* Mng mt chiu: datatype identifier [ ];
datatype identifier [ ] = new datatype[size];
datatype identifier [ ]= {value1,value2,.valueN};
* Mng hai chiu :
datatype identifier [ ][ ];
Datatype [ ][ ] identifier;
-
8/3/2019 giaotrinhJava1234
78/352
Lp v phng thc(Classes & Methods)
-
8/3/2019 giaotrinhJava1234
79/352
79
Lp trong Javapublic class MyProgram
{
}
// comments about the class
class header
class body
Comments can be added almost anywhere
-
8/3/2019 giaotrinhJava1234
80/352
Lp trong Java
C php khai bo lp (Class)
class tnlp
{kiu tnbin;:
met_datatype tnphngthc([dsthams]):}
-
8/3/2019 giaotrinhJava1234
81/352
Cc lp ni (Nested Classes)
Mt lpcnhngha bn trong mt lpkhc. Lpcgi llpni(Nesting)
Cc kiulpni: Static
Non-static
-
8/3/2019 giaotrinhJava1234
82/352
Phng thc
(Methods in Classes) Phng thc c nh ngha nh l
mt hnh nghocmt tc vthts
caitng C php
access_specifier modifier datatype method_name(parameter_list)
{
//body of method
}
-
8/3/2019 giaotrinhJava1234
83/352
V d v s dng phng thcclass Ex3{
int x = 10; // variablepublic void show( )
{ System.out.println(x);
}public static void main(String args[ ]) {
Ex3 t = new Ex3( ); // tao doi tuong tt.show( ); // method call
Ex3 t1 = new Ex3( ); // tao doi tuong t1t1.x = 20;t1.show( );
}}
-
8/3/2019 giaotrinhJava1234
84/352
Cc ch nh truy xut ca phng
thc (Access specifiers) Cng cng (public)
Ring t (private)
Bo v (protected)
-
8/3/2019 giaotrinhJava1234
85/352
Nhng phng thc c np chng :(Methods Overloading)
Nhng phng thc c np chng : Cng trong mt lp
C cng tn Khc nhau v danh sch tham s
Nhngphngthcc npchng l
mt hnh thc a hnh trong qu trnhbin dch (compile time)
-
8/3/2019 giaotrinhJava1234
86/352
Ph th khi t
-
8/3/2019 giaotrinhJava1234
87/352
Phng thc khi to
(Class Constructors) L mtphng thccbit dng khito gi tr cho cc bin thnh vin ca lpitng
C cng tn vi tn lp v khng c gi trtrv
cgi khi itngcto ra C 2 loi:
Tng minh (Explicit constructors) Ngmnh (Implicit constructors)
-
8/3/2019 giaotrinhJava1234
88/352
Phng thc khi to ca lp dn xut(Derived class constructors)
C cng tn vi lp dn xut (subclass)
Nu lp dn xut mun gi hm
constructor ca lpcs th cu lnhgi hm constructor calpcsphil cu lnh u tin trong hm
constructor calpdnxut Dng t kho super
-
8/3/2019 giaotrinhJava1234
89/352
Cc lnh iu khin
iu khin r nhnh:
Mnhif-else
Mnhswitch-case
Vng lp (Loops):
Vng lpwhile
Vng lpdo-while
Vng lpfor
-
8/3/2019 giaotrinhJava1234
90/352
-
8/3/2019 giaotrinhJava1234
91/352
Lnhswitch-case
C phpswitch (expression)
{
case 'value1': action1 statement(s);
break;
case 'value2': action2 statement(s);
break;
:
:case 'valueN': actionN statement(s);
break;
default: default_action statement(s);
}
-
8/3/2019 giaotrinhJava1234
92/352
-
8/3/2019 giaotrinhJava1234
93/352
Lnh lp do-while
C php
do
{action statements;:
:}while(condition);
-
8/3/2019 giaotrinhJava1234
94/352
Vng lp for
C php
for(initialization statements ; condition ; increment statements)
{
action statements;
:
:
}
-
8/3/2019 giaotrinhJava1234
95/352
Chng 3
Gi & Interface
(Packages & Interfaces)
-
8/3/2019 giaotrinhJava1234
96/352
Gii thiu Nhng thnh phn c bn ca chng trnh Java:
Gi (Packages)
Giao din (Interfaces)
Nhng phn ca mt chng trnh Java:
Lnh khai bo gi(package )
Lnhchnh gi c dng (Lnh import)
Khai bo lp public (mt file java chcha 1 lp public
class) Cc lp khc (classes private to the package)
Tp tin ngun Java c thchattchocmtvi trong s cc phn trn.
-
8/3/2019 giaotrinhJava1234
97/352
Interfaces
Interface chnh l lp abstract thun tu
Khai bo nhng phng thc m lp s dng
Trong Java 1 lp ch c th dn xut t 1 lpduy nht ti cng mt thi im, nhng cth dn xut cng lc nhiu Interface
Trong Interface khng cha nhng phng
thc c th (concrete methods) interface cn phi c implements.
-
8/3/2019 giaotrinhJava1234
98/352
Cc bc to interface
nh ngha Interface Bin dch Interface
Implements Interface
Tnh cht ca interface:
Ttcphngthc trong interface phi lpublic. Cc phng thc phi c nh ngha
trong lpdnxut interface .
-
8/3/2019 giaotrinhJava1234
99/352
-
8/3/2019 giaotrinhJava1234
100/352
-
8/3/2019 giaotrinhJava1234
101/352
Nhng lu khi to gi:
-
8/3/2019 giaotrinhJava1234
102/352
Nhnglu khi to gi: M ngun phibtubnglnh package
M ngunphinm trong cng thmc mang tnca gi
Tn gi nn btubng k tthng (lower case) phn bitgia tn lpitng v tn gi
Nhng lnh khc phivit pha di dng khai bogi l mnh import, k n l cc lnh nhnghalpitng
Nhng lpi tng trong gi cnphic bin
dch. chng trnh Java c th s dng nhng gi
ny, ta phiimport gi vo trong m ngun
-
8/3/2019 giaotrinhJava1234
103/352
Import gi (Importing packages):
C 2 cch:
Xc nh lp hoc interface ca gi cnc import.
- Hoc c th import ton b gi
vd : import java.util.Vector;import java.util.*;
Cc bc to ra gi
-
8/3/2019 giaotrinhJava1234
104/352
Cc bc to ra gi
(Package) Khai bo gi Import nhng gi chun cn thit
Khai bo v nh ngha cc lp itng c trong gi
Lu thnh tp tin .java, v bin dch
nhng lp i tng c nhngha trong gi.
S d h i d i d h
-
8/3/2019 giaotrinhJava1234
105/352
S dng nhng gi do ngi dng nhngha (user-defined packages)
M nguncanhngchng trnh ny phicng th mc ca gi do ngi dng nhngha. Nu khng ta phithitlpngdn.
nhng chng trnh Java khc s dngnhng gi ny, import gi vo trong m ngun
Import nhnglpitngcn dng
Import ton b gi To tham chiunnhng thnh vin ca gi
-
8/3/2019 giaotrinhJava1234
106/352
Thit lp ng dn - xc lp CLASSPATH
L danh sch cc th mc, gip chovic tm kim cc tp tin lpitng
tngng Nn xc lp CLASSPATH trong lc
thc thi (runtime), v nhvy n s xc
lp ng dn cho qu trnh thc thihin hnh
Gi v iu khin truy xut
-
8/3/2019 giaotrinhJava1234
107/352
Gi v iu khin truy xut(Packages & Access Control)
-
8/3/2019 giaotrinhJava1234
108/352
Gi java.lang
Gi java.lang c import mc nh.
Nhng lp Wrapper cho cc kiu dliu nguyn thy:
-
8/3/2019 giaotrinhJava1234
109/352
Lp String
Phng thc khi to (Constructor): String str1 = new String();
String str2 = new String(HelloWorld); char ch[ ] = {A,B,C,D,E};
String str3 = new String(ch);
String str4 = new String(ch,0,2);
-
8/3/2019 giaotrinhJava1234
110/352
String Pool
String Pool i din cho tt c cc kt c to ra trong chng trnh
Khi nimString Pool
S
-
8/3/2019 giaotrinhJava1234
111/352
Nhng phng thc ca lp String
charAt( )// startsWith() endsWith( )
copyValueOf( ) toCharArray( ) indexOf( ) toUpperCase( )
toLowerCase( ) trim( ) equals( )
-
8/3/2019 giaotrinhJava1234
112/352
-
8/3/2019 giaotrinhJava1234
113/352
Lp java.lang.Math
abs()
ceil()// lam tron tren
floor()// lam tron duoi max()
min()
round()
random()
sqrt()
sin() cos()
tan()
-
8/3/2019 giaotrinhJava1234
114/352
Lp Runtime
ng gi (Encapsulates) mi trngthc thi Dng qun l bnh, v thi hnh nhng
tin trnh cng thm
Phngthc: exit(int) freeMemory( ) getRuntime( )
gc( ) totalMemory( ) exec(String)
Lp System
-
8/3/2019 giaotrinhJava1234
115/352
Cung cpnhnglungchunnhnhp (Input), xut(Output) v cc lungli(ErrorStreams)
Cung cpkhnng truy xutnnhng thuc tnhcahthngthc thi Java, v nhngthuc tnh mitrngnh phin bn,ngdn, nh cung cp
Phngthc:
exit(int)
gc()
getProperties()
setProperties() currentTimeMillis()
arraCopy(Object, int, Object, int, int)
-
8/3/2019 giaotrinhJava1234
116/352
L Obj
-
8/3/2019 giaotrinhJava1234
117/352
Lp Object
L lp cha ti cao ca tt c cc lp Phng thc:
equals(Object) finalize()
notify()
notifyAll()
toString() wait()
i
-
8/3/2019 giaotrinhJava1234
118/352
Gi java.util
Cung cp phn ln nhng lp Javahu dng v thng xuyn cn ntrong hu ht cc ng dng
Giithiunhnglptrutng sau: Hashtable
Random
Vector StringTokenizer
-
8/3/2019 giaotrinhJava1234
119/352
Nhng phng thc ca lp
-
8/3/2019 giaotrinhJava1234
120/352
Nhng phng thc ca lpHashtable
clear()
done()
contains(Object) containsKey(Object)
elements()
get(Object key)
isEmpty()
keys()
put(Object, Object)
rehash() remove(Objectkey)
size()
toString()
-
8/3/2019 giaotrinhJava1234
121/352
Nhng phng thc ca lp
-
8/3/2019 giaotrinhJava1234
122/352
Nhng phng thc ca lpRandom
nextDouble()
nextFloat()
nextGaussian() nextInt()
nextLong()
setSeed(long)
L V t
-
8/3/2019 giaotrinhJava1234
123/352
Lp Vector
Cung cp kh nng co gin cho mng khithm phnt vo mng
Lutrnhng thnh phncakiu Object
Mt Vector ring r c th lu tr nhngphnt khc nhau, l nhng instance canhnglp khc nhau
Phngthckhito (Constructors): Vector(int) Vector(int, int) Vector()
Nhng phng thc ca lp
-
8/3/2019 giaotrinhJava1234
124/352
Nhng phng thc ca lpVector
addElement(Object) capacity( ) clone( ) contains(Object) copyInto(Object [ ]) elementAt(int) elements( ) ensureCapacity(int) firstElement( )
indexOf(Object) indexOf(Object, int) insertElementAt(Object,
int)
isEmpty( ) lastElement( ) lastIndexOf(Object) lastIndexOf(Object, int) removeAllElements( )
removeElement(Object) removeElementAt(int) setElementAt(Object,
int)
setSize(int) size( ) toString( ) trimToSize( )
L St i T k i
-
8/3/2019 giaotrinhJava1234
125/352
Lp StringTokenizer
C thc dng tch mtchui thnh nhngthnh phncu thnh ca n (constituent tokens)
K t phn cch c th c ch nh khi mt i
tngStringTokenizerckhito Phngthckhito (Constructors):
StringTokenizer(String)
StringTokenizer(String, String)
StringTokenizer(String, String, Boolean) Lp StringTokenizer s dng giao din lit k
(enumeration interface)
Nhng phng thc ca lp
-
8/3/2019 giaotrinhJava1234
126/352
g p g t c ca pStringTokenizer
countTokens( )
hasMoreElements( )
hasMoreTokens( ) nextElement( )
nextToken( )
nextToken(String)
-
8/3/2019 giaotrinhJava1234
127/352
Chng 4
X l bit l
Gii thi bit l
-
8/3/2019 giaotrinhJava1234
128/352
Gii thiu v bit l
L mtkiulicbit N xy ra trong thi gian thc thi on
lnh Thng thng cc iu kin thc thi
chng trnh gy ra bitl Nu cc iukin ny khng cx
l, th vic thc thi c thkt thc tngt
-
8/3/2019 giaotrinhJava1234
129/352
X l bit l
-
8/3/2019 giaotrinhJava1234
130/352
X l bit l
Khi mtbitlxy ra, itngtngngvibitlscto ra.
itng ny sau ctruyntiphngthc
ni m bitlxy ra. itng ny cha cc thng tin chi titvbitl.
Thng tin ny c thnhnc v x l.
Lp throwable m Java cung cp l lp trn nht
calpbitl.
-
8/3/2019 giaotrinhJava1234
131/352
Cu trc ca m hnh x l bit l
-
8/3/2019 giaotrinhJava1234
132/352
Cu trc ca m hnh x l bit l
C phptry { . }catch(Exception e1) { . }catch(Exception e2) { . }catch(Exception eN) { . }finally { . }
M hnh Catch and Throw nng cao
-
8/3/2019 giaotrinhJava1234
133/352
M hnh Catch and Throw nng cao
Ngi lp trnh ch quan tm ti cc likhi cnthit.
Mt thng bo li c thc cung cptrong exception-handler.
Khi try v catch
-
8/3/2019 giaotrinhJava1234
134/352
Khi try v catch
csdng thchin trong mhnh catch and throwcax l bitl.
Khi lnh try gm tp hp cc lnhthc thi
Mthocnhiukhilnhcatch c thtip theo sau mtkhilnhtry
Cc khi lnh catch ny bt bit ltrong khilnhtry.
Khi lnh try v catch (tt)
-
8/3/2019 giaotrinhJava1234
135/352
Khi lnh try v catch (tt)
btbtkloibitl no, ta c thch rakiubitl l Exceptioncatch(Exception e)
Khi bit lb bt khng bit thuckiu no,chng ta c th s dng lp Exception btbitl.
Li s c truyn thng qua khi lnh try
catch cho ti khi chng bt gp mt catchtham chiuti n, nu khng chng trnh sbkt thc
-
8/3/2019 giaotrinhJava1234
136/352
Khi lnh cha nhiu Catch
-
8/3/2019 giaotrinhJava1234
137/352
(tt) Khi s dng cc try lng nhau, khi try
bn trong cthc thi trc. Bt k bit l no b chn trong khi lnh
try s b bt trong khi lnh catch tipngay sau. Nukhilnhcatch thch hp khng c
tm thy, th cc khi catch ca khi try
bn ngoi sc xem xt Ngcli, Java Runtime Environment sx
l bitl.
-
8/3/2019 giaotrinhJava1234
138/352
-
8/3/2019 giaotrinhJava1234
139/352
-
8/3/2019 giaotrinhJava1234
140/352
-
8/3/2019 giaotrinhJava1234
141/352
-
8/3/2019 giaotrinhJava1234
142/352
-
8/3/2019 giaotrinhJava1234
143/352
Danh sch cc bit l (tt)
-
8/3/2019 giaotrinhJava1234
144/352
Danh sch cc bit l (tt)
NumberFormatException
AWTException
IOException FileNotFoundException
EOFException
NoSuchMethodException InterruptedException
-
8/3/2019 giaotrinhJava1234
145/352
-
8/3/2019 giaotrinhJava1234
146/352
-
8/3/2019 giaotrinhJava1234
147/352
AWT bao gm cc lp interfaces v cc gi
-
8/3/2019 giaotrinhJava1234
148/352
AWT bao gm cc lp, interfaces v cc gikhc
Components
-
8/3/2019 giaotrinhJava1234
149/352
Components
Ttc cc thnh phncu to nn chngtrnh GUI cgi l component.
VdContainers,
textfields, labels, checkboxes, textareas
scrollbars, scrollpanes, dialog
-
8/3/2019 giaotrinhJava1234
150/352
-
8/3/2019 giaotrinhJava1234
151/352
Panels
-
8/3/2019 giaotrinhJava1234
152/352
Panels
L cc vng cha trong mtcas.
Hin th trong mt ca s m trnh duythoc appletviewer cung cp v khng cngvin.
c s dng nhm mt s cc thnhphn
Mt panel khng th nhn thy v th chngta cnphi thm n vo frame.
-
8/3/2019 giaotrinhJava1234
153/352
Cc Components khc
-
8/3/2019 giaotrinhJava1234
154/352
Cc Components khc
Vd
textfields, labels, checkboxes, textareas
scrollbars, scrollpanes, dialog
Label
-
8/3/2019 giaotrinhJava1234
155/352
Label
c dng hin th chui (String) Cc hm todng:
Label( )
Label(String labeltext) Label(String labeltext, int alignment)
Cc phng thc: setFont(Font f)
setText(String s) getText( )
TextField
L iu khin text cho php hin th text hoc
-
8/3/2019 giaotrinhJava1234
156/352
L iukhin text, cho php hinth text hoc
cho user nhpdliu vo. Cc hm dng: TextField( )
TextField(int columns)
TextField(String s) TextField(String s, int columns)
Cc phngthc: setEchoChar(char) setText(String s)
getText( )
setEditable(boolean)
isEditable( )
-
8/3/2019 giaotrinhJava1234
157/352
TextArea (tt)
-
8/3/2019 giaotrinhJava1234
158/352
TextArea (tt)
Cc hm dng: TextArea( )
TextArea(int rows, int cols )
TextArea(String text)
TextArea(String text, int rows, int cols)
-
8/3/2019 giaotrinhJava1234
159/352
Button
-
8/3/2019 giaotrinhJava1234
160/352
Button
Cc nt n l cch dnht ly ccskincangi dng.
Cc hm todng: Button( )
Button(String text)
-
8/3/2019 giaotrinhJava1234
161/352
-
8/3/2019 giaotrinhJava1234
162/352
-
8/3/2019 giaotrinhJava1234
163/352
FlowLayout
-
8/3/2019 giaotrinhJava1234
164/352
FlowLayout l layout manager mcnh chocc applet v cc panel
Vi FlowLayout cc component s c
spxpt gc tri trn n gc phidica mn hnh theo tng hng. Cc constructor:
FlowLayout mylayout = new FlowLayout();FlowLayout exLayout = newflowLayout(FlowLayout.RIGHT);
BorderLayout BorderLayout mc nh cho Window,
F Di l
-
8/3/2019 giaotrinhJava1234
165/352
Frame v Dialog
Trnh qun l ny c thb tr containerthnh 5 vng, NORTH, EAST, SOUTH,WEST v CENTER.
V d: thm mt thnh phn vovng North ca containerButton b1= new Button(NorthButton);
setLayout(new BorderLayout( ));add(b1, BorderLayout.NORTH);
CardLayout
-
8/3/2019 giaotrinhJava1234
166/352
y
C th lu tr mt danh sch cc kiulayout khc nhau
Mi layout c xem nhmtth (card)
Ththng l itng Panel Mt thnh phnc lpnh button siukhin cc th ct pha trn nht
Cc bcto CardLayout: B tr layout ca panel chnh l CardLayout Lnlt thm cc panel khc vo panel chnh
-
8/3/2019 giaotrinhJava1234
167/352
GridBagLayout
-
8/3/2019 giaotrinhJava1234
168/352
B tr cc thnh phn mt cch chnhxc Cc thnh phn khng cn c cng kch
thc Cc thnh phncspxp trong mt
licha cc dng v cc ct Th t t cc thnh phn khng tun
theo hng t tri-sang-phi v trn-xung-di Hm constructor
GridBagLayout gb = new GridBagLayout( );
-
8/3/2019 giaotrinhJava1234
169/352
-
8/3/2019 giaotrinhJava1234
170/352
-
8/3/2019 giaotrinhJava1234
171/352
-
8/3/2019 giaotrinhJava1234
172/352
LpGridLayout
-
8/3/2019 giaotrinhJava1234
173/352
Lp GridLayout cung cp cc hm to lp sp hng cc thnh phn giao
din:GridLayout()
GridLayout(int rows, int columns)
GridLayout(int rows, int columns, int hoiongap, int verticalgap)
To ra mt li hnh chnht c rows columns c khong cch gia cchng cc ct lhorizongap, verticalgap. Mt trong hai isrowshoccolumnsc th l 0, nhng khng thc hai, GridLayout(1,0) l to ra li c mt hng.
-
8/3/2019 giaotrinhJava1234
174/352
//To ra li hnh chnht c 4 v tlayout spxp cc thnh phn //xLabel, xInput, yLabel, yInput
-
8/3/2019 giaotrinhJava1234
175/352
, p , y , y p
setLayout(new GridLayout(2,2));
add(xLabel); //t xLabel vo thnht
add(xInput); //t xInput vo thhai
add(yLabel); //t yLabel vo thba
add(yInput); //t yInput vo tht
}
}
-
8/3/2019 giaotrinhJava1234
176/352
-
8/3/2019 giaotrinhJava1234
177/352
Scrollbar sb1=new Scrollbar(Scrollbar.VERTICAL,0,10,-50,100);
Scrollbar sb2=new Scrollbar(Scrollbar VERTICAL 0 10 50 100);
-
8/3/2019 giaotrinhJava1234
178/352
Scrollbar sb2=new Scrollbar(Scrollbar.VERTICAL,0,10,-50,100);
setLayout(new BorderLayout());
add(nutVe, BorderLayout.NORTH);//tnutVe trn (NORT)
add(msg, BorderLayout.SOUTH); //tmsg di (SOUTH)
add(vungVe,BorderLayout.CENTER);//tvungVe gia (CENTER)
add(sb1, BorderLayout.WEST); //tsb1 bn tri (WEST)
add(sb2, BorderLayout.EAST); //tsb2 bn phi (EAST)
}
}
-
8/3/2019 giaotrinhJava1234
179/352
-
8/3/2019 giaotrinhJava1234
180/352
X l cc s kin
-
8/3/2019 giaotrinhJava1234
181/352
Cc bccn tun thsdng m hnhEvent Listener:
Ci t Listener tngng
Nhn din c tt c cc thnh phn to skin
Nhndincttc cc skincx l
Ci t cc phngthcca listener, v vit cc
on m x l skin trong cc phngthc
Interface nh ngha cc phng thc khcnhau x l miskin
-
8/3/2019 giaotrinhJava1234
182/352
-
8/3/2019 giaotrinhJava1234
183/352
-
8/3/2019 giaotrinhJava1234
184/352
-
8/3/2019 giaotrinhJava1234
185/352
c/ItemEventCc thnh phnca GUI gy ra cc skinv cc mcgm c:
Ch kb khi t thi h ki t Ch kb th i
-
8/3/2019 giaotrinhJava1234
186/352
Checkbox - khi trng thi cahpkim tra Checkbox thay i
CheckboxMenuItem - khi trng thi cahpkim tra Checkbox ngvimccathcn thay i,Choice - khi mtmc trong danh sch cchnhocbloibList - khi mtmc trong danh sch cchnhocbloib.
LpItemEvent c hm:Object getItem()
Cho liitngcchn hay vabloib.d/ TextEventCc thnh phnca GUI gy ra cc skinvtextgm c:
TextArea - khi kt thc bngnhn nt ENTER,TextField - khi kt thc bngnhn nt ENTER.
Kiuskin Ngun gy ra
s kinCc hm n nhn v di
di cc s kinGiao din Listener tng
ng
-
8/3/2019 giaotrinhJava1234
187/352
AcitionEvent
AdjustmentEvent
ItemEvent
TextEvent
ButtonListTextFieldScrollbar
ChoiceCheckboxCheckboxMen
uItemListTextAreaTexField
addComponentlistener
remove ActiontListener
addAdjustmentListenerremoveAdjustmentListener
addItemListenerremoveItemListener
addTexListener
removeTextListener
AcitionListener
AdjustmentListener
ItemListener
TextListener
2. Cc s kin mc thpa/ ComponentEvent
Skin ny xuthin khi mt thnh phnb che giu,hinth hay thay ili kch thc Lp ComponentEvent c hm:
-
8/3/2019 giaotrinhJava1234
188/352
li kch thc. LpComponentEvent c hm:
Component getComponent()Cho liitng tham chiukiuComponent.b/ ContainerEvent
Skin ny xuthin khi mt thnh phncb sung hay bloibkhiphntcha (Container).
c/ FocusEvent
Skin ny xuthin khi mt thnh phnnhncmt nt tbn phm.d/ KeyEventLpKeyEvent l lp con calptrutngInputEvent csdngxl cc skin lin quan n cc phm ca bn phm.
int getKeyCode()i vi cc s kin KEY_PRESSED hoc KEY_RELEASED, hm ny
csdngnhnli gi tr nguyn tngngvi m ca phm trnbn phm.
char getKeyChar()ivi cc skin KEY_PRESSED, hm ny csdngnhnli gitr nguyn, m Unicodetngngvi k tca bn phm.
-
8/3/2019 giaotrinhJava1234
189/352
-
8/3/2019 giaotrinhJava1234
190/352
Vd: Xy dngngdng c giao dinha GUI
-
8/3/2019 giaotrinhJava1234
191/352
import java.awt.*;import java.awt.event.*;import java.applet.*;interface IGeometryConstants { // nh ngha Interface gm cc hng cho
t
-
8/3/2019 giaotrinhJava1234
192/352
192
trc
int SQUARE = 0;int CIRCLE = 1;int ELLIPSE = 2;String[] shapeNames = {"Square", "Circle" , "Ellipse"};int SMALL = 0;int MEDIUM = 1;int LARGE = 2;String[] sizeNames = {"Small", "Medium" , "Large"};
}public class DemoApplet extends Applet implements
IGeometryConstants {// Khai bo mtPanelcha cc Checkboxtngngvi cc loi hnh shapePanel shapePanel;// Khai bo mtPanelCheckboxGroup shapeCBG; // Khai bo mtCheckboxGroupCheckbox squareCB; // Khai bo mtCheckboxngvi hnh vungCheckbox circleCB; // Khai bo mtCheckboxngvi hnh trnCheckbox ellipseCB; // Khai bo mtCheckboxngvi hnh ellipse// Khai bo mtPanelcha cc Labelv cc TextFieldPanel xyPanel; // Khai bo mt Panel xyPanelLabel xLabel; // Khai bo mt Label xLabelTextField xInput; // Khai bo mt TextField xInputLabel yLabel; // Khai bo mt Label yLabel
TextField In ut; // Khai bo t TextField In ut
// Khai bo mtPanelcha cc Label, Choice v CheckboxPanel sizePanel;Label sizeLabel;Ch i i Ch i
-
8/3/2019 giaotrinhJava1234
193/352
Choice sizeChoices;
Checkbox fillCB;// Khai bo mtPanel chashape, coordinates, size and fill Panel leftPanelPanel leftPanel;// Khai bo mtPanel chaMassage display, draw button and canvasPanel rightPanel;Button drawButton;DrawRegion drawRegion;TextField messageDisplay;
// nhnghali hm init()public void init() {
makeShapePanel();makeXYPanel();makeSizePanel();makeLeftPanel();makeRightPanel();
// Gi hm x l cc skinaddListeners();//a cc Panelvo hthngadd(leftPanel);add(rightPanel);
}
// a cc thnh phnv cc shapevo shapePanelvoid makeShapePanel() {shapePanel = new Panel();
-
8/3/2019 giaotrinhJava1234
194/352
p ();shapeCBG = new CheckboxGroup();
squareCB = new Checkbox(shapeNames[SQUARE], shapeCBG, true);circleCB = new Checkbox(shapeNames[CIRCLE], shapeCBG, false);ellipseCB = new Checkbox(shapeNames[ELLIPSE], shapeCBG, false);shapePanel.setLayout(new FlowLayout());shapePanel.add(squareCB);shapePanel.add(circleCB);shapePanel.add(ellipseCB);
}//a cc thnh phnv cc x,y coordinatesvo xyPanelvoid makeXYPanel() {
xyPanel = new Panel();xLabel = new Label("X Coordinate:");yLabel = new Label("Y Coordinate:");xInput = new TextField(5);yInput = new TextField(5);xyPanel.setLayout(new GridLayout(2,2));xyPanel.add(xLabel);xyPanel.add(xInput);xyPanel.add(yLabel);xyPanel.add(yInput);
}
//a cc thnh phnvsizevfillvo sizePanelvoid makeSizePanel() {
sizePanel = new Panel();
-
8/3/2019 giaotrinhJava1234
195/352
sizeLabel = new Label("Size:");
sizeChoices = new Choice();sizeChoices.add(sizeNames[0]);sizeChoices.add(sizeNames[1]);sizeChoices.add(sizeNames[2]);fillCB = new Checkbox("Fill", false);sizePanel.setLayout(new FlowLayout());
sizePanel.add(sizeLabel);sizePanel.add(sizeChoices);sizePanel.add(fillCB);
}//a cc thnh phn vo leftPanelvoid makeLeftPanel(){
leftPanel = new Panel();
leftPanel.setLayout(new BorderLayout());leftPanel.add(shapePanel, "North");leftPanel.add(xyPanel, "Center");leftPanel.add(sizePanel, "South");}
//a cc thnh phn vo rightPanelvoid makeRightPanel(){
rightPanel = new Panel();
-
8/3/2019 giaotrinhJava1234
196/352
rightPanel new Panel();
messageDisplay = new TextField("MESSAGE DISPLAY");messageDisplay.setEditable(false);messageDisplay.setBackground(Color.yellow);
drawButton = new Button("Draw");drawButton.setBackground(Color.lightGray);
drawRegion = new DrawRegion();drawRegion.setSize(150, 150);drawRegion.setBackground(Color.white); rightPanel.setLayout(new BorderLayout());rightPanel.add(drawButton, BorderLayout.NORTH);
rightPanel.add(messageDisplay, BorderLayout.SOUTH);rightPanel.add(drawRegion, BorderLayout.CENTER);}
// X l cc skintngngvi cc victhchin trn cc thnh phnhavoid addListeners(){
drawButton addActionListener(new ActionListener(){
-
8/3/2019 giaotrinhJava1234
197/352
drawButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){int shape, xCoord, yCoord, width;messageDisplay.setText("");if(squareCB.getState())
shape = SQUARE;else if (circleCB.getState())
shape = CIRCLE;else if (ellipseCB.getState())
shape = ELLIPSE;else {messageDisplay.setText("Unknow shape");return;
}try{
xCoord = Integer.parseInt(xInput.getText());
yCoord = Integer.parseInt(yInput.getText());}catch(NumberFormatException e){messageDisplay.setText("Illegal coordinate");
return;}
switch(sizeChoices.getSelectedIndex()){
case SMALL: width = 30; break;case MEDIUM: width = 60; break;case LARGE: width = 120; break;
-
8/3/2019 giaotrinhJava1234
198/352
198
default:
messageDisplay.setText("Unknow size");return;
}
messageDisplay.setText("Drawing..."+shapeNames[shape]);
drawRegion.doDraw(shape,xCoord,yCoord, fillCB.getState(),width);}
});xInput.addTextListener(new TextListener(){
public void textValueChanged(TextEvent evt){checkTF(xInput);
}});yInput.addTextListener(new TextListener(){
public void textValueChanged(TextEvent evt){checkTF(yInput);
}});
}// Kt thc hm addListener()
void checkTF(TextField tf){
messageDisplay.setText("");try{
Integer.parseInt(tf.getText());
-
8/3/2019 giaotrinhJava1234
199/352
Integer.parseInt(tf.getText());}catch(NumberFormatException e){messageDisplay.setText("Illegal coordinate ");
}}
}//nhnghalpDrawRegion mrnglpCanvasvsdng cc hng giaodinclass DrawRegion extends Canvas implements IGeometryConstants{private int shape,xCoord, yCoord;
private boolean fillFlag;private int width;public DrawRegion(){
setSize(150, 150);setBackground(Color.white);}
//nhngha hm doDraw() v
public void doDraw(int h, int x, int y, boolean f, int w){this.shape = h;this.xCoord = x;this.yCoord = y;this.fillFlag = f;this.width = w;repaint();
}
public void paint(Graphics g){
switch(shape){case SQUARE:
-
8/3/2019 giaotrinhJava1234
200/352
if(fillFlag) g.fillRect(xCoord, yCoord, width,width);else g.drawRect(xCoord, yCoord, width,width);
break;case CIRCLE:if(fillFlag) g.fillOval(xCoord, yCoord, width,width);else g.drawOval(xCoord, yCoord, width,width);
break;case ELLIPSE:if(fillFlag) g.fillOval(xCoord,yCoord,width,width/2);else g.drawOval(xCoord, yCoord, width,width/2);
break;}
}}
Menus
-
8/3/2019 giaotrinhJava1234
201/352
Cc loi menu : Pull-down
Pop-up menu
Ch c tht cc thanh menubar votrong cc Frame m thi
Cc thnh phnca menu:
Menubar MenuItems
Thnh phnMenuLpabstract class MenuComponent l lpcscho ttc cc lpthchinnhngvn lin quan nthcn (menu).
LpMenuBarci t thanh thcn v trong c thcha cc thcn pull-down.LpMenuItem nhnghatngmccathcn.
-
8/3/2019 giaotrinhJava1234
202/352
202
p g g
LpMenu ci t cc thcnpull-down c tha vo mtthcnbtk.LpPopUpMenu biudin cho thcn pop-up .LpCheckboxMenuItem cha cc mccchnkim tra trong cc mc.Victolpmt thanh thcn cho mtframe cthchinnhsau:1. To ra mtthanh thcn,MenuBar thanhThDon = new MenuBar();
2. To ra mtthcn,Menu thucDon = new Menu(Cac loai banh);
3. To ra cc mc trong thcn v a vo thcn,MenuItem muc = new MenuItem(Banh day);thucDon.add(muc); //amucvo thucDon
4. a cc thcn vo thanh thcn,thanhThDon.add(thucDon); //athucDonvo thanhThDon
5. To ra mtframe v a thanh thcn vo frame .Frame frame = new Frame(Cac mon an);frame.add(thanhThDon); //athanhThDonvo frame
Thnh phnMenuVd: Tolp v sdng cc thcn.import java.awt.*;
import java.applet.*;
-
8/3/2019 giaotrinhJava1234
203/352
public class MenuDemo extends Applet{public static void main(String args[]){
MenuBar thanhThDon = new MenuBar();
Menu thucDon = new Menu("Cac loai banh");
MenuItem b1 = new MenuItem("Banh day");
thucDon.add(b1);
MenuItem b3 = new MenuItem("Banh khoai");
thucDon.add(b3);
thucDon.addSeparator();// To ra mt thanh phn cchMenuItem b4 = new MenuItem("Banh gio");
thucDon.add(b4);
thucDon.add(new CheckboxMenuItem("Banh ran"));thanhThDon.add(thucDon);
Frame frame = new Frame("Cac mon an");
frame.setMenuBar(thanhThDon);
frame.pack();frame.setVisible(true);}
}
-
8/3/2019 giaotrinhJava1234
204/352
Chng VI
Applets
-
8/3/2019 giaotrinhJava1234
205/352
Cu trc applet
-
8/3/2019 giaotrinhJava1234
206/352
nhnghamt applet tbnskinxy ratrong qu trnh thc thi
ivimiskincnhnghabimt
phngthctngng. Cc phngthc: init( ) start( )
stop( ) destroy( )
Cc phngthc khc:
-
8/3/2019 giaotrinhJava1234
207/352
paint( ) repaint( )
showStatus( )
getAppletInfo( )
Cc phng thc init(), start(), stop(),destroy(), and paint() cthakt applet.
Mi phng thc ny mc nh l rng. V
th cc phng thc ny phi c npchng.
Bin dch v thc thi applet
-
8/3/2019 giaotrinhJava1234
208/352
Mt applet th c bin dch theo c phpsau
javac Applet1.java
thc thi mt applet, tomttp tin HTMLc sdngth applet Th applet c hai thuc tnh:
Width Height
truyn tham s ti applet, s dng thparam, v tip theo l thvalue
Applet c th c thc thi bng appletviewer
im khc bit gia applet v mt ng dng Cc ngdng khi thc thi phisdng trnh
bin dch Java, trong khi cc applets thc thic trn bt k trnh duyt no m h tr
-
8/3/2019 giaotrinhJava1234
209/352
c trn btk trnh duyt no m h trJava, hoc s dng AppletViewer trongJDK.
Mt ng dng bt u vi phng thcmain(). Cn i vi applet th khng sdngphngthc ny
MtngdngsdngSystem.out.println()hinth, trong khi mt applet th sdngcc phngthccalp Graphics.
Nhng hn ch v bo mttrong applet
-
8/3/2019 giaotrinhJava1234
210/352
g pp Khng thchocvit cc tp tin trn h
thngtp tin cangisdng
Khng th giao tipvimt site trn internet.
M ch giao tip vi mt dch v trn trangweb c applet.
Khng thchybtkchng trnh no trnhthngcangic
Khng th load bt k chng trnh noclu trn hthngcangisdng
Chu trnh sng ca applet
-
8/3/2019 giaotrinhJava1234
211/352
Truyn tham s ti mt applet
-
8/3/2019 giaotrinhJava1234
212/352
truyn tham s, s dng PARAMtrong th HTML
V d
Lp ha
-
8/3/2019 giaotrinhJava1234
213/352
c cung cpbi gi AWT
Cung cpmttphp cc phngthcvnh sau:
Oval Rectangle
Square
Circle
Lines
Text in different fonts
Graphical Background
-
8/3/2019 giaotrinhJava1234
214/352
Cc phngthcvnn : getGraphics( )
repaint( )
update(Graphics g)
paint(Graphics g)
Hin th chui, k t v bytes Phng thcvhochin thmt chui
trn frame
-
8/3/2019 giaotrinhJava1234
215/352
C php drawString(String str, int xCoor, int yCoor);
Phng thcvhochin th cc k ttrn frame
C php drawChars(char array[ ], int offset, int length, int xCoor, int yCoor);
Phng thcvhochin th bytes trnframe
C php drawBytes(byte array[ ], int offset, int length, int xCoor, int yCoor);
V cc hnh th Phng thc c s dng v
ngthngnh sau
-
8/3/2019 giaotrinhJava1234
216/352
C php drawLine(int x1, int y1, int x2, int y2);
Cc phng thccsdngv
ng trn nh sauC php drawOval(int xCoor, int yCoor, int width, int height);
setColor(Color c);
fillOval(int xCoor, int yCoor, int width, int height);
Phng thc s dng v hnhvung:
C php
-
8/3/2019 giaotrinhJava1234
217/352
C php drawRect(int xCoor, int yCoor, int width, int
height);
fillRect(int xCoor, int yCoor, int width, intheight);
Cc phng thc c s dng v hnh vung c gc trn
C php drawRoundRect(int xCoor, int yCoor, int width, int height, intarcWidth, int arcHeight);
fillRoundRect (int xCoor, int yCoor, int width, int height, intarcWidth, int arcHeight);
3D Rectangles & Arcs
-
8/3/2019 giaotrinhJava1234
218/352
Cc phng thccsdngvhnh 3D C php
draw3DRect(int xCoord, int yCoord, int
width, int height, boolean raised);
drawArc(int xCoord, int yCoord, int width,int height, int arcwidth, int archeight);
fillArc(int xCoord, int yCoord, int width, intheight, int arcwidth, int archeight);
Drawing PolyLines
-
8/3/2019 giaotrinhJava1234
219/352
Cc phng thc c s dng vnhiu onthngC php
drawPolyline(int xArray[ ], int yArray[ ], inttotalPoints);
g.setFont(new Font("Times Roman",
Font.BOLD,15));
V v t cc hnh a gic
-
8/3/2019 giaotrinhJava1234
220/352
Cc phng thc v v t cc hnh a gic
C php
drawPolygon(int x[ ], int y[ ], intnumPoints);
fillPolygon(int x[ ], int y[ ], int numPoints);
Mu
-
8/3/2019 giaotrinhJava1234
221/352
Java sdng mu RGB
Bng cc gi tr mu
Element RangeRed 0-255
Green 0-255
Blue 0-255 C php ca hm dngtomt mu
color(int red, int green, int blue);
Bng trnh by cc gi tr mu RGB thng thng
Color Red Green Blue
-
8/3/2019 giaotrinhJava1234
222/352
White 255 255 255Light Gray 192 192 192
Gray 128 128 128
Dark Gray 64 64 64
Black 0 0 0
Pink 255 175 175
Orange 255 200 0
Yellow 255 255 0Magenta 255 0 255
Font
-
8/3/2019 giaotrinhJava1234
223/352
Gi java.awt package cung cp bi lpFont
Cc phng thc ca lp Font: getAllFont( )
getLocalGraphicsEnvironment( )
getFont( )
getFontList( )
Hm dng Font nhn 3 tham s Tn font trong chui nhdng; tn ny c
-
8/3/2019 giaotrinhJava1234
224/352
g g; ytrong phngthc getFontList( ).
Kiuca font.
V d : Font.BOLD, Font.PLAIN, Font.ITALIC
Kch thcca font. V d
Font f1 = new Font("SansSerif", Font.ITALIC, 16);
g.setFont(f1);
Lp FontMetrics
-
8/3/2019 giaotrinhJava1234
225/352
o cc k t khc nhau hin th trongcc font khc nhau.
Vic o bao gm height, baseline,
ascent,descent v leadingca font. N khng c th v n l mt lp tru
tng
Lp FontMetrics (tip theo)
-
8/3/2019 giaotrinhJava1234
226/352
Phng thc: getFontMetrics(f1)
getHeight( )
getAscent( ) getDescent( )
getLeading( )
getName( )
-
8/3/2019 giaotrinhJava1234
227/352
-
8/3/2019 giaotrinhJava1234
228/352
Chng VII
Lp trnh a tuyn
anhim,tin trnh v lung
Lp trnh a tuyn
-
8/3/2019 giaotrinhJava1234
229/352
Xl alung trong JavaMcu tin calung
Vn ng b ho v bi ton tc
nghn
Tin trnh, a nhim va lung Tin trnh : l mt chng trnh chy trn h iu
hnh v cqun l thng qua cc th
-
8/3/2019 giaotrinhJava1234
230/352
Tiu trnh : l mtnvx l cbncahthng.Mttin trnh shunhiutiu trnh
nnhim : timtthiimch c mttin trnh
anhim: cng mt thiim c nhiuhnmttin trnh thc hin ng thi trn cng mt mytnh. C hai kthutanhim:
+ anhimda trn cc tin trnh+ anhimda trn cclung
Tin trnh, a nhim va lung Mt tin trnh c th bao gm nhiu lung.
Cc lungcamttin trnh c thchiasvi
-
8/3/2019 giaotrinhJava1234
231/352
gnhau vkhng gian achchngtrnh, ccon d liu v mi trngx l, ng thicngc vng dliu ring thao tc.
Trong mi trngnlung,mithiimch cho php mt tc vthc thi.
K thut a nhim cho php tn dng cnhng thi gian ri ca CPU thc hinnhng tc v khc.
anhim c ththchinc theo hai cch:+ Phthuc vo hiu hnh, n c th cho
-
8/3/2019 giaotrinhJava1234
232/352
tm ngng chng trnh m khng cn thamkho cc chng trnh .
+ Cc chng trnh chbdngli khi chng
tnguynnhngiukhin cho chng trnhkhc. Nhiuhiu hnh hin nay htralung,
Java h tr a nhim da trn cc lung vcung cp cc c tnh mc cao cho lp trnhalung.
a lung (a tuyn)
-
8/3/2019 giaotrinhJava1234
233/352
L khnng lm vicvinhiulung
a lung chuyn s dng cho victhc thi nhiu cng vicngthi
a lung gim thi gian ri ca hthngnmcthpnht.
To v qun l lung Khi chng trnh Java thc thi hm
-
8/3/2019 giaotrinhJava1234
234/352
main() tc l lung main cthc thi.Tuyn ny c to ra mt cch tng,tiy :
- Cc lung con scto ra t
- N l lungcui cng kt thc victhcthi. Ngay khi lung main() ngngthc thi,chng trnh bchmdt
Phn chia thi gian gia cc lung
-
8/3/2019 giaotrinhJava1234
235/352
CPU thc thi chmtlungtimtthiimnhtnh.
Cc lung c u tin bng nhau th
c phn chia thi gian sdngb vix l.
Lp trnh a lung Java Vi Java ta c th xy dng cc chng trnh a
lung
-
8/3/2019 giaotrinhJava1234
236/352
Mt ng dng c th bao gm nhiu lung,milungcgn cng viccth v cthc thingthivi cc lung khc
Java cung cp hai gii php tolplung:1. Thitlplp con ca Thread2. Ci tlpxl lungtgiao din Runnable.
Lp trnh a lung Java Cch thnht: To ra mtlpkthatlp Thread v ghi
phngthc run calp Thread nhsau:class MyClass extends Thread
-
8/3/2019 giaotrinhJava1234
237/352
{//Mtsthuc tnhpublic void run()
{// Cc lnhcnthchin theo lung}
//Mts hm khc cvit hay cb sung}
Khi chng trnh chy n s gi mt hm c bit c
khai bo trong Thread l start()btumt lungcto ra.
Lp trnh a lung JavaCch thhai:
+ Java giiquythnch trnbng cch xy dnglpto racc lungthchin trn csci t giao dinhtrlung.
-
8/3/2019 giaotrinhJava1234
238/352
+ To ra mt lp trin khai t giao din Runnable, ci tphngthc runclass MyClass implements Runnable
{
// Cc thuc tnh//Npchng hay vitmts hmpublic void run()
{
. . .
}}
Trng thi v cc phng thcca lp Thread
-
8/3/2019 giaotrinhJava1234
239/352
Trng thi: born
ready to run
running
sleeping
waiting
ready
blocked dead
Phng thc: start( )
sleep( )
wait( ) notify( )
run( )
stop( )
Cc trng thi ca ThreadMtlung c thmt trong cc trng thi sau:
+ New: Khi mt lung mi c to ra vi ton tnew()v sn sng hotng.
-
8/3/2019 giaotrinhJava1234
240/352
g+ Runnable: Trng thi m lungangchim CPU
thc hin, khi bt u th n gi hm start(). B lp lchphn lung ca h iu hnh s quyt nh lung no scchuynvtrng thi Runnablev hotng.Cngcn
lu rngmtthiim,mtlungtrng thi Runnablec thhoc khng ththchin.+ Non runnable (blocked): T trng thi runnable
chuyn sang trng thi ngngthchin(bchn) khi gi
mt trong cc hm: sleep(),
suspend(),
wait(), hay
bchn
liInput/output. Trong trng thibchn c ba trng thicon:
yield
sleep
-
8/3/2019 giaotrinhJava1234
241/352
Blocked
stop
B chn bi I/O
resume
suspendstart
Runnablenotify
wait
Kt thc I/O
Cc trng thi ca ThreadMtlung c thmt trong cc trng thi sau:
+ Waiting: khi trng thi Runnable, mt
-
8/3/2019 giaotrinhJava1234
242/352
lung thc hin hm wait() th n s chuyn sangtrng thi chi (Waiting).
+ Sleeping: khi trng thi Runnable, mt
lung thchin hm sleep() th n schuyn sangtrng thi ng (Sleeping).
+ Blocked: khi trng thi Runnable, mtlungbchnlibinhng yu cuv ti nguyn,
nh yu cu vo/ra (I/O), th n s chuyn sangtrngbchn (Blocked).
Cc trng thi ca ThreadMi lungphi thot ra khi trng thi Blocked quay vtrng thi Runnable, khi
+ Nu mt lung c cho i ng (sleep) sau
-
8/3/2019 giaotrinhJava1234
243/352
khong thi gian bng s micro giy n c truyn votham sca hm sleep(n).
+ Numtlungbchnli v vo/ra v qu trnh nykt thc.
+Nulungbchnli khi gi hm wait(), sau cthng bo tiptcbng cch gi hm notify() hoc notifyAll().+ Nu mt lungb chn li ch monitor ca i
tngangbchimgibilung khc, khi monitor cgii phng th lungbchn ny c thtiptcthchin (khi
nim monitor ccpphn sau).
Cc trng thi ca Thread+Numtlungbchnlibiligi hm suspend(),
munthchin th trcphigi hm resume().
-
8/3/2019 giaotrinhJava1234
244/352
+ Hm suspend() c tc dngtmngngtuyn, t cdng do khng nh ti nguyn ca h thng, d dn ndeaklock.
Nu ta gi cc hm khng ph hpivi cc lung th JVMs pht sinh ra ngoil IllegalThreadStateException.
+ Dead: Lungchuyn sang trng thi cht khi n ktthc hotng bnh thng,hocgpphingoil khng thchintipc. Trong trnghpcbit,bn c thgi hmstop() kt thc (gitcht)mtlung.
Mc u tin ca cc lung Trong Java, milung c mtmcu tin thchinnhtnh. Khi chng trnh chnh thchinsto ra lung chnh, lung cha.
Lung ny sto ra cc lung con, v cthtiptc.
-
8/3/2019 giaotrinhJava1234
245/352
Theo mcnh,mtlungskthamcu tin calung chaca n. Bn c th tng hay gim mc u tin ca lungbngcch sdng hm setPriority().
Mc u tin ca cc lung c th t li trong khong tMIN_PRIORITY(Trong lp Thread c mc nh bng 1) vMAX_PRIORITY (mc nh bng 10), hoc NORM_PRIORITY(mc nh l 5).
Lung c mcu tin cao nhttiptcthchin cho n khi:+ N nhngquyniukhin cho lung khcbng cch gi hm yield()+ N dngthchin(bdeadhocchuyn sang trng thibchn).
c mtlungvimcu tin cao hn vo trng thiRunnable.
Mc u tin ca cc lung Vnny sinh l chnlung no thchin khi c nhiuhn
mt lung sn sng thc hin v c cng mt mc u tin caonht? Ni chung, mtscssdngblplch lachnngu
-
8/3/2019 giaotrinhJava1234
246/352
nhin, hoclachn chng thchin theo thtxuthin.Vd:
Chng ta hy xt chng trnh hinth cc qu bng mu xanhhocny(chuyn) theo nhngngnhtnh.
Mi khi nhn nt Blueball th c 5 lung c to ra vimcu tin thng thng (mc 5) hin th v di chuyn ccqu bng xanh.
Khi nhn nt Redball th cng c 5 lungc to ra vimcu tin (mc 7) cao hnmc thng thnghinth v dichuyn cc qu bng .
kt thc tr chibnnhn nt Close.
Mc u tin ca cc lungimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class Bounce{
-
8/3/2019 giaotrinhJava1234
247/352
public static void main(String arg[]){JFrame fr = new BounceFrame();fr.show();
}}class BounceFrame extends JFrame{
public BounceFrame(){setSize(300, 200);setTitle("Bong chuyen");addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
Mc u tin ca cc lungContainer contentPane = getContentPane();canvas = new JPanel();contentPane.add(canvas, "Center");JPanel p = new JPanel();
-
8/3/2019 giaotrinhJava1234
248/352
addButton(p, "Blue ball", new ActionListener(){public void actionPerformed(ActionEvent evt){for(int i = 0; i < 5; i++){
Ball b = new Ball(canvas, Color.blue);b.setPriority(Thread.NORM_PRIORITY);b.start(); }
}});addButton(p, "Red ball", new ActionListener(){
public void actionPerformed(ActionEvent evt){for(int i = 0; i < 5; i++){
Ball b = new Ball(canvas, Color.red);b.setPriority(Thread.NORM_PRIORITY + 2);b.start();
}}
});
Mc u tin ca cc lungaddButton(p, "Close", new ActionListener(){public void actionPerformed(ActionEvent evt){
canvas.setVisible(false);System.exit(0);
-
8/3/2019 giaotrinhJava1234
249/352
}});contentPane.add(p, "South");}public void addButton(Container c, String title, ActionListener a){
JButton b = new JButton(title);c.add(b);b.addActionListener(a);
}private JPanel canvas;
}
Mc u tin ca cc lungclass Ball extends Thread{public Ball(JPanel b, Color c){
box = b; color = c;}public void draw(){
-
8/3/2019 giaotrinhJava1234
250/352
Graphics g = box.getGraphics(); g.setColor(color);g.fillOval(x, y, XSIZE, YSIZE); g.dispose();
}public void move(){
if(!box.isVisible()) return;Graphics g = box.getGraphics();
g.setXORMode(box.getBackground()); g.setColor(color);g.fillOval(x, y, XSIZE, YSIZE);x += dx; y += dy;Dimension d = box.getSize();if(x < 0){
x = 0; dx = -dx;
}if(x + XSIZE >= d.width){x = d.width - XSIZE; dx = -dx;
}if(y < 0){
y = 0; dy = -dy; }
Mc u tin ca cc lungif(y + YSIZE >= d.height){y = d.height - YSIZE; dy = -dy;
}g.fillOval(x, y, XSIZE, YSIZE);g.dispose();
-
8/3/2019 giaotrinhJava1234
251/352
}public void run(){
try{for(int i = 1; i
-
8/3/2019 giaotrinhJava1234
252/352
Chychng trnh trn chng ta nhnthy hnh nhnhngqu bng ny nhanhhn v cc lungthchin chng c mcu tin cao hn.
Lu : Cc lung c mcu tin thphns khng c chithchinnunhnglungcao hn khng nhng, hocnhngbng hm yield(). Nu c nhng lung
angtrng thi Runnable m c mcu tin t nhtbngmcu tin calungvanhng th mt trong s chng cxplchthchin.+ Blplchthng xuyn tnh limcu tin ca cc lungangthchin+ Tm lung c mcu tin cao nhtthchin.
-
8/3/2019 giaotrinhJava1234
253/352
S ng b
Khi hi t ti d
-
8/3/2019 giaotrinhJava1234
254/352
Khi nhiu tuyn truy cp ti nguyn dngchung
Ti nguyn khng th chia x, khi ti
nguyn c thb ph hngVd : Mt lungcd liu, trong khi lung
khc li thay i
Cn cho php mt lung hon thnh tc vca n, ri cho php lungktipthc thi
S ng b
Th ti /
-
8/3/2019 giaotrinhJava1234
255/352
Thm nhp cc ti nguyn/d liubinhiutuyn
Sngb (Synchronization)
S quan st (Monitor)
S ng b thm nhp s quan st ca mt i
tng, lp trnh vin s dng t khasynchronized khi khai bo phngthc.
-
8/3/2019 giaotrinhJava1234
256/352
Mi mt i tng s c mt b qun lkha, ch cho mt phng thcsynchronized ca i tng chy ti
mtthiim Khi mt tuyn ang c thc thi trong
phm vi mt phng thc ng b(synchronized), bt k tuyn khc hocphngthcngb khc m cgnggin trong thi gian sphii
ng b ho Cc lung chia svi nhau cng mt khng gian
bnh,ngha l chng c th chia svi nhau cc
i
-
8/3/2019 giaotrinhJava1234
257/352
ti nguyn. Khi c nhiuhnmt lung cng munsdng
mt ti nguyn sxuthin tnh trngcngthng,ch cho php mtlungcquyn truy cp.
cho cc lung chia s vi nhau c cc tinguyn v hotnghiuqu, lun mbonhtqun dliu thphi c cchngb chng.
ng b ho Muchtcasngb l khi nimmonitor
(gim st) hay cn gi l semaphore(chiu)
Khi i h h d
-
8/3/2019 giaotrinhJava1234
258/352
Khi nimsemaphore thngcsdngiu khin ngb cc hot ng truy cp vonhng ti nguyn dng chung.
Mt lung mun truy cp vo mt ti nguyndng chung (nhbin d liu) th trc tin n
phi yu cu c c monitorring.
Khi c c monitor th lungnh c cchakhomca vo mintranhchpsdngnhng ti nguyn .
ng b ho Cch monitorthchin hai nguyn tcngb chnh:
+ Khng mt lung no khc c phn monitor khi cmt lung
cu
ang chim gi Nhng lung
i hi h h khi i ii h
-
8/3/2019 giaotrinhJava1234
259/352
yu v . c yucu monitorsphichcho n khi monitor cgii phng.
+ Khi c mtlunggii phng (ra khi) monitor,mtlungang ch monitor c th truy cp vo ti nguyn dng chungtngngvi monitor .
Miitng trong Java u c monitor, miitng c thcsdngnhmt kho loitr nhau, cung cpkhnngngb truy cp vo nhng ti nguyn chia s.
Trong lp trnh c hai cch thchinngb:
+ Cc hm cngb
+ Cc khicngb
ng b hoCc hm ngb Hm ca mt lp ch cho php mt lung c thc
hi hi i h hi kh i b h i d
-
8/3/2019 giaotrinhJava1234
260/352
hinmtthiim th nphi khai bo synchronized,cgi l hm ngb. Mtlungmunthchin hm ngb th nphich
c c monitor caitng c hm .
Trong khi mtlungangthchin hm ngb th ttc cc lung khc mun thc hin hm ny ca cngmtitng,uphichcho n khi lungthchin xong v cgii phng.
Bng cch ,nhng hm cngbs khng baogibtcnghn.
ng b hoCc hm ngb Nhng hm khng cngbcaitng c th
i th hi i l bi bt k i t
-
8/3/2019 giaotrinhJava1234
261/352
cgithchinmi lcbibtkitng no. Khi chy,chng trnh s thi hnh tunt cc lnh cho
n khi kt thc chng trnh. Trong Java, hm ngb c th khai bo static. Cc lp
cng c th c cc monitor tngtnhivi cc itng.
Mtlung yu cu monitor calptrc khi n c ththchinvi mt hm cngb tnh (static) no
trong lp,ngthi cc lung khc munthchinnhng hm nhthca cng mtlp thbchnli.
ng b haVd: Hthng ngn hng c 10 ti khon, trong c cc giao
dch chuyn tin gia cc ti khon vi nhau mt cch ngunhin. Chng trnh to ra 10 lung cho 10 ti khon. Mi giao
d h t l h h t l ti
-
8/3/2019 giaotrinhJava1234
262/352
dch c mt lungphc v s chuyn mt lng tin ngunhin tmt ti khon sang ti khon khc.Nuchng trnh thchinvi 10 lunghotng khng ng
bchuyntingia cc ti khon trong ngn hng. Vnsny sinh khi c hai lungngthimunchuyntin
vo cng mt ti khon. Gis hai lung cng thchin:accounts[to] += amount;
Cu lnh ny cthchinnh sau:1. Np accounts[to] vo thanh ghi.2. Cngstin trong ti khon accounts vi amount3. Luliktqu cho accounts[to].
ng b haChng ta c thgi thit lung thnht thchinbc 1 v 2vi amount = 500, sau nbngt. Lungth hai c ththchintrnvnc babc trn vi amount = 1000, sau lung
th ht kt th i ht b h th hi t b 3
-
8/3/2019 giaotrinhJava1234
263/352
263
thnhtkt thc viccpnhtbng cch thchinntbc 3.Qu trnh ny c m tnhhnh sau :Lung 1 Lung 2 accounts[to]
Thanh ghi 1 Thanh ghi 2
NpCng NpCng
Luli LuliKt thc lungthnht,accounts[to]c 6000, nhng ngay sau lungth hai kt thc th cng chnh ti khon cha chuyn tin i u c,nhnglich cn 5500. ng ra nphi l 6500
5000
5500
5500
5000
6000
6000
5000
5000
5000
5000
6000
5500
ng b haJavasdngcchngb kh hiuqu l monitor. Mthm s khngbngtnubn khai bo n l synchronized.public synchronized void transfer(int from, int to, int
amount){if(accounts[from] < amount) return;
-
8/3/2019 giaotrinhJava1234
264/352
if(accounts[from] < amount) return;accounts[from] -= amount;accounts[to] += amount;numTransacts++;if(numTransacts % NTEST == 0) test();
}public synchronized void test(){
int sum = 0;for(int i = 0; i < accounts.length; i++)
sum += accounts[i];
System.out.println("Giao dich: " + numTransacts+ " tong so: " + sum);
}
ng b haKhi c mtlunggi hm cngb th n cmborng hm ny
phi thchin xong th lung khc micsdngivi cng mtitng.
Hot ng ca cc lung khng ng b v ng b ca hai lung thc hin
-
8/3/2019 giaotrinhJava1234
265/352
Hotngca cc lung khng ngb v ngbca hai lungthchingi hm transfer()
Khng cngb cngb
Thread 1 Thread 2 Thread 1 Thread 2
transfer() transfer()
transfer()
transfer()
Cc kho i tngKhi mt lunggimt hm cngb th i
tngca nbkho,gingnh kho ca phng.
Nh khi t l kh i h
-
8/3/2019 giaotrinhJava1234
266/352
Nhvy, khi mt lung khc mungi hm cngb ca cng i tng th s khng mc.
Sau khi thc hin xong, lung bn trong gii
phng hm cngbvasdng, ra khiitng v a cha kho ra ngoibccanhnglung khc c thtiptc cng vicca mnh.
Cc kho i tng Mtlung c thginhiu kho itngcng mtthiim,
nhtrong khi angthchinmtligi hm ngbcamtitng, n ligitip hm ngbcaitng khc.
Nhng ti mi thi im mi kho i tng ch c mt lung h
-
8/3/2019 giaotrinhJava1234
267/352
Nhng,timithiim,mi kho itngchcmtlungshu.Chng ta hy phn tch chi tithnhotngcahthng ngnhng. Mt giao dch chuyn tin s khng thc hin c nukhng cn tin. N phichcho n cc ti khon khc chuyn
tinn v khi c th mithchinc giao dch.public synchronized void transfer(int from, int to, int amount){while(accounts[from] < amount)
wait();//Chuyntin
}
-
8/3/2019 giaotrinhJava1234
268/352
Cc kho i tngNhng lunga ra khi danh sch hng i scb lp lch kchhot chng. Ngay tckhclung no chimc kho itng th sbtuthchin. Nhvy, trong hm transfer() chng ta gi notifyAll()khi kt thc vicchuyntinmt trong cc lung c thctiptc
thc hin v trnh b tc.
-
8/3/2019 giaotrinhJava1234
269/352
thchin v trnh btc.Cui cng chng trnh sdngcchngbcvitlinh sau.public class SynBankTransfer{
public static void main(String arg[]){Bank b = new Bank(NACCOUNTS, INI_BALANCE);
for(int i = 0; i < NACCOUNTS; i++){TransferThread t = new TransferThread(b, i, INI_BALANCE);t.setPriority(Thread.NORM_PRIORITY + i % 2);t.start();
}
}public static final int NACCOUNTS = 10;public static final int INI_BALANCE = 10000;
}
Cc kho i tngclass Bank{
public static final int NTEST = 1000;private int[] accounts;private long numTransacts = 0;public Bank(int n int initBalance){
-
8/3/2019 giaotrinhJava1234
270/352
public Bank(int n, int initBalance){accounts = new int[n];for(int i = 0; i < accounts.length; i++)
accounts[i] = initBalance;numTransacts = 0;
}public void transfer(int from, int to, int amount){
while(accounts[from] < amount) wait();accounts[from] -= amount;accounts[to] += amount;
numTransacts++;notifyAll();if(numTransacts % NTEST == 0) test();
}
Cc kho i tngpublic synchronized void test(){int sum = 0;for(int i = 0; i < accounts.length; i++)
sum += accounts[i];
System out println("Giao dich: " + numTransacts + " tong so: " + sum);
-
8/3/2019 giaotrinhJava1234
271/352
System.out.println( Giao dich: + numTransacts + tong so: + sum);}
public int size(){return accounts.length;
}}class TransferThread extends Thread{
private Bank bank;private int fromAcc;private int maxAmount;
public TransferThread(Bank b, int from, int max){bank = b;fromAcc = from; maxAmount = max;
}
Cc kho i tngpublic void run(){
try{
while(!interrupted()){
int toAcc = (int)(bank.size() * Math.random());
-
8/3/2019 giaotrinhJava1234
272/352
int toAcc (int)(bank.size() Math.random());int amount = (int)(maxAmount * Math.random());
bank.transfer(fromAcc, toAcc, amount);
sleep(1);
}
}catch(InterruptedException e){}
}
}
Nubn chy chng trnh vi cc hm transfer(), test() cngb th
mivicsthchin chnh xc ng theo yu cu. Tuy nhin, bncng cthnhnthychng trnh schychmhn cht tbi vphitr gi cho cchngbnhmmbo cho hthnghotng chnh xc, mbonhtqun dliu,hoc trnh gy ra tcnghn.
Deadlock
Mt deadlock xy ra khi hai tuyn c
-
8/3/2019 giaotrinhJava1234
273/352
Mt deadlock xy ra khi hai tuyn cmtphthuc vng quanh trn mtcpitngngb
Vn cht tcC ch ng b trong Java l rt tin li, kh mnh,
nhng khng giiquytcmivnny sinh trong qutrnh xl alung.
V d : Account 1 c 2000$ Account 2 c 3000$ v Thread 1
-
8/3/2019 giaotrinhJava1234
274/352
Vd : Account 1 c 2000$, Account 2 c 3000$ v Thread 1cn chuyn 3000$ t Account 1 sang Account 2, ngc liThread 2 cnchuyn 3500$ tAccount 2 sang Account 1.
Khi , Thread 1 v Thread 2 ri vo tnh trng cht
tc,hoctcnghn v chng chnln nhau.Mththngm ttc cc lung(tin trnh) bchnli
chln nhau v khng mtlung(tin trnh) no thchintipth cgil hthngbchttc(tcnghn).
Trong tnh hungtrn,c hai lunguphigi wait()xl hai ti khonu khng stinchuyn.
Vn cht tcTrong chng trnh SynBankTransfer.java, hin
tngtcnghn khng xuthinbimt l do ngin. Migiao dchchuyntinnhiunht l 10000$.
C 10 ti khon vi tng s tin l 100000$ Do mi
-
8/3/2019 giaotrinhJava1234
275/352
C 10 ti khonvitngstin l 100000$. Do ,mithiimu c t nhtmt ti khon c khng t hn 10000$,ngha l lungph trch ti khonc php thchin.
Tuy nhin, khi lp trnh ta c th gy ra tnh hung khcc th lm xuthintcnghn
Vn cht tcVd :Trong SynBankTransfer.java thay v gi
notifyAll() ta ginotify().
Nh trn phn tch notifyAll() thng bo cho
-
8/3/2019 giaotrinhJava1234
276/352
Nh trn phn tch, notifyAll() thng bo chottc cc lungangch c tinchuyni c thtiptcthchin, cn notify()ch bo cho mtlungctiptc.
Khi ,nulungc thng bo li khng ththchin,v khng tin chuyn chng hn, th tt c cc lungkhc cngsbchnli.
Vn cht tc Chng ta hy xt kchbn sau:
+Account 1: 19000$
+ Ttc ccAccount cn liu c 9000$
+ Thread 1: chuyn 9500$ tAccount 1 sangAccount 2
+ Ttlung khc uchuyn sang ti khon khc mtlngtin l 9100$.
-
8/3/2019 giaotrinhJava1234
277/352
g y gCh c Thread1tinchuyn cn cc lung khc bchnli. Thread1thchin
chuyntin xong ta c:+Account 1: 9500$
+Account 2: 18500$
+ Ttc ccAccount cn liu c 9000$
GisThread 1ginotify(). Hm ny ch thng bo cho mtlungngu nhin n c th tip tc thchin. Gis l Thread3. Nhng lung ny cng khng chuync v khng tinti khonAccount3, nn phich(giwait()). Thread 1vntiptcthchin. Mt giao dchmingu nhin licto ra. Vd
Thread 1: chuyn 9600$ tAccount1 sangAccount 2.
By giThreadligiwait(), v nhvyttc cc lunguri vo tnh trngtcnghn.
Qua vd trn cho thy,mtngn nglp trnh c cchhtrngb l chagiiquytvntcnghn. Quan trng l khi thitkchng trnh, ta phimborngmithiim c t nhtmtlung(tin trnh) tiptcthchin.
Phngthc finalize()
Java cung cp mt cch lm sch mt tintrnh trc khi iu khin tr li h iu hnh
-
8/3/2019 giaotrinhJava1234
278/352
Java cung cpmt cch lm schmttintrnh trc khi iukhintrlihiu hnh Phng thc finalize(), nu hin din, s
c thc thi trn mi i tng, trc khi
sdn rc Cu lnhcaphngthc finalize() nh sau: protected void finalize( ) throws Throwable
Tham chiu khng phi l sdn rc; ch ccitngmicdn rc
Ch VIII
-
8/3/2019 giaotrinhJava1234
279/352
Chng VIII
Cc lung I/O
Cc lung
Cc lung l nhng ng ng gi v
-
8/3/2019 giaotrinhJava1234
280/352
Cc lung l nhng ng ng gi vnhn thng tin trong cc chng trnh java.
Khi mt lungchoc ghi, cc lung khc
b kho. Nu li xy ra trong khi choc ghi lung,
mtbitlscto ra.
Lpjava.lang.Systemnhnghalungnhpv xutchun.
Cc lplung I/O
Lp System out
-
8/3/2019 giaotrinhJava1234
281/352
Lp System.out.
Lp System.in.
Lp System.err.
Cc lp lung I/O
x l mi loid liu, java chia lung
thnh 2 loi : lung byte ( byte stream) vl k t ( h t t )
-
8/3/2019 giaotrinhJava1234
282/352
thnh 2 loi : lung byte ( byte stream) vlung k t (character stream) Lp InputStream v OutputStream l hai
lp c s cho mi lung nhp xut hngbyte
Lp Reader/ Writer hai lpc scho vicc ghi hng k t
Lp nhp xut hng k t Reader v Writer l hai lpcstrutng
cho lung hng k t
-
8/3/2019 giaotrinhJava1234
283/352
cho lunghng k t Cung cp mt giao din chung cho tt c
cc lpc ghi hng k t
Mi ln c/ghi ra lung th c 2 bytetngngvimt k t
M hnh phn cp c/ghi hng k t
-
8/3/2019 giaotrinhJava1234
284/352
Lp Reader
Lp Reader v InputStream c mt giao din
-
8/3/2019 giaotrinhJava1234
285/352
Lp Reader v InputStream c mt giao dinging nhau, chng ch khc nhau v kiu d liuu vo
Lp Reader c cc phng thc c mt k t
hoc mng cc k t Cc phng thc: int read()
int read(char cbuf[])
int read(char cbuf[], int offset, int length)
Lp Writer
Lp Writer v OutputStream c mt giao
din ging nhau chng ch khc nhau v
-
8/3/2019 giaotrinhJava1234
286/352
din ging nhau, chng ch khc nhau vkiudliuu vo
Lp Writer nhngha cc phng thc
ghi mt k thocmng cc k t ra lung Cc phngthc:int write(int c)
int write(char cbuf[])int write(char cbuf[], int offset, int length)
Lp Writer
H tr cc phng thc sau :
-
8/3/2019 giaotrinhJava1234
287/352
Htr cc phngthc sau : flush( )
close( )
Nhp/xut chui v mng kt
H tr nhp v xut t cc vng m
-
8/3/2019 giaotrinhJava1234
288/352
H trnhp v xut t cc vng mbnh
Htr 8 bt k tnhp v ktxut
Lp CharArrayReader khng b sungphng thc mi vo cc phng
thc m lpReader cung cp.
Nhp/xut chui v mng k t
Lp CharArrayWriter b sung phng
-
8/3/2019 giaotrinhJava1234
289/352
Lp CharArrayWriter b sung phngthc sau y vo phngthccalpWriter cung cp:
reset( ) size( )
toCharArray( )
toString( )
writeTo( )
Nhp/xut chui v mng k t
LpStringReadertr gip c cc k tu t h i
-
8/3/2019 giaotrinhJava1234
290/352
Lp StringReader tr g p c t uvo t su chui.
N khng b sung bt k phng thc nom lp Reader cung cp.
Lp StringWriter tr gip ghi lung ktxut k t ra mtitngStringBuffer.
Lp ny b sung thm cc phngthc sau: getBuffer( )
toString( )
Lp hng byte
c thc ghi 1 byte, ta sdng lung
hng byte
-
8/3/2019 giaotrinhJava1234
291/352
hng byte Hai lp InputStream v OutputStream l hai
lp c s tru tng cho cc lunghng
byte Mi ln c/ghi ra lung th c 8 bits ra
lung
M hnh phn cp c/ghi hng byte
-
8/3/2019 giaotrinhJava1234
292/352
Lp InputStream L lptrutng nhngha cch nhnd liu
Cung cp s phng thc dng
-
8/3/2019 giaotrinhJava1234
293/352
g cp s phng thc g c v cc lungdliu lm u vo.
Trong lp InputStream c cc phng thc
cho vic c mt byte hoc mng cc byte Cc phngthc: int read()
int read(byte cbuf[])
int read(byte cbuf[], int offset, int length)
Lp OutputStream
L lptrutng. h h h hi d li l
-
8/3/2019 giaotrinhJava1234
294/352
p g nhngha cch ghi dliu vo lung. Cung cp tp cc phng thc tr gip
trong victo, ghi v x l cc lungxut.
Lp OutputStream c cc phng thc ghimt byte hoc mng cc byte ra lung
Cc phng thc: write(int c)
write(byte cbuf[ ])
write(byte[ ], int offset, int length)
Nhp mng cc Byte
Sdng cc mbnh
-
8/3/2019 giaotrinhJava1234
295/352
S dng m b nh LpByteArrayInputStream
To ra mt lungnhptmbnh
vmng cc byte. Khng htr cc phngthcmi
Cc phng thc np chng ca lp
InputStream, ging nh read(), skip(),available() v reset().
Xut mng cc Byte
sdng cc vng mbnh
-
8/3/2019 giaotrinhJava1234
296/352
s dng g m b nh Lp ByteArrayOutputStream
To ra mtlungktxut trn mng byte
Cung cp cc kh nng b sung chomng kt xut tng trng nhm chachcho dliumi ghi vo.
Cng cung cp cc phng thc
chuyn i lung ti mng byte, hay itng String.
Phng thc ca lp
ByteArrayOutputStream :reset( )
-
8/3/2019 giaotrinhJava1234
297/352
y y p reset( )
size( )
writeTo( )
Cc lp nhp/xut tp tin Cc lp ny tr gip trong Java h tr
cc thao tc nhp v xut: File
-
8/3/2019 giaotrinhJava1234
298/352
p FileDescriptor FileInputStream FileOutputStream FileReader FileWriter
Cc lp File, FileDescriptor, vRandomAccessFile c s dng h tr
trc tip hoc truy cp nhp/xut ngunhin.
Lptp tin
csdng truy cp cc itngtp tinv th mc
-
8/3/2019 giaotrinhJava1234
299/352
g p g pv thmc
Nhng tp tin c tn ct tn theo quiccahiu hnh.
Lp ny cung cpphngthckhitoto ra cc thmc v tp tin
Ttc cc thao tc thmc v tp tin ucsdng cc phngthc truy cp vcc phngthcthmc m cc lptp tincung cp
Lptp tin
x l tp tin ngoi tr, ta s dng ccl li t ti h
-
8/3/2019 giaotrinhJava1234
300/352
p g , glung lin quan n tp tin nh :FileInputStream, FileOutputStream,FileReader, FileWriter
FileInputStream v FileOutputStream phcv cho vicc ghi tp tin hng Byte
FileReader v FileWriter phcv cho vic
c ghi tp tin hng k t
Cc hm to ca cc lp tng ng lin ktlung vi mt tp tin c th
public void FileInputStream ( String FileName)
-
8/3/2019 giaotrinhJava1234
301/352
p ( g ) public void FileInputStream ( File file)
public void FileOutputStream ( String FileName)
public void FileOutputStream (File file) public void FileWriter ( String FileName)
public void FileWriter (File file)
public void FileReader ( String FileName) public void FileReader (File file)
Nhp / xut lc Lc:
vcbncsdng thch ng cc
lung theo cc nhu cucachng trnhth
-
8/3/2019 giaotrinhJava1234
302/352
g gcth.
B lc nm gia lung nhp v lung
xut. Thc hin mt s tin trnh c bit trn
cc byte c chuyn giao t u vonktxut.
C thphihpthchinmt dy cctuchnlc.
Lp FilterInputStream
L lptrutng.L h tt l l h l
-
8/3/2019 giaotrinhJava1234
303/352
g L cha cattc cc lplungnhplc. Cung cp kh nng to ra mt lung t
lung khc.
Mt lung c th c v cung cp didngktxut cho lung khc.
Duy tr mt dy cc i tng ca lp
InputStream Cho php to ra nhiublckt xch
Lp FilterOutputStream
L dngbtr cho lpFilterInputStream.L cha ca tt c cc lp l ng kt t
-
8/3/2019 giaotrinhJava1234
304/352
L cha cattc cc lplungktxut. Duy tr i tng ca lp OutputStream
nh l mtbinout. Dliu ghi ra lp ny c thsaithc
hin cc thao tc lc, v sau phnhinitngOutputStream.
Vng mnhp/xut
V cc thao tc vicng,mngthng lu hn so
vi thao tc bnh trong K thut s dng vng m nhm tng tc
-
8/3/2019 giaotrinhJava1234
305/352
K thut s dng vng m nhm tng tc c/ghi
Vikthut vng msgimcslnc/ghilung
Trong Java ta c thto ra vng mca cc lp :
BufferInputStreamBufferOutputStreamBufferReaderBufferWriter
Vng mnhp/xut
Vng m:
L kho lutrdliu.C th cung cp d liu thay v quay tr li ngun
-
8/3/2019 giaotrinhJava1234
306/352
C th cung cpdliu thay v quay trlingundliugc ban u.
Java sdng vng mnhp v ktxuttm
thilp cache dliucchoc ghi vo mtlung. Trong khi thchin vng mnhp:
S lng by