laptrinh java

249
MỤC LỤC Chương 1: GIỚI THIỆU TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH JAVA .......................................... ............................... 7 1.1. Mở đầu ......................................... ................................ 7 1.2. Giới thiệu về ngôn ngữ lập trình Java ............................ 7 1.2.1. Java là gì? ................................................ .............. 7 1.2.2. Lch sử phát triển của ngôn ngữ lập trình Java ........ 7 1.2.3. Một số đặc điểm nổi bậc của ngôn ngữ lập trình Java ............................................... ......................................... 8 1.3. Các ng dụng Java ......................................... ............. 10 1.3.1. Java và ng dụng Console .................................... 10 1.3.2. Java và ng dụng Applet ...................................... 11 1.3.3. Java và phát triển ng dụng Desktop dùng AWT và JFC ............................................ .................................... 12 1.3.4. Java và phát triển ng dụng Web .......................... 13 1.3.5. Java và phát triển các ng dụng nhúng ................. 14 1.4. Dch và thực thi một chương trình viết bằng Java ........ 14 1.5. Chương trình Java đầu tiên..................................... ..... 15 1.5.1. Tạo chương trình nguồn HelloWordApp .............. 15 1.5.2. Biên dch tập tin nguồn HelloWordApp................ 16 1.5.3. Chạy chương trình HelloWordApp ....................... 16 1.5.4. Cấu trúc chương trình HelloWordApp .................. 17 Sử dụng phương thc/biến của lp

Upload: vinh-tran

Post on 25-Jun-2015

582 views

Category:

Documents


0 download

TRANSCRIPT

MC LCChng 1: GII THIU TNG QUAN V NGN NG LP TRNH JAVA ......................................................................... 7 1.1. M u ......................................................................... 7 1.2. Gii thiu v ngn ng lp trnh Java ............................ 7 1.2.1. Java l g? .............................................................. 7 1.2.2. Lch s pht trin ca ngn ng lp trnh Java ........ 7 1.2.3. Mt s c im ni bc ca ngn ng lp trnh Java ........................................................................................ 8 1.3. Cc ng dng Java ...................................................... 10 1.3.1. Java v ng dng Console .................................... 10 1.3.2. Java v ng dng Applet ...................................... 11 1.3.3. Java v pht trin ng dng Desktop dng AWT v JFC ................................................................................ 12 1.3.4. Java v pht trin ng dng Web.......................... 13 1.3.5. Java v pht trin cc ng dng nhng ................. 14 1.4. Dch v thc thi mt chng trnh vit bng Java ........ 14 1.5. Chng trnh Java u tin.......................................... 15 1.5.1. To chng trnh ngun HelloWordApp .............. 15 1.5.2. Bin dch tp tin ngun HelloWordApp................ 16 1.5.3. Chy chng trnh HelloWordApp ....................... 16 1.5.4. Cu trc chng trnh HelloWordApp .................. 17 S dng phng thc/bin ca lp ................................ 17 1.6. Cng c lp trnh v chng trnh dch........................ 17 1.6.1. J2SDK ................................................................. 17 1.6.2. Cng c son tho m ngun Java. ....................... 18 Chng 2: ............................................................................. 21 HNG, BIN, KIU D LIU, ........................................... 21 TON T, BIU THC V CC ....................................... 21 CU TRC IU KHIN TRONG JAVA .......................... 21 2.1. Bin ............................................................................ 21 2.2. Cc kiu d liu c s ................................................. 23 2.2.1. Kiu s nguyn .................................................... 24 2.2.2. Kiu du chm ng............................................. 26 1

2.2.3. Kiu k t (char) .................................................. 26 2.2.4. Kiu lun l (boolean) .......................................... 27 2.3. Hng: .......................................................................... 27 2.4. Lnh, khi lnh trong java........................................... 28 2.5. Ton t v biu thc ................................................... 29 2.5.1. Ton t s hc...................................................... 29 2.5.2. Ton t trn bit..................................................... 29 2.5.3. Ton t quan h & logic ....................................... 29 2.5.4. Ton t p kiu .................................................... 30 2.5.5. Ton t iu kin ................................................. 30 2.5.6. Th t u tin ...................................................... 30 2.6. Cu trc iu khin ..................................................... 31 2.6.1. Cu trc iu kin if else ................................. 31 2.6.2. Cu trc switch case ........................................ 32 2.6.3. Cu trc lp .......................................................... 32 2.6.4. Cu trc lnh nhy (jump) .................................... 33 2.7. Lp bao kiu d liu c s (Wrapper Class) ................ 33 2.8. Kiu d liu mng....................................................... 34 2.8.1. Khi nim mng ................................................... 34 2.8.2. Khai bo mng ..................................................... 34 2.8.3. Cp pht b nh cho mng ................................... 35 2.8.4. Khi to mng...................................................... 35 2.8.5. Truy cp mng ..................................................... 35 2.9. Mt s v d minh ha: ............................................... 36 Chng 3: HNG I TNG TRONG JAVA ............... 47 3.1. M u ....................................................................... 47 3.2. Lp (Class) ................................................................. 48 3.2.1. Khi nim ............................................................ 48 3.2.2. Khai bo/nh ngha lp ....................................... 48 3.2.3. To i tng ca lp .......................................... 49 3.2.4. Thuc tnh ca lp ............................................... 49 3.2.5. Hm - Phng thc lp (Method)......................... 50 3.2.6. Khi to mt i tng (Constructor)................... 52 3.2.7. Bin this ............................................................... 53 2

3.2.8. Khai bo chng phng thc (overloading method) ...................................................................................... 54 3.3. c im hng i tng trong java ......................... 54 3.3.1. ng gi (encapsulation) ..................................... 55 3.3.2. Tnh a hnh (polymorphism): .............................. 55 3.3.3. Tnh k tha (inheritance) .................................... 57 3.4. Gi (packages) ............................................................ 62 3.5. Giao din (interface) ................................................... 63 3.5.1. Khi nim interface: ............................................. 63 3.5.2. Khai bo interface: ............................................... 64 3.5.3. V d minh ha..................................................... 65 Chng 4: THIT K GIAO DIN NGI DNG ............. 82 4.1. M u ....................................................................... 82 4.2. Gii thiu th vin awt................................................ 83 4.3. Cc khi nim c bn .................................................. 83 4.3.1. Component........................................................... 83 4.3.2. Container ............................................................. 84 4.3.3. Layout Manager ................................................... 85 4.4. Thit k GUI cho chng trnh ................................... 86 4.4.1. To khung cha ca s chng trnh .................... 86 4.4.2. To h thng thc n.......................................... 87 4.4.3. Gn Component vo khung cha .......................... 89 4.4.4. Trnh by cc Component trong khung cha ........ 90 4.4.5. Cc i tng khung cha Container.................. 101 4.5. X l bin c/s kin ................................................ 105 4.5.1. M hnh x l s kin (Event-Handling Model) . 105 4.5.2. X l s kin chut ............................................ 108 4.5.3. X l s kin bn phm ...................................... 111 4.6. Mt s v d minh ha .............................................. 115 Chng 5: LUNG V TP TIN ....................................... 128 5.1. M u ..................................................................... 128 5.2. Lung (Streams) ....................................................... 129 5.2.1. Khi nim lung................................................. 129 5.2.2. Lung byte (Byte Streams) ................................. 129 5.2.3. Lung k t (Character Streams) ........................ 131 3

5.2.4. Nhng lung c nh ngha trc (The Predefined Streams) ...................................................................... 132 5.3. S dng lung Byte .................................................. 133 5.3.1. c d liu t Console ....................................... 134 5.3.2. Xut d liu ra Console ...................................... 135 5.3.3. c v ghi file dng lung Byte ......................... 136 5.3.4. c v ghi d liu nh phn................................ 141 5.4. File truy cp ngu nhin (Random Access Files) ....... 145 5.5. S dng lung k t.................................................. 147 5.5.1. Nhp Console dng lung k t ......................... 149 5.5.2. Xut Console dng lung k t .......................... 151 5.5.3. c/ghi File dng lung k t ............................ 152 5.6. Lp File .................................................................... 155 Chng 6: LP TRNH C S D LIU .......................... 158 6.1. GII THIU............................................................. 158 6.2. KIN TRC JDBC................................................... 158 6.3. Cc khi nim c bn ................................................ 160 6.3.1. JDBC Driver ...................................................... 160 6.3.2. JDBC URL ........................................................ 162 6.4. KT NI CSDL VI JDBC ..................................... 163 6.4.1. ng k trnh iu khin .................................... 163 6.4.2. Thc hin kt ni ............................................... 163 6.4.3. V d .................................................................. 164 6.5. KIU D LIU SQL V KIU D LIU JAVA.... 168 6.6. CC THAO TC C BN TRN CSDL ................ 170 6.6.1. Cc lp c bn ................................................... 170 6.6.2. V d truy vn CSDL ......................................... 171 6.6.3. V d cp nht CSDL ......................................... 174 Ti liu tham kho: .............................................................. 176 Ph lc A: Trc nghim kin thc........................................ 177 Ph Lc B:p n trc nghim kin thc ............................. 205

4

LI NI UNgn ng lp trnh java ra i v c cc nh nghin cu ca Cng ty Sun Microsystem gii thiu vo nm 1995. Sau khi ra i khng lu, ngn ng lp trnh ny c s dng rng ri v ph bin i vi cc lp trnh vin chuyn nghip cng nh cc nh pht trin phn mm. Gn y ngn ng lp trnh, cng ngh java c a vo ging dy cc c s o to lp trnh vin chuyn nghip. Mt s trng i hc Vit Nam dy mn lp trnh java nh mt chuyn t chn cho cc sinh vin cng ngh thng tin giai on chuyn ngnh. Sau mt thi gian tm hiu, lm vic v c tham gia ging dy chuyn lp trnh java cho lp c nhn tin hc t xa qua mng. Nhm tc gi chng ti quyt nh bin son cun gio trnh ny nhm phc v cng tc ging dy cng nh hc tp ca sinh vin chuyn ngnh cng ngh thng tin. Ni dung gio trnh tp trung vo nhng kin thc cn bn nht ca lp trnh java gip ngi c bc u tip cp d dng vi cng ngh mi ny, v y cng chnh l mt bc m chng ta tr thnh java shooter. Mt s vn nng trong ngn ng lp trnh java nh: javabean, thit kt giao din dng th vin JFC(Java Foundation Class), lp trnh mng, lp trnh c s d liu bng java, lp trnh ng dng web dng J2EE (Java 2 Enterprise Edition), s c ni n trong cc chuyn nng cao. Chng 6 ca gio trnh gii thiu tng quan v lp trnh c s d liu dng jdbc, mt ni dung theo chng ti cn phi c trnh by trong mt chuyn ring. c th c hiu gio trnh ny ngi c cn nm vng cc kin thc v: nhp mn lp trnh, lp trnh hng i tng. y l ln xut bn u tin chc chn khng th trnh khi nhng sai st. Nhm tc gi rt mong nhn c nhng kin ng gp ca qu thy c, cc ng nghip v bn c c 5

th hon thin hn gio trnh ny phc v cho vic hc tp ca sinh vin. Xin chn thnh cm n! TPHCM thng 01/2006 Nhm tc gi

6

Chng 1: GII THIU TNG QUAN V NGN NG LP TRNH JAVA1.1.M u Chng ny s cung cp cho sinh vin cc khi nim, kin thc c bn lin quan n vic lp trnh ng dng bng ngn ng Java nh: lch s pht trin ca java, cc c im ca java, khi nim my o, cu trc ca mt chng trnh n gin vit bng Java cng nh cch xy dng, dch v thc thi mt chng trnh Java. 1.2.Gii thiu v ngn ng lp trnh Gi Java 1.2.1. Java l g? Java l ngn ng lp trnh hng i tng (ta C++) do Sun Microsystem a ra vo gia thp nin 90. Chng trnh vit bng ngn ng lp trnh java c th chy trn bt k h thng no c ci my o java (Java Virtual Machine). 1.2.2.Lch s pht trin ca ngn ng lp trnh pht Java Ngn ng lp trnh Java do James Gosling v cc cng s ca Cng ty Sun Microsystem pht trin. u thp nin 90, Sun Microsystem tp hp cc nh nghin cu thnh lp nn nhm t tn l Green Team. Nhm Green Team c trch nhim xy dng cng ngh mi cho ngnh in t tiu dng. gii quyt vn ny nhm nghin cu pht trin xy dng mt ngn ng lp trnh mi t tn l Oak tng t nh C++ nhng loi b mt s tnh nng nguy him ca C++ v c kh nng chy trn nhiu nn phn cng khc nhau. Cng lc world wide web bt u pht trin v Sun thy c tim nng ca ngn ng Oak nn u t ci tin

7

v pht trin. Sau khng lu ngn ng mi vi tn gi l Java ra i v c gii thiu nm 1995. Java l tn gi ca mt hn o Indonexia, y l ni nhm nghin cu pht trin chn t tn cho ngn ng lp trnh Java trong mt chuyn i tham quan v lm vic trn hn o ny. Hn o Java ny l ni rt ni ting vi nhiu khu vn trng cafe, chnh l l do chng ta thng thy biu tng ly caf trong nhiu sn phm phn mm, cng c lp trnh Java ca Sun cng nh mt s hng phn mm khc a ra. 1.2.3.Mt s c im ni bc ca ngn ng lp trnh Java My o Java (JVM - Java Virtual Machine) Tt c cc chng trnh mun thc thi c th phi c bin dch ra m my. M my ca tng kin trc CPU ca mi my tnh l khc nhau (tp lnh m my ca CPU Intel, CPU Solarix, CPU Macintosh l khc nhau), v vy trc y mt chng trnh sau khi c bin dch xong ch c th chy c trn mt kin trc CPU c th no . i vi CPU Intel chng ta c th chy cc h iu hnh nh Microsoft Windows, Unix, Linux, OS/2, Chng trnh thc thi c trn Windows c bin dch di dng file c ui .EXE cn trn Linux th c bin dch di dng file c ui .ELF, v vy trc y mt chng trnh chy c trn Windows mun chy c trn h iu hnh khc nh Linux chng hn th phi chnh sa v bin dch li. Ngn ng lp trnh Java ra i, nh vo my o Java m kh khn nu trn c khc phc. Mt chng trnh vit bng ngn ng lp trnh Java s c bin dch ra m ca my o java (m java bytecode). Sau my o Java chu trch nhim chuyn m java bytecode thnh m my tng ng. Sun Microsystem chu trch nhim pht trin cc my o Java chy trn cc h iu hnh trn cc kin trc CPU khc nhau. Thng dch: 8

Java l mt ngn ng lp trnh va bin dch va thng dch. Chng trnh ngun vit bng ngn ng lp trnh Java c ui *.java u tin c bin dch thnh tp tin c ui *.class v sau s c trnh thng dch thng dch thnh m my. c lp nn: Mt chng trnh vit bng ngn ng Java c th chy trn nhiu my tnh c h iu hnh khc nhau (Windows, Unix, Linux, ) min sao c ci t my o java (Java Virtual Machine). Vit mt ln chy mi ni (write once run anywhere). Hng i tng: Hng i tng trong Java tng t nh C++ nhng Java l mt ngn ng lp trnh hng i tng hon ton. Tt c mi th cp n trong Java u lin quan n cc i tng c nh ngha trc, thm ch hm chnh ca mt chng trnh vit bng Java ( l hm main) cng phi t bn trong mt lp. Hng i tng trong Java khng c tnh a k tha (multi inheritance) nh trong C++ m thay vo Java a ra khi nim interface h tr tnh a k tha. Vn ny s c bn chi tit trong chng 3. a nhim - a lung (MultiTasking - Multithreading): Java h tr lp trnh a nhim, a lung cho php nhiu tin trnh, tiu trnh c th chy song song cng mt thi im v tng tc vi nhau. Kh chuyn (portable): Chng trnh ng dng vit bng ngn ng Java ch cn chy c trn my o Java l c th chy c trn bt k my tnh, h iu hnh no c my o Java. Vit mt ln, chy mi ni (Write Once, Run Anywhere). H tr mnh cho vic pht trin ng dng: 9

Cng ngh Java pht trin mnh m nh vo i gia Sun Microsystem cung cp nhiu cng c, th vin lp trnh phong ph h tr cho vic pht trin nhiu loi hnh ng dng khc nhau c th nh: J2SE (Java 2 Standard Edition) h tr pht trin nhng ng dng n, ng dng client-server; J2EE (Java 2 Enterprise Edition) h tr pht trin cc ng dng thng mi, J2ME (Java 2 Micro Edition) h tr pht trin cc ng dng trn cc thit b di ng, khng dy, 1.3.Cc Java 1.3.1.Java Console Con ng dng dng v n g dng dng

ng dng Console l ng dng nhp xut ch vn bn tng t nh mn hnh Console ca h iu hnh MSDOS. Lai chng trnh ng dng ny thch hp vi nhng ai bc u lm quen vi ngn ng lp trnh java. Cc ng dng kiu Console thng c dng minh ha cc v d c bn lin quan n c php ngn ng, cc thut ton, v cc chng trnh ng dng khng cn thit n giao din ngi dng ha.

class HelloWorld { public static void main(String[] args) 10

{ System.out.println("\nHello World"); } } 1.3.2.Java v Applet ppl ng dng dng

Java Applet l loi ng dng c th nhng v chy trong trang web ca mt trnh duyt web. T khi internet mi ra i, Java Applet cung cp mt kh nng lp trnh mnh m cho cc trang web. Nhng gn y khi cc chng trnh duyt web pht trin vi kh nng lp trnh bng VB Script, Java Script, HTML, DHTML, XML, cng vi s canh tranh khc lit ca Microsoft v Sun lm cho Java Applet lu m. V cho n by gi gn nh cc lp trnh vin u khng cn mn m vi Java Applet na. (trnh duyt IE i km trong phin bn Windows 2000 khng cn mc nhin h tr thc thi mt ng dng Java Applet). Hnh bn di minh ha mt chng trnh java applet thc thi trong mt trang web.

11

1.3.3.Java v pht trin ng dng Desktop dng AWT pht dng dng v JFC Vic pht trin cc chng trnh ng dng c giao din ngi dng ha trc quan ging nh nhng chng trnh c vit dng ngn ng lp trnh VC++ hay Visual Basic c java gii quyt bng th vin AWT v JFC. JFC l th vin rt phong ph v h tr mnh m hn nhiu so vi AWT. JFC gip cho ngi lp trnh c th to ra mt giao din trc quan ca bt k ng dng no. Lin quan n vic pht trin cc ng dng c giao din ngi dng ha trc quan chng ta s tm hiu chi tit trong chng 4. Minh ha thit k giao din ngi dng s dng JFC

12

1.3.4.Java v pht trin pht Web

ng dng dng

Java h tr mnh m i vi vic pht trin cc ng dng Web thng qua cng ngh J2EE (Java 2 Enterprise Edition). Cng ngh J2EE hon ton c th to ra cc ng dng Web mt cch hiu qu khng thua km cng ngh .NET m Microsft ang qung co. Hin nay c rt nhiu trang Web ni ting Vit Nam cng nh khp ni trn th gii c xy dng v pht trin da trn nn cng ngh Java. S ng dng Web c xy dng dng cng ngh Java chc chn khng ai c th bit c con s chnh xc l bao nhiu, nhng chng ti a ra y vi v d thy rng cng ngh Java ca Sun l mt i th ng gm ca Microsoft. 13

http://java.sun.com/ http://e-docs.bea.com/ http://www.macromedia.com/software/jrun / http://tomcat.apache.org/index.html Chc khng t ngi trong chng ta bit n trang web thng tin nh t ni ting TPHCM l: http://www.nhadat.com/. ng dng Web ny cng c xy dng da trn nn cng ngh java. Bn c th tm hiu chi tit hn v cng ngh J2EE to a ch: http://java.sun.com/j2ee/ 1.3.5.Java v pht trin cc pht nhng nhng ng dng dng

Java Sun a ra cng ngh J2ME (The Java 2 Platform, Micro Edition J2ME) h tr pht trin cc chng trnh, phn mm nhng. J2ME cung cp mt mi trng cho nhng chng trnh ng dng c th chy c trn cc thit b c nhn nh: in thai di ng, my tnh b ti PDA hay Palm, cng nh cc thit b nhng khc.

Bn c th tm hiu chi tit hn v cng ngh J2ME ti a ch: http://java.sun.com/j2me/ 1.4.Dch v thc thi mt chng trnh vit bng Java vi Vic xy dng, dch v thc thi mt chng trnh vit bng ngn ng lp trnh java c th tm tt qua cc bc sau: - Vit m ngun: dng mt chng trnh son tho no y (NotePad hay Jcreator chng hn) vit m ngun v lu li vi tn c ui .java 14

-

Bin dch ra m my o: dng trnh bin dch javac bin dch m ngun .java thnh m ca my o (java bytecode) c ui .class v lu ln a Thng dch v thc thi: ng dng c load vo b nh, thng dch v thc thi dng trnh thng dch Java thng qua lnh java. o a m java bytecode vo b nh: y l bc loading. Chng trnh phi c t vo trong b nh trc khi thc thi. Loader s ly cc files cha m java bytecode c ui .class v np chng vo b nh. o Kim tra m java bytecode: trc khi trnh thng dch chuyn m bytecode thnh m my tng ng thc thi th cc m bytecode phi c kim tra tnh hp l. o Thng dch & thc thi: cui cng di s iu khin ca CPU v trnh thng dch ti mi thi im s c mt m bytecode c chuyn sang m my v thc thi.

1.5.Chng trnh Java u tin 1.5.1.To chng trnh ngun HelloWordApp lloWor Khi ng Notepad v g on m sau Kh ote /*Vit chng trnh in dng HelloWorld ln mn hnh /*V lloW Console*/ ons ole class HelloWorldApp{ las lloW ldA public static void main(String[] args){ main( Str ing[ //In dong chu HelloWorld I // lloW System.out.println(HelloWorld); out. intln( lloW ld } } Lu li vi tn HelloWorldApp.java 15

1.5.2.Bin dch tp tin ngun HelloWordApp dc lloWor Vic bin dch tp tin m ngun chng trnh gu HelloWorldApp c th thc hin qua cc bc c th nh sau: o c ll c nh - M ca s Command Prompt. mma - Chuyn n th mc cha tp tin ngun va to ra. gu - Thc hin cu lnh: javac HelloWordApp.java cu nh: lloWor pp.java Nu gp thng bo li Bad Command of filename hoc The name specified is not recognized as an internal or external command, operable program or batch file c ngha l Windows khng tm c trnh bin dch javac. sa li ny chng ta cn cp nht li ng dn PATH ca h thng. Ngc li nu thnhcng bn s c thm tp tin HelloWordApp.class 1.5.3.Chy chng trnh HelloWordApp lloWor Ti du nhc g lnh: java HelloWordApp nh nh: lloWor Nu chng trnh ng bn s thy dng ch HelloWord trn mn hnh Console. llo Nu cc bn nhn c li Exception in thread cc nh cep ead "main java.lang.NoClassDefFoundError: ssD Erro HelloWorldApp c ngha l Java khng th tm c llo tp tin m bytecode tn HelloWorldApp.class ca cc eco llo pp. cc bn. Mt trong nhng ni java c tm tp tin bytecode o nh ec l th mc hin ti ca

16

cc bn. V th nu tp tin byte code c t cc C:\java th cc bn nn thay i ng dn ti . :\j cc 1.5.4.Cu trc chng trnh HelloWordApp lloWor Phng thc main(): l im bt u thc thi mt ng ain (): dng. Mi ng dng Java phi cha mt phng thc main c dn dn dng nh sau: public static void main(String[] args) nh publ ain Phng thc main cha ba b t c t sau: public ch ra rng phng thc main c th c publ gi bi bt k i tng no. static ch ra rng phng thc main l mt phng st thc lp. void ch ra rng phng thc main s khng tr v bt k mt gi tr no. Ngn ng Java h tr ba kiu ch thch sau: /* text ext */ // text /** documentation */. Cng c javadoc trong b JDK s dng ch thch ny chun b cho vic t ng pht sinh ti dn liu. li - Du m v ng ngo8c nhn { v }: l bt u v nh kt thc 1 khi lnh. nh. - Du chm phy ; kt thc 1 dng lnh. nh. 1.5.5.S lp C php: dng phng thc/bin ca dng ph Tn_lp.Tn_bin .T hoc Tn_lp.Tn_phng_thc() .T _ph g_t lp trnh v chng trnh

1.6.Cng c Cn dch dc 1.6.1.J2SDK J2S -

Download J2SE phin bn mi nht tng ng vi h iu hnh ang s dng t a ch java.sun.com v ci 17

t ln my tnh (phin bn c chng ti s dng khi vit gio trnh ny l J2SE 1.4). Sau khi ci xong, chng ta cn cp nht ng dn PATH h thng ch n th mc cha chng trnh dch ca ngn ng java.

1.6.2.Cng c son tho m ngun Java. Cn vit m ngun java chng ta c th s dng trnh son tho NotePad hoc mt s mi trng pht trin h tr ngn ng java nh: Jbuilder ca hng Borland, Visual Caf ca hng Symantec, JDeveloper ca hng Oracle, Visual J++ ca Microsoft, Trong khun kh gio trnh ny cng nh hng dn sinh vin thc hnh chng ti dng cng c JCreator LE v3.50 ca hng XINOX Software. Cc bn c th download JCreator LE v3.50 t http://www.jcreator.com/download.htm. JCr eator V d: Dng JCreator to v thc thi chng trnh c tn Cre th HelloWorldApp. lloW ldA Bc 1: To 1 Empty Project oject 18

-

File New Froject. oject. Chn Empty project ri bm nt chn Next ect oj ext

-

Sau nhp tn project v bm chn Finish. oject inis

Bc 2: To mt Class mi tn HelloWorldApp v a vo Froject hin ti. las lloW ldA oject hi - File New Class. lass. - Nhp vo tn Class v chn Finish (hnh bn di). las inis

19

Bc 3: Son tho m ngun (hnh bn di)Dch (F7)

Thc thi (F5)

Ca s WorkSpace

Ca s son tho m ngun

20

C h ng 2 : HNG, BIN, KIU D LIU, TON T, BIU THC V CC CU TRC IU KHIN TRONG JAVA2.1.Bin Bin l vng nh dng lu tr cc gi tr ca nh dn cc chng trnh. Mi bin gn lin vi mt kiu d . nh li liu v mt nh danh duy nht gi l tn bin. li nh - Tn bin thng thng l mt chui cc k t cc (Unicode), k s. o Tn bin phi bt u bng mt ch ci, mt ci du gch di hay du dollar. ch d o Tn bin khng c trng vi cc t kha cc (xem ph lc cc t kha trong java). cc o Tn bin khng c khong trng gia tn. - Trong java, bin c th c khai bo bt k ni Tro u trong chng trnh. nh. Cch khai bo Cc ; u_d_ = ; u_d_ Gn gi tr cho bin = ; Bin cng cng (ton cc): l bin c th truy xut khp ni trong chng trnh, thng c khai bo dng t kha public, hoc t chng trong mt class. Bin cc b: l bin ch c th truy xut trong khi lnh n khai bo. -

21

Lu : Trong ngn ng lp trnh java c phn bit ch in hoa v in thng. V vy chng ta cn lu khi t tn cho cc i tng d liu cng nh cc x l trong chng trnh. V d: import java.lang.*; import java.io.*; class VariableDemo { static int x, y; public static void main(String[] args) { x = 10; y = 20; int z = x+y; System.out.println("x = " + x); System.out.println("y = " + y); System.out.println("z = x + y =" + z); System.out.println("So nho hon la so:" + Math.min(x, y)); char c = 80; System.out.println("ky tu c la: " + c); } } Kt qu chng trnh

22

2.2.Cc kiu d liu c s Ngn ng lp trnh java c 8 kiu d liu c s: byte, short, int, long, float, double, boolean v char.

23

Kiu c s Kiu lun l Kiu k t kiu nguyn Kiu s kiu thc

boolean

char

byte

short

int

long

float

double

Kiu byte short int long float double

Kch thc (bytes) 1 2 4 8 4 8

Gi tr min -256 -32768 31 -2 63 -2

Gi tr max 255 32767 31 2 -1 63 2 -1

Gi tr mc nh 0 0 0 0L 0.0f 0.0d

2.2.1.Kiu s nguyn Java cung cp 4 kiu s nguyn khc nhau l: byte, short, int, long. Kch thc, gi tr nh nht, ln nht, cng nh gi tr mc nh ca cc kiu d liu s nguyn c m t chi tit trong bng trn. Kiu mc nh ca cc s nguyn l kiu int. Cc s nguyn kiu byte v short rt t khi c dng. Trong java khng c kiu s nguyn khng du nh trong ngn ng C/C++. 24

-

Khai bo v khi to gi tr cho cc bin kiu nguyn: int x = 0; long y = 100; Mt s lu i vi cc php ton trn s nguyn: - Nu hai ton hng kiu long th kt qu l kiu long. Mt trong hai ton hng khng phi kiu long s c chuyn thnh kiu long trc khi thc hin php ton. - Nu hai ton hng u khng phi kiu long th php tnh s thc hin vi kiu int. - Cc ton hng kiu byte hay short s c chuyn sang kiu int trc khi thc hin php ton. - Trong java khng th chuyn bin kiu int v kiu boolean nh trong ngn ng C/C++. V d: c on chng trnh nh sau boolean b = false; if (b == 0) { System.out.println("Xin chao"); } Lc bin dch on chng trnh trn trnh dch s bo li: khng c php so snh bin kiu boolean vi mt gi tr kiu int.

25

2.2.2.Kiu du chm ng i vi kiu du chm ng hay kiu thc, java h tr hai kiu d liu l float v double. Kiu float c kch thc 4 byte v gi tr mc nh l 0.0f Kiu double c kch thc 8 byte v gi tr mc nh l 0.0d S kiu du chm ng khng c gi tr nh nht cng khng c gi tr ln nht. Chng c th nhn cc gi tr: - S m - S dng - V cc m - V cc dng Khai bo v khi to gi tr cho cc bin kiu du chm ng: float x = 100.0/7; double y = 1.56E6; Mt s lu i vi cc php ton trn s du chm ng: - Nu mi ton hng u c kiu dn chm ng th php ton chuyn thnh php ton du chm ng. - Nu c mt ton hng l double th cc ton hng cn li s c chuyn thnh kiu double trc khi thc hin php ton. - Bin kiu float v double c th p chuyn sang kiu d liu khc tr kiu boolean. 2.2.3.Kiu (char) k t

Kiu k t trong ngn ng lp trnh java c kch thc l 2 bytes v ch dng biu din cc k t trong b m Unicode. Nh vy kiu char trong java c th biu din tt c 16 2 = 65536 k t khc nhau. Gi tr mc nh cho mt bin kiu char l null.

26

2.2.4.Kiu lun l (boolean) ool Kiu boolean ch nhn 1 trong 2 gi tr: true hoc false. Trong java kiu boolean khng th chuyn thnh kiu nguyn v ngc li. Gi tr mc nh ca kiu boolean l false.

2.3.Hng: Hn Hng l mt gi tr bt bin trong chng trnh Tn hng c t theo qui c ging nh tn bin. Hng s nguyn: trng hp gi tr hng dng long ta thm vo cui chui s ch l hay L. (v d: 1L) Hng s thc: trung hp gi tr hng c kiu float ta thm tip v ng f hay F, cn kiu s double th ta thm tip v ng d hay D. Hng Boolean: java c 2 hng boolean l true, false. Hng k t: l mt k t n nm gia nm gia 2 du ngoc n. o V d: a: hng k t a o Mt s hng k t c bit K t \b \t \n \r \ \ \\ \f \uxxxx ngha Xa li (BackSpace) Tab Xung hng Du enter Nhy kp Nhy n S ngc y trang K t unicode

27

-

Hng chui: l tp hp cc k t c t gia hai du nhy kp . Mt hng chui khng c k t no l mt hng chui rng. o V d: Hello Wolrd o Lu : Hng chui khng phi l mt kiu d liu c s nhng vn c khai bo v s dng trong cc chng trnh.

2.4.Lnh, khi lnh trong java .L nh, Ging nh trong ngn ng C, cc cu lnh trong java kt thc bng mt du chm phy (;). Mt khi lnh l on chng trnh gm hai lnh tr ln v c bt u bng du m ngoc nhn ({) v kt thc bng du ng ngoc nhc (}). Bn trong mt khi lnh c th cha mt hay nhiu lnh hoc cha cc khi lnh khc. { // khi 1 { // khi 2 lnh 2.1 lnh 2.2 } // kt thc khi lnh 2 lnh 1.1 lnh 1.2 } // kt thc khi lnh 1 { // bt u khi lnh 3 // Cc lnh thuc khi lnh 3 // } // kt thc thi lnh 3

28

2.5.Ton t v biu thc .Ton 2.5.1.Ton t s hc Ton t + * / % ++ - ngha Cng Tr Nhn Chia nguyn Chia d Tng 1 Gim 1

2.5.2.Ton t trn bit Ton t & | ^ > >>> ~ ngha AND OR XOR Dch tri Dch phi Dch phi v in 0 vo bit trng B bit

2.5.3.Ton t quan h & logic quan Ton t == != > < >= ph Nu iu kin ng th c gi tr, hay thc hin , cn ngc li l . g : l mt biu thc logic , : c th l hai gi tr, hai biu thc hoc hai hnh ng. V d: int x = 10; int y = 20; int Z = (x> > == & ^ | && || ?: = Thp nht

[] -/ >>> (dch phi vin 0 vo bit trng)

. ~ % = !=

} Dng 2: Dn if () u_ki { ; nh1 } else { ; nh2 31

} 2.6.2.Cu trc switch case wit switch () { case : cas _1> ; nh_1> break; eak; . case : cas ; nh_ break; eak; default: ; } 2.6.3.Cu trc lp Dng 1: while() Dn while (iu_kin_lp) u_ki { khi _lnh; nh; } Dng 2: do { } while; Dn do { khi_lnh; nh; } while (iu_kin); u_ki Dng 3: for () Dn for (khi_to_bin_m;k_llp;tng_bin) _ k_ g_b { ; nh> 32

2.6.4.Cu trc lnh nhy (jump) nhy (ju Lnh break: trong cu trc switch chng ta dng cu lnh break thot thi cu trc switch trong cng cha n. Tng t nh vy, trong cu trc lp, cu lnh break dng that khi cu trc lp trong cng cha n. Lnh continue: dng tip tc vng lp trong cng cha n (ngc vi break). Nhn (label): Khng ging nh C/C++, Java khng h tr lnh goto nhy n 1 v tr no ca chng trnh. Java dng kt hp nhn (label) vi t kha break v continue thay th cho lnh goto. V d: label: for () { for () { if () break label; else continue label; } } Lnh label: xc nh v tr ca nhn v xem nh tn ca vng lp ngoi. Nu ng th lnh break label s thc hin vic nhy ra khi vng lp c nhn l label, ngc li s tip tc vng lp c nhn label (khc vi break v continue thng thng ch thot khi hay tip tc vng lp trong cng cha n.). 2.7.Lp bao kiu d liu c s (Wrapper .L ppe Class) ss) Data type Wrapper Class 33 Ghi ch

boolean byte short char int long Float double

(java.lang.*) Boolean Byte Short Character Integer Long Float Double

- Gi (package): cha nhm nhiu class. - Ngoi cc Wrapper Class, gi java.lang cn cung cp cc lp nn tng cho vic thit k ngn ng java nh: String, Math,

2.8.Kiu d liu mng Nh chng ta bit Java c 2 kiu d liu - Kiu d liu c s (Primitive data type) - Kiu d liu tham chiu hay dn xut (reference data type): thng c 3 kiu: o Kiu mng o Kiu lp o Kiu giao tip(interface). y chng ta s tm hiu mt s vn c bn lin quan n kiu mng. Kiu lp(class) v giao tip(interface) chng ta s tm hiu chi tit trong chng 3 v cc chng sau. 2.8.1.Khi nim mng Mng l tp hp nhiu phn t c cng tn, cng kiu d liu v mi phn t trong mng c truy xut thng qua ch s ca n trong mng. 2.8.2.Khai bo mng hoc V d: hoc int int[] arrInt[]; arrInt; 34 [] []; ;

int[]

arrInt1, arrInt2, arrInt3;

2.8.3.Cp pht b nh cho mng pht nh - Khng ging nh trong C, C++ kch thc ca mng c xc nh khi khai bo. Chng hn nh: int arrInt[100]; // Khai bo ny trong Java s b bo li. - cp pht b nh cho mng trong Java ta cn dng t kha new. (Tt c trong Java u thng qua cc i tng). Chng hn cp pht vng nh cho mng trong Java ta lm nh sau: int arrInt = new int[100]; 2.8.4.Khi to mng Chng ta c th khi to gi tr ban u cho cc phn t ca mng khi n c khai bo. V d: int arrInt[] = {1, 2, 3}; char arrChar[] = {a, b, c}; String arrStrng[] = {ABC, EFG, GHI}; 2.8.5.Truy cp mng Ch s mng trong Java bt u t 0. V vy phn t u tin c ch s l 0, v phn t th n c ch s l n-1. Cc phn t ca mng c truy xut thng qua ch s ca n t gia cp du ngoc vung ([]). V d: int arrInt[] = {1, 2, 3}; int x = arrInt[0]; // x s c gi tr l 1. int y = arrInt[1]; // y s c gi tr l 2. int z = arrInt[2]; // z s c gi tr l 3. Lu : Trong nhng ngn ng lp trnh khc (C chng hn), mt chui c xem nh mt mng cc k t. Trong java th 35

khc, java cung cp mt lp String lm vic vi i tng d liu chui cng khc thao tc trn i tng d liu ny. 2.9.Mt s v d minh ha: V d 1: Nhp k t t bn phm import java.io.*; /* gi ny cung cp th vin xut nhp h thng thng qua nhng lung d //liu v h thng file.*/ class InputChar { public static void main(String args[]) { char ch = ; try { ch = (char) System.in.read(); } catch(Exception e) { System.out.println(Nhp li!); } System.out.println(Ky tu vua nhap: + ch); } } V d 2: Nhp d liu s import java.io.*; class inputNum { public static void main(String[] args) { int n=0; try { BufferedReader in = new BufferedReader( 36

new InputStreamReader( System.in)); String s; s = in.readLine(); n = Integer.parseInt(s); } catch(Exception e) { System.out.println(Nhp d liu b li !); } System.out.println(Bn va nhp s: + n); } } V d 3: Nhp v xut gi tr cc phn t ca mt mng cc s nguyn. class ArrayDemo { public static void main(String args[]) { int arrInt[] = new int[10]; int i; for(i = 0; i < 10; i = i+1) arrInt[i] = i; for(i = 0; i < 10; i = i+1) System.out.println("This is arrInt[" + i + "]: " + arrInt[i]); } }

37

V d 4: Tm phn t c gi tr nh nht (Min) v ln nht (Max) trong mt mng. class MinMax { public static void main(String args[]) { int nums[] = new int[10]; int min, max; nums[0] = 99; nums[1] = -10; nums[2] = 100123; nums[3] = 18; nums[4] = -978; nums[5] = 5623; nums[6] = 463; nums[7] = -9; nums[8] = 287; nums[9] = 49; min = max = nums[0]; for(int i=1; i < 10; i++) { if(nums[i] < min) min = nums[i]; if(nums[i] > max) max = nums[i]; } System.out.println("min and max: " + min + " " + max); } } class MinMax2 38

{ public static void main(String args[]) { int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 }; int min, max; min = max = nums[0]; for(int i=1; i < 10; i++) { if(nums[i] < min) min = nums[i]; if(nums[i] > max) max = nums[i]; } System.out.println("Min and max: " + min + " " + max); } }

V d 5: chng trnh minh ha mt li tham chiu n phn t bn ngoi (vut qu) kch thc mng. class ArrayErr { public static void main(String args[]) { int sample[] = new int[10]; int i; for(i = 0; i < 100; i = i+1) sample[i] = i; } }

39

V d 6: Sp xp mng dng phng php sp xp ni bt (Bubble Sort) class BubbleSort { public static void main(String args[]) { int nums[] = { 99, -10, 100123, 18, -978, 5623, 463, -9, 287, 49 }; int a, b, t; int size; size = 10; // number of elements to sort // display original array System.out.print("Original array is:"); for(int i=0; i < size; i++) System.out.print(" " + nums[i]); System.out.println(); // This is the Bubble sort. for(a=1; a < size; a++) for(b=size-1; b >= a; b--) { if(nums[b-1] > nums[b]) { // if out of order // exchange elements t = nums[b-1]; nums[b-1] = nums[b]; nums[b] = t; } } // display sorted array 40

System.out.print("Sorted array is:"); for(int i=0; i < size; i++) System.out.print(" " + nums[i]); System.out.println(); } }

V d 7: Nhp v xut gi tr ca cc phn t trong mt mng hai chiu. class TwoD_Arr { public static void main(String args[]) { int t, i; int table[][] = new int[3][4]; for(t=0; t < 3; ++t) { for(i=0; i < 4; ++i) { table[t][i] = (t*4)+i+1; System.out.print(table[t][i] + " "); } System.out.println(); } } }

41

V d 8: To i tng chui class StringDemo { public static void main(String args[]) { // Tao chuoi bang nhieu cach khac nhau String str1 = new String("Chuoi trong java la nhung Objects."); String str2 = "Chung duoc xay dung bang nhieu cach khac nhau."; String str3 = new String(str2); System.out.println(str1); System.out.println(str2); System.out.println(str3); } }

V d 9: Minh ha mt s thao tc c bn trn chui // Chuong trinh minh hoa cac thao tac tren chuoi ky tu class StrOps { public static void main(String args[]) { String str1 = "Java la chon lua so mot cho lap trinh ung dung Web."; String str2 = new String(str1); String str3 = "Java ho tro doi tuong String de xu ly chuoi"; 42

int result, idx; char ch; System.out.println("str1:" + str1); System.out.println("str2:" + str2); System.out.println("str3:" + str3); System.out.println("Chieu dai cua chuoi str1 la: " + str1.length()); // Hien thi chuoi str1, moi lan mot ky tu. System.out.println(); for(int i=0; i < str1.length(); i++) System.out.print(str1.charAt(i)); System.out.println(); if(str1.equals(str2)) System.out.println("str1 == str2"); else System.out.println("str1 != str2"); if(str1.equals(str3)) System.out.println("str1 == str3"); else System.out.println("str1 != str3"); result = str1.compareTo(str3); if(result == 0) System.out.println("str1 = str3 "); else if(result < 0) System.out.println("str1 < str3"); else System.out.println("str1 > str3"); 43

// Tao chuoi moi cho str4 String str4 = "Mot Hai Ba Mot"; idx = str4.indexOf("Mot"); System.out.println("str4:" + str4); System.out.println("Vi tri xuat hien dau tien cua chuoi con 'Mot' trong str4: " + idx); idx = str4.lastIndexOf("Mot"); System.out.println("Vi tri xuat hien sau cung cua chuoi con 'Mot' trong str4:" + idx); } }

V d 10: chng trnh nhp vo mt chui v in ra chui nghch o ca chui nhp. import java.lang.String; import java.io.*; public class InverstString { public static void main(String arg[]) { System.out.println("\n *** CHUONG TRINH IN CHUOI NGUOC *** "); try 44

{

System.out.println("\n *** Nhap chuoi:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // Class BufferedReader cho php c text t lung nhp k t, to b m cho nhng k t h tr cho vic c nhng k t, nhng mng hay nhng dng. // Doc 1 dong tu BufferReadered ket thuc bang dau ket thuc dong. String str = in.readLine(); System.out.println("\n Chuoi vua nhap la:" + str); // Xuat chuoi nghich dao System.out.println("\n Chuoi nghich dao la:"); for (int i=str.length()-1; i>=0; i--) { System.out.print(str.charAt(i)); }

} catch (IOException e) { System.out.println(e.toString()); } } } V d 11: Ly chui con ca mt chui class SubStr { public static void main(String args[]) { 45

String orgstr = "Mot Hai Ba Bon"; // Lay chuoi con dung ham // public String substring(int beginIndex, int // endIndex) String substr = orgstr.substring(4, 7); System.out.println("Chuoi goc: " + orgstr); System.out.println("Chuoi con: " + substr); } }

V d 12: Mng cc chui class StringArray { public static void main(String args[]) { String str[] = {"Mot", "Hai", "Ba", "Bon" }; System.out.print("Mang goc: "); for(int i=0; i < str.length; i++) System.out.print(str[i] + " "); System.out.println("\n"); // Thay doi chuoi str[0] = "Bon"; str[1] = "Ba"; str[2] = "Hai"; str[3] = "Mot"; System.out.print("Mang thay doi:"); for(int i=0; i < str.length; i++) System.out.print(str[i] + " "); 46

System.out.print("\n"); } }

Chng 3: HNG I TNG TRONG JAVA3.1.M u Thng qua chuyn lp trnh hng i tng (OOP) chng ta bit OOP l mt trong nhng tip cn mnh m, v 47

rt hiu qu xy dng nn nhng chng trnh ng dng trn my tnh. T khi ra i cho n nay lp trnh OOP chng t c sc mnh, vai tr ca n trong cc n tin hc. Chng h ny s gip bn c tm hiu v cc kiu d liu dn xut cc li l lp (class) v giao tip (interface), cng nh cc vn c ss) ace) nh cc bn v lp trnh hng i tng trong java thng qua vic to lp cc lp, cc i tng v cc tnh cht ca chng. cc cc cc 3.2.Lp (Class) .L ss) 3.2.1.Khi nim Chng ta c th xem lp nh mt khun mu (template) ca i tng (Object). Trong bao gm d liu ca i tng (fields hay properties) v cc phng thc(methods) tc ng ln thnh phn d liu gi l cc phng thc ca lp. Cc i tng c xy dng bi cc lp nn c gi l cc th hin ca lp (class instance). 3.2.2.Khai bo/nh ngha lp o/nh ha class { ; ; constructor method_1 method_2 } class: l t kha ca java ClassName: l tn chng ta t cho lp field_1, field_2: cc thuc tnh, cc bin, hay cc thnh phn d liu ca lp. constructor: l s xy dng, khi to i tng lp. method_1, method_2: l cc phng thc/hm th hin cc thao tc x l, tc ng ln cc thnh phn d liu ca lp. 48

3.2.3.To i tng ca lp ClassName objectName = new ClassName(); 3.2.4.Thuc tnh ca lp huc Vng d liu (fields) hay thuc tnh (properties) ca lp c khai bo bn trong lp nh sau: class { // khai bo nhng thuc tnh ca lp field1; // } xc nh quyn truy xut ca cc i tng khc i vi vng d liu ca lp ngi ta thng dng 3 tin t sau: public: c th truy xut t tt c cc i tng khc private: mt lp khng th truy xut vng private ca 1 lp khc. protected: vng protected ca 1 lp ch cho php bn thn lp v nhng lp dn xut t lp truy cp n. V d: public class xemay { public public private protected

String String float int

nhasx; model; chiphisx; thoigiansx;

// so luong so cua xe may: 3, 4 so protected int so; // sobanhxe l bin tnh c gi tr l 2 trong tt c // cc th hin to ra t lp xemay 49

public static }

int

sobanhxe = 2;

Thuc tnh nhasx, modelc th c truy cp n t tt c cc i tng khc. Thuc tnh chiphisx ch c th truy cp c t cc i tng c kiu xemay Thuc tnh thoigiansx, so c th truy cp c t cc i tng c kiu xemay v cc i tng ca cc lp con dn xut t lp xemay Lu : Thng thng an ton cho vng d liu ca cc i tng ngi ta trnh dng tin t public, m thng chn tin t private ngn cn quyn truy cp n vng d liu ca mt lp t cc phng thc bn ngoi lp . 3.2.5.Hm - Phng thc lp (Method) Hm hay phng t hc (method) trong Java l khi lnh thc hin cc chc nng, cc hnh vi x l ca lp ln vng d liu. Khai bo phng thc: () { ; } xc nh quyn truy xut ca cc i tng khc i vi cc phng thc ca lp ngi ta thng dng cc tin t sau: public: phng thc c th truy cp c t bn ngoi lp khai bo. protected: c th truy cp c t lp khai bo v nhng lp dn xut t n. private: ch c truy cp bn trong bn thn lp khai bo. 50

static: phng thc lp dng chung cho tt c cc th hin ca lp, c ngha l phng thc c th c thc hin k c khi khng c i tng ca lp cha phng thc . final: phng thc c tin t ny khng c khai bo chng cc lp dn xut. abstract: phng thc khng cn ci t (khng c phn source code), s c hin thc trong cc lp dn xut t lp ny. synchoronized: dng ngn cc tc ng ca cc i tng khc ln i tng ang xt trong khi ang ng b ha. Dng trong lp trnh miltithreads. : c th l kiu void, kiu c s hay mt lp. : t theo qui c ging tn bin. : c th rng Lu : Thng thng trong mt lp cc phng thc nn c khai bo dng t kha public, khc vi vng d liu thng l dng tin t private v mc ch an ton. Nhng bin nm trong mt phng thc ca lp l cc bin cc b (local) v nn c khia to sau khi khai bo. V d: public class xemay { public public private protected

String String float int

nhasx; model; chiphisx; thoigiansx;

// so luong so cua xe may: 3, 4 so protected int so;

51

// l bin tnh c gi tr l 2 trong tt c // cc th hin to ra t lp xemay public static int sobanhxe = 2; public float tinhgiaban() { return 1.5 * chiphisx; } } 3.2.6.Khi to (Constructor) Con mt i tng

Contructor tht ra l mt loi phng thc c bit ca lp. Constructor dng gi t ng khi khi to mt th hin ca lp, c th dng khi gn nhng gi tr mc nh. Cc constructor khng c gi tr tr v, v c th c tham s hoc khng c tham s. Constructor phi c cng tn vi lp v c gi n dng t kha new. Nu mt lp khng c constructor th java s cung cp cho lp mt constructor mc nh (default constructor). Nhng thuc tnh, bin ca lp s c khi to bi cc gi tr mc nh (s: thng l gi tr 0, kiu lun l l gi tr false, kiu i tng gi tr null, ) Lu : thng thng an ton, d kim sot v lm ch m ngun chng trnh chng ta nn khai bo mt constructor cho lp. V d: public class xemay { // public xemay() 52

{} public xemay(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx, int i_so); { nhasx = s_nhasx; model = s_model; chiphisx = f_chiphisx; thoigiansx = i_thoigiansx; so = i_so; // hoc // this.nhasx = s_nhasx; // this.model = s_model; // this.chiphisx = f_chiphisx; // this.thoigiansx = i_thoigiansx; // this.so = i_so; } } 3.2.7.Bin this Bin this l mt bin n tn ti trong tt c cc lp trong ngng ng java. Mt class trong Java lun tn ti mt bin this, bin this c s dng trong khi chy v tham kho n bn thn lp cha n. V d: class A { int ; String ; // Contructor ca lp A public A(int par_1, String par_2) { 53

this.field_1 = par_1; this.field_2 = par_2; } () { // } () { this.method_1() // } } 3.2.8.Khai bo chng phng thc (overloading method) ph ove oad Vic khai bo trong mt lp nhiu phng thc c cng tn nhng khc tham s (khc kiu d liu, khc s lng tham s) gi l khai bo chng phng thc (overloading method). V d: public class xemay { // khai bo fields public float tinhgiaban() { return 2 * chiphisx; } public float tinhgiaban(float huehong) { return (2 * chiphisx + huehong); } } 3.3.c im hng i tng trong java H tr nhng nguyn tc c bn ca lp trnh hng i tng, tt c cc ngn ng lp trnh k c java u c ba c 54

im chung: tnh ng gi (encapsulation), tnh a hnh (polymorphism), v tnh k tha (inheritance). 3.3.1.ng gi (encapsulation) ion C ch ng gi trong lp trnh hng i tng gip cho cc i tng du i mt phn cc chi tit ci t, cng nh phn d liu cc b ca n, v ch cng b ra ngoi nhng g cn cng b trao i vi cc i tng khc. Hay chng ta c th ni i tng l mt thnh t h tr tnh ng gi. n v ng gi c bn ca ngn ng java l class. Mt class nh ngha hnh thc ca mt i tng. Mt class nh r nhng thnh phn d liu v cc on m ci t cc thao tc x l trn cc i tng d liu . Java dng class xy dng nhng i tng. Nhng i tng l nhng th hin (instances) ca mt class. Mt lp bao gm thnh phn d liu v thnh phn x l. Thnh phn d liu ca mt lp thng bao gm cc bin thnh vin v cc bin th hin ca lp. Thnh phn x l l cc thao tc trn cc thnh phn d liu, thng trong java ngi gi l phng thc. Phng thc l mt thut ng hng i tng trong java, trong C/C++ ngi ta thng dng thut ng l hm. 3.3.2.Tnh a hnh (polymorphism): phi Tnh a hnh cho php ci t cc lp dn xut khc nhau t mt lp ngun. Mt i tng c th c nhiu kiu khc nhau gi l tnh a hnh. V d: class A_Object { // void method_1() { // 55

} } class B_Object extends A_Object { // void method_1() { // } } class C { public static void main(String[] args) { // To mt mng 2 phn t kiu A A_Object arr_Object = new A_Object[2]; B_Object var_1 = new B_Object(); // Fhn t u tin ca mng arr_Object[0] tham // chiu n 1 i tng kiu B_Object dn xut // t A_Object arr_Object[0] = var_1; A_Object var_2; for (int i=0; i= 0 ? circleRadius:0 ); } // Ly bn knh ca ng trn 68

public double getRadius() { return radius; } // Tnh din tch ng trn Circle public double area() { return Math.FI * radius * radius; } // Biu din ng trn bng mt chui public String toString() { return "Center = " + super.toString() + "; Radius = " + radius; } // tr v tn ca shape public String getName() { return "Circle"; } } // end class Circle Lp Circle dn xut t lp Point, mt ng trn c th tch l 0.0, v vy phng thc volume() ca lp cha khng khai bo chng, n s tha k t lp Point, m lp Point th tha k t lp Shape. Din tch ng trn khc vi mt im, v vy phng thc tnh din tch area() c khai bo chng. Phng thc getName() hin thc phng thc tru tng khai bo trong lp cha, nu phng thc getName() khng khai bo trong lp Circle th n s k tha t lp Point. Phng thc setRadius dng gn mt bn knh (radius) mi cho mt

69

i tng ng trn, cn phng thc getRadius tr v bn knh ca mt i tng ng trn. // nh ngha lp hnh tr Cylinder // trong tp tin Cylinder.java. public class Cylinder extends Circle { // chiu cao ca Cylinder protected double height; // constructor khng c tham s public Cylinder() { // ngm gi n constructor ca lp cha setHeight( 0 ); } // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate, int yCoordinate ) { // Gi constructor ca lp cha super( cylinderRadius, xCoordinate, yCoordinate ); setHeight( cylinderHeight ); } // Gn chiu cao cho Cylinder public void setHeight( double cylinderHeight ) { height = ( cylinderHeight >= 0 ? cylinderHeight :0 ); } 70

// Ly chiu cao ca Cylinder public double getHeight() { return height; } // Tnh din tch xung quanh ca Cylinder public double area() { return 2 * super.area() + 2 * Math.FI * radius * height; } // Tnh th tch ca Cylinder public double volume() { return super.area() * height; } // Biu din Cylinder bng mt chui public String toString() { return super.toString() + "; Height = " + height; } // tr v tn ca shape public String getName() { return "Cylinder"; } } // end class Cylinder

71

Lp Cylinder dn xut t lp Circle. Mt Cylinder (hnh tr) c din tch v th tch khc vi mt Circle (hnh trn), v vy c hai phng thc area() v volume() cn phi khai bo chng. Phng thc getName() l hin thc phng thc tru tng trong lp cha, nu phng thc getName() khng khai bo trong lp Cylinder th n s k tha t lp Circle. Phng thc setHeight dng gn chiu cao mi cho mt i tng hnh tr, cn phng thc getHeight tr v chiu cao ca mt i tng hnh tr. // Test.java // Kim tra tnh k tha ca Foint, Circle, Cylinder vi // lp tru tng Shape. // Khai bo th vin import java.text.DecimalFormat; public class Test { // Kim tra tnh k tha ca cc i tng hnh hc public static void main( String args[] ) { // To ra cc i tng hnhhc Foint point = new Foint( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); // To mt mng cc i tng hnh hc Shape arrayOfShapes[] = new Shape[ 3 ]; // arrayOfShapes[ 0 ] l mt i tng Foint arrayOfShapes[ 0 ] = point; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 2 ] l mt i tng cylinder arrayOfShapes[ 2 ] = cylinder; // Ly tn v biu din ca mi i tng hnh hc 72

String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n" + cylinder.getName() + ": " + cylinder.toString(); DecimalFormat precision2 = new DecimalFormat( "0.00" ); // duyt mng arrayOfShapes ly tn, din tch, th tch // ca mi i tng hnh hc trong mng. for ( int i = 0; i < arrayOfShapes.length; i++ ) { output += "\n\n" + arrayOfShapes[ i ].getName() + ": " + arrayOfShapes[ i].toString() + "\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) + "\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() ); } System.out.println(output); System.exit( 0 ); } } // end class Test Kt qu thc thi chng trnh:

73

V d 2: Tng t v d 1 nhng trong v d 2 chng ta dng interface nh ngha cho Shape thay v mt lp tru tng. V vy tt c cc phng thc trong interface Shape phi c hin thc trong lp Point l lp ci t trc tip interface Shape. // nh ngha mt interface Shape trong tp tin shape.java public interface Shape { // Tnh din tch public abstract double area(); // Tnh th tch public abstract double volume(); // tr v tn ca shape public abstract String getName(); } Lp Foint ci t/hin thc interface tn shape. // nh ngha lp Foint trong tp tin Foint.java public class Foint extends Object implements Shape { protected int x, y; // Ta x, y ca 1 im // constructor khng tham s. public Foint() { setFoint( 0, 0 ); } // constructor c tham s. public Foint(int xCoordinate, int yCoordinate) { setFoint( xCoordinate, yCoordinate ); 74

} // gn ta x, y cho 1 im public void setFoint( int xCoordinate, int yCoordinate ) { x = xCoordinate; y = yCoordinate; } // ly ta x ca 1 im public int getX() { return x; } // ly ta y ca 1 im public int getY() { return y; } // Th hin ta ca 1 im di dng chui public String toString() { return "[" + x + ", " + y + "]"; } // Tnh din tch public double area() { return 0.0; } // Tnh th tch public double volume() 75

{ return 0.0; } // tr v tn ca i tng shape public String getName() { return "Foint"; } } // end class Foint Lp Circle l lp con ca lp Foint, v ci t/hin thc gin tip interface tn shape. // nh ngha lp Circle trong tp tin Circle.java public class Circle extends Foint { // Dn xut t lpFoint protected double radius; // constructor khng tham s public Circle() { // ngm gi n constructor ca lp cha setRadius( 0 ); } // constructor c tham s public Circle( double circleRadius, int xCoordinate, int yCoordinate ) { // gi constructorca lp cha super( xCoordinate, yCoordinate ); setRadius( circleRadius ); } 76

// Gn bn knh ca ng trn public void setRadius( double circleRadius ) { radius = ( circleRadius >= 0 ? circleRadius:0 ); } // Ly bn knh ca ng trn public double getRadius() { return radius; } // Tnh din tch ng trn Circle public double area() { return Math.FI * radius * radius; } // Biu din ng trn bng mt chui public String toString() { return "Center = " + super.toString() + "; Radius = " + radius; } // tr v tn ca shape public String getName() { return "Circle"; } } // end class Circle // nh ngha lp hnh tr Cylinder // trong tp tin Cylinder.java. 77

public class Cylinder extends Circle { // chiu cao ca Cylinder protected double height; // constructor khng c tham s public Cylinder() { // ngm gi n constructor ca lp cha setHeight( 0 ); } // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate, int yCoordinate ) { // Gi constructor ca lp cha super( cylinderRadius, xCoordinate, yCoordinate ); setHeight( cylinderHeight ); } // Gn chiu cao cho Cylinder public void setHeight( double cylinderHeight ) { height = ( cylinderHeight >= 0 ? cylinderHeight :0 ); } // Ly chiu cao ca Cylinder public double getHeight() { return height; 78

} // Tnh din tch xung quanh ca Cylinder public double area() { return 2 * super.area() + 2 * Math.FI * radius * height; } // Tnh th tch ca Cylinder public double volume() { return super.area() * height; } // Biu din Cylinder bng mt chui public String toString() { return super.toString() + "; Height = " + height; } // tr v tn ca shape public String getName() { return "Cylinder"; } } // end class Cylinder // Test.java // Kim tra tnh k tha ca Foint, Circle, Cylinder vi // interface Shape. // Khai bo th vin import java.text.DecimalFormat; 79

public class Test { // Kim tra tnh k tha ca cc i tng hnh hc public static void main( String args[] ) { // To ra cc i tng hnhhc Foint point = new Foint( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); // To mt mng cc i tng hnh hc Shape arrayOfShapes[] = new Shape[ 3 ]; // arrayOfShapes[ 0 ] l mt i tng Foint arrayOfShapes[ 0 ] = point; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 2 ] l mt i tng cylinder arrayOfShapes[ 2 ] = cylinder; // Ly tn v biu din ca mi i tng hnh hc String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n" + cylinder.getName() + ": " + cylinder.toString(); DecimalFormat precision2 = new DecimalFormat( "0.00" ); // duyt mng arrayOfShapes ly tn, din tch, th tch // ca mi i tng hnh hc trong mng. for ( int i = 0; i < arrayOfShapes.length; i++ ) { output += "\n\n" + arrayOfShapes[ i ].getName() + ": " + arrayOfShapes[ i].toString() + 80

"\n Area = " + precision2.format( arrayOfShapes[ i ].area() ) + "\nVolume = " + precision2.format( arrayOfShapes[ i ].volume() ); } System.out.println(output); System.exit( 0 ); } } // end class Test Kt qu thc thi chng trnh:

81

Chng 4: THIT K GIAO DINNGI DNG

4.1.M u Chng ny cung cp cho sinh vin nhng kin thc c bn xy dng giao din (Graphic User Interface - GUI) ca chng trnh ng dng bng ngn ng java: Nhng nguyn tc thit k giao din. Nhng th vin, gi xy dng giao din: gm nhng lp (class), nhng giao tip (interface) qun l s kin v nhng thnh phn (components) xy dng nn giao din ngi dng. B qun l trnh by (layout managers) X l s kin

-

Trong khun kh gio trnh lp trnh java cn bn ny chng ti trnh by vic thit k GUI dng th vin awt (abstract windows toolkit). Vic thit kt GUI s trc quan, uyn chuyn hn khi chng ta s dng th vin JFC (Java Foundation Class) s gii c gii thiu trong chuyn java nng cao.

82

4.2.Gii thiu th Gi awt

vin vi

Th vin awt l b th vin dng xy dng giao din ngi dng cho mt chng trnh ng dng c y cc thnh phn c bn nh: Label, Button, Checkbox, Radiobutton, Choice, List, Text Field, Text Area, Scrollbar, Menu, Frame Ging nh cc API ca Windows, java cung cp cho ngi lp trnh th vin awt. Nhng khc vi cc hm API, th vin awt khng ph thuc h iu hnh. Th vin awt l nn tng, c s gip cho chng ta tip cn vi th vin m rng JFC hiu qu hn. Cu trc cy phn cp ca tt c nhng lp trong th vin awt chng ta c th xem chi tit trong ti liu km theo b cng c j2se (phn API Specification)

4.3.Cc khi nim c bn 4.3.1.Component Com Component l mt i tng c biu din ha c hin th trn mn hnh m ngi dng c th tng tc c. Chng 83

hn nh nhng nt nhn (button), nhng checkbox, nhng scrollbar, Lp Component l mt lp tru tng.java.lan g.Object

java.awt.Component 4.3.2.Container Con ain Container l i tng vt cha hay nhng i tng c kh nng qun l v nhm cc i tng khc li. Nhng i tng con thuc thnh phn awt nh: button, checkbox, radio button, scrollbar, list, ch s dng c khi ta a n vo khung cha (container). Mt s i tng container trong Java: Panel: i tng khung cha n gin nht, dng nhm cc i tng, thnh phn con li. Mt Panel c th cha bn trong mt Panel khc.java.lang.Object +--java.awt.Compon ent +--java.awt.Container +--java.awt.Panel

Frame: khung cha Frame l mt ca s window hn hoi mc trn cng bao gm mt tiu u v mt ng bin (border) nh cc ng dng windows thng thng khc. Khung cha Frame thng c s dng to ra ca s chnh ca cc ng dng.java.lang.Object +--java.awt.Compon ent +--java.awt.Container +--java.awt.Win dow +--java.awt.Frame

Dialogs: y l mt ca s dng hp hi thoi (ca s dng ny cn c gi l pop-up window), ca s dng ny thng c dng a ra thng bo, hay dng ly d liu nhp t ngoi vo thng qua cc i tng, thnh phn trn dialog nh TextField chng hn. Dialog 84

cng l mt ca s nhng khng y chc nng nh i tng khung cha Frame.java.lang.Object +--java.awt.Compon ent +--java.awt.Contain er +--java.awt.Win dow +--java.awt.Dialog

ScrollPanes: l mt khung cha tng t khung cha Panel, nhng c thm 2 thanh trt gip ta t chc v xem c cc i tng ln chon nhiu ch trn mn hnh nh nhng hnh nh hay vn bn nhiu dng.java.lang.Object +--java.awt.Compon ent +--java.awt.Contain er +--java.awt.ScrollPane

4.3.3.Layout Manager ayou age Khung cha container nhn cc i tng t bn ngoi a vo v n phi bit lm th no t chc sp xp ch cho cc i tng . Mi i tng khung cha u c mt b qun l chu trch nhim thc hin cng vic y l b qun l trnh by (Layout Manager). Cc b qun l trnh by m th vin AWT cung cp cho ta bao gm: FlowLayout: Sp xp cc i tng t tri qua phi v t trn xung di. Cc i tng u gi nguyn kch thc ca mnh. BorderLayout: Cc i tng c t theo cc ng vin ca khung cha theo cc cnh West, East, South, North v Center tc ng, Ty, Nam, Bc v Trung tm hay Tri, Phi, Trn, Di v Gia ty theo cch nhn ca chng ta. GridLayout: To mt khung li v hnh vi cc bng nhau. Cc i tng s t va kch thc vi

85

tng . Th t sp xp cng t tri qua phi v t trn xung di. GridBagLayout: Tng t nh GridLayout, cc i tng khung cha cng c a vo mt li v hnh. Tuy nhin kch thc cc i tng khng nht thit phi va vi 1 m c th l 2, 3 hay nhiu hn ty theo cc rng buc m ta ch nh thng qua i tng GridBagConstraint. Null Layout: Cch trnh by t do. i vi cch trnh by ny ngi lp trnh phi t ng lm tt c t vic nh kch thc ca cc i tng, cng nh xc nh v tr ca n trn mn hnh. Ta khng ph thuc vo nhng rng buc ng, ty , nam, bc g c. 4.4.Thit k GUI cho chng trnh .Th 4.4.1.To khung cha ca s chng trnh hung Thng thng to ca s chnh cho chng trnh ng dng ta tin hnh cc bc: - To i tng Frame - Xc nh kch thc ca Frame - Th hin Frame trn mn hnh V d: import java.awt.*; class FrameDemo { public static void main(String args[]) { // To i tng khung chaFrame Frame fr = new Frame("My First Window") ; // Xc nh kch thc, v tr ca Frame fr.setBounds(0, 0, 640, 480); // Hin th Frame 86

fr.setVisible(true); } } Kt qu thc thi chng trnh:

4.4.2.To h n

thng thc

i vi th vin awt, xy dng h thng thc n cho chng trnh ng dng chng ta c th dng cc lp MenuBar, Menu, MenuItem, MenuShortcut.MenuBar

MenuItem Menu

V d: To h thng thc n cho chng trnh Calculator import java.awt.*; import java.awt.event.*; class Calculator { public static void main(String[] args) { 87

createMenu(); } private static void createMenu() { // Tao Frame ung dung final Frame fr = new Frame(); fr.setLayout(new BorderLayout()); // Tao cac menu bar MenuBar menu = new MenuBar(); Menu menuFile = new Menu("Edit"); MenuItem copyItem = new MenuItem("Copy Ctrl+C"); MenuItem pasteItem = new MenuItem("Faste Ctrl+V"); menuFile.add(copyItem); menuFile.add(pasteItem); Menu menuHelp = new Menu("Help"); MenuItem hTopicItem = new MenuItem("Help Topics"); MenuItem hAboutItem = new MenuItem("About Calculator"); menuHelp.add(hTopicItem); menuHelp.addSeparator(); menuHelp.add(hAboutItem); menu.add(menuFile); menu.add(menuHelp); fr.setMenuBar(menu); fr.setBounds(100, 100, 300, 200); fr.setTitle("Calculator"); //fr.setResizable(false); fr.setVisible(true); // x l bin s kin ng ca s ng dng. fr.addWindowListener( 88

new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } Kt qu thc thi chng trnh:

4.4.3.Gn Component vo khung cha Com hung gn mt thnh phn, mt i tng component vo mt ca s (khung cha) chng ta dng phng thc add ca i tng khung cha container. V d: import java.awt.*; class AddDemo { public static void main(String args[]) { // To i tng khung chaFrame Frame fr = new Frame("AddDemo App"); // To i tng Component 89

Button buttOk = new Button(OK); // Gn i tng nt nhn vo khung cha fr.add(buttOk); // Xc nh kch thc, v tr ca Frame fr.setSize(100, 100); // Hin th Frame fr.setVisible(true); } } Kt qu thc thi chng trnh:

4.4.4.Trnh by cc Component trong khung cha Com hung Nh chng ta bit khung cha container nhn cc i tng t bn ngoi a vo v n phi bit lm th no t chc sp xp ch cho cc i tng . Mi i tng khung cha u c mt b qun l chu trch nhim thc hin cng vic y l b qun l trnh by (Layout Manager). Chng ta s tm hiu chi tit v cc kiu trnh by ca th vin AWT. Interface LayoutManager nh ngha giao tip cho nhng lp bit c lm th no trnh by nhng trong nhng containers 4.4.4.1 FlowLayout public class FlowLayout extends Object 90

implements LayoutManager, Serializable i vi mt container trnh by theo kiu FlowLayout th: Cc component gn vo c sp xp theo th t t tri sang phi v t trn xung di. Cc component c kch thc nh mong mun. Nu chiu rng ca Container khng ch cho cc component th chng t ng to ra mt dng mi. FlowLayout thng c dng sp xp cc button trong 1 panel. Chng ta c th iu chnh khong cch gia cc component. V d: import java.awt.*; import java.lang.Integer; class FlowLayoutDemo { public static void main(String args[]) { Frame fr = new Frame("FlowLayout Demo"); fr.setLayout(new FlowLayout()); fr.add(new Button("Red")); fr.add(new Button("Green")); fr.add(new Button("Blue")); List li = new List(); for (int i=0; i Trong d: Tro : duqc dng d xac d4nh trlnh duq dn diu khin d kt ni vi CSDL. : d4a chi CSDL. C phap ca ph thuc vao tng trlnh diu khin c th. : cac tham s khac oth r>: cac V d: 162

jdbc:odbc:dbname 1a URL d kt ni vi CSDL :dbna tn dbname s dng cu ni bna dn cu ODBC. ODBC. jdbc:microsoft:sq1server://hostname:1433 1a URL mic ://h d kt ni vi CSDL Microsoft SQL Server. Trong d hostname 1a tn may cai SQL Tro cai Server.

6.4.KT NI CSDL VI JDBC JDB Vic kt ni vi CSDL bng JDBC duqc thc hin qua duq hai buc: dng k trlnh diu khin JDBC; tip theo BC; thc thi phuang thWc getConnection() ca 1p DriverManager. nnect 6.4.1.ng k trnh khin iu

Trlnh diu khin JDBC duqc n?p khi m bytecode ca n Trl duq eco duqc n?p vao JVM. Mt cach dan gin d thc hin cng duq cach vic nay 1a thc thi phuang thWc C1ass.forName(). ver V d: d n?p trlnh diu khin s dng cu ni ODBC do dn cu ODB Sun cung cp, chng ta s dng cu cp, dn cu 1nh sau C1ass.forName(sun.jdbc.odbc.JdbcOdbcDriver). ss. Odb 6.4.2.Thc hin kt ni Sau khi d n?p trlnh diu khin JDBC, vic kt ni vi BC, CSDL duqc thc hin vi mt trong cac phuang thWc sau duq cac trong 1p DriverManager: pub1ic static Connection getConnection(String ur1) pub nnect nnect throws SQLException: thc hin kt ni p ce v i CSDL duqc yu cu. B qun 1 trlnh diu duq cu. qu khin s t dng 1a chn trlnh diu khin ph hqp trong s cac trlnh diu khin d duqc n?p. cac duq pub1ic static Connection getConnection(String ur1, pub nnect nnect String user, String pass) throws ss) SQLException: tin hanh kt ni ti CSDL vi cep tai khon user va mt m pass. ss. pub1ic static Connection getConnection(String ur1, b ect pu nn nnect Properties info) throws SQLException: tuang cep t hai phuang thWc trn ngoai ra cung cp thm cac cp cac 163

thng tin qui d4nh thuc tnh kt ni thng qua di tuqng ca 1p Properties. Kt qu tr v ca cac phuang thWc trn 1a mt di tuqng cac ca 1p java.sq1.Connection duqc dng d d?i din cho kt ni nnect duq dn dn CSDL. 6.4.3.V d Trong phn v d nay chng ta s tlm hiu cac cach khac Tro cac cach nhau d kt ni vi tp tin CSD1 Access movies.mdb c mt nha cces bng tn Movies. Bng nay gm cac ct number, tit1e, category cac cat va fomat. c th tin hanh kt ni vi Microsoft Access thng qua cces cu cu

ni ODBC sau khi d t?o tp tin CSDL movies.mdb, chng ODB ta cn phi t?o Data Source Name cho CSDL bng cach cn cach vao Contro1 Pane1 va chn ODBC Data Source. ODB ce.

164

Tip theo nhn vao nt Add, b?n s thy hin th4 danh sach nh ach cac cac trlnh diu khin CSDL hin c.

165

B?n chn Microsoft Access Driver(*.mdb) va nhn Finish. cces r(* nh Ca s cu hlnh cho tp tin Access s xut hin va nhp cu cces nh moviesDSN vao Data Source Name

B?n nhn nt Se1ect va chn tp tin CSDL cn t?o data source nh ect cn name. Sau d nhn OK d kt thc. nh

166

Sau khi d hoan tt cng vic t?o DSN cho tp tin movies.mdb, chng ta c th s dng do?n m sau d tin dn hanh kt ni vi tp tin movies.mdb. import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class TestConnection{ public static void main(String args[]) { Connection connection = null; if( args.length != 1) { System.out.println("Syntax: java TestConnection " + "DSN"); return; } try { // load driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); System.out.println("Loading the driver..."); } catch( Exception e ) { //problem load driver,class not exist e.printStackTrace( ); return; } try { String dbURL = "jdbc:odbc:" + args[0]; System.out.println("Establishing connection..."); connection = DriverManager.getConnection(dbURL,"",""); System.out.println("Connect to + connection.getCatalog() + successfully!"); // Do whatever queries or updates you want here!!! } catch( SQLException e ) { e.printStackTrace( ); } 167

finally { if( connection != null ) { try { connection.close( ); } catch( SQLException e ) { e.printStackTrace( ); } } } } } Sau khi bin d4ch do?n chuang trlnh trn, chng ta c th thc hin kt ni vi CSDL bng cach thc thi cu 1nh: cach cu nh: java TestConnection moviesDSN jav onnection mov

6.5.KIU D IU JAVA

LIU SQL V KIU D LIU IU

LIU LIU

Trong qua trlnh thao tac vi CSDL, chng ta s gp phi vn Tro d chuyn di gia kiu d 1iu trong CSDL sang kiu d 1i 1iu Java h trq va nguqc 1ai. Vic chuyn di nay duqc 1i guq duq thc hin nhu trong 2 bng sau. u nhSQL Type BIT TINYINT SMALLINT INTEGER BIGINT REAL FLOAT DOUBLE Java Type Boo1ean Byte Short Int Long F1oat Doub1e Doub1e

168

DECIMAL NUMERIC CHAR VARCHAR LONGVARCHAR DATE TIME TIMESTAMP BINARY VARBINARY LONGVARBINARY BLOB CLOB ARRAY REF STRUCT

java.math.BigDecima1 java.math.BigDecima1 java.1 ang.String java.1 ang.String java.1 ang.String java.sq1.Date java.sq1.Time java.sq1.Timestamp byte[ ] byte[ ] byte[ ] java.sq1.B1ob Java.sq1.C1ob Java.sq1.Array Java.sq1.Ref Java.sq1.Struct

Bng chuyn i t kiu d liu SQL sang JavaJava Type boo1ean byte short int 1ong f1oat doub1e java.math.BigDecima1 java.1 ang.String byte[ ] java.sq1.Date java.sq1.Time java.sq1.Timestamp java.sq1.B1ob java.sq1.C1ob java.sq1.Array java.sq1.Ref SQL Type BIT TINYINT SMALLINT INTEGER BIGINT REAL DOUBLE NUMERIC VARCHAR or LONGVARCHAR VARBINARY or LONGVARBINARY DATE TIME TIMESTAMP BLOB CLOB ARRAY REF

169

java.sq1.Struct

STRUCT

Bng chuyn i t kiu d liu Java sang SQL 6.6.CC THAO TC C CSDL BN TRN

Cac thao tac truy vn CSDL chi c th duqc thc hin sau duq khi d c di tuqng Connection, duqc t?o ra t qua trlnh kt nnect duq ni vao CSDL. Chng ta s dng di tuqng ca 1p dn Connection d t?o ra cac th hin ca 1p java.sq1.Statement. nnect cac Sau khi t?o ra cac di tuqng ca 1p Statement chng ta c cac th thc hin cac thao tac trong cac di tuqng statement trn cac cac connection tuang Wng. nnect Ni dung trong mt statement chnh 1a cac cu SQL. Cu dun cac cu 1nh SQL trong cac statement chi duqc thc hin khi chng cac duq ta gi chng dn CSDL. Nu cu 1n SQL 1a mt cu truy cu cu vn ni dung thl kt qu tr v s 1a mt th dun hin ca 1p java.sq1.Resu1tSet, nguqc 1?i (cac cu 1nh guq cac cu thay di ni dung CSDL) s tr v kt qu 1a m s dun nguyn. Cac di tuqng ca guy 1p Resu1tSet cho php chng ta truy cp dn kt qu tr v cp ca cac cu truy vn. cac cu 6.6.1.Cc bn lp c

java.sq1.Statement Statement 1a mt trong 3 1p JDBC ca bn dng d th hin mt cu 1nh SQL. Mi thao tac trn CSDL duqc thc hin thng qua 3 phuang thWc ca 1p Statement. Phuang thWc executeQuery() nhn vao 1 tham s 1a chui ni dung cu 1n SQL va tr v 1 di tuqng kiu Resu1tSet. Phuang t hWc nay duqc s dng trong cac trung hqp cu 1nh SQL c tr v cac kt qu trong CSDL. Phuang thWc executeUpdate() cng nhn vao 1 tham s 1a chui ni dung cu 1nh SQL. Tuy nhin phuang thWc nay chi s dng duqc di vi cac cy 1nh cp nht ni dung CSDL. Kt qu tr v 1a s dng b4 tac dng bi cu 1nh SQL. 170

Phuang thWc execute() 1a trung hqp tng quat ca 2 phuang thWc trn. Phuang thWc nhn vao chui ni dung cu 1nh SQL. Cu 1nh SQL c th 1a cu 1nh truy vn hoc cp nht. Nu kt qu ca cu 1nh 1a cac dng trong CSDL thl phuang thWc tr v gia tr4 true, nguqc 1?i tr v gia tr4 fa1se. Trong trung hqp gia tr4 true, sau d chng ta c th dng phuang thWc getResu1tSet() d 1y cac dng kt qu tr v. java.sq1.Resu1tSet i tuqng resu1tset 1a cac dng d 1iu tr v ca cu 1nh truy vn CSDL. Lp nay cung cp cac phuang thWc d rt trch cac ct trong tng dng kt qu tr v. Tt c cac phuang thWc nay du c d?ng: type getType(int | String) Trong d tham s c th 1a s thW t ca ct hoc tn ct cn 1y ni dung. T?i 1 thi dim chng ta chi c th thao tac trn 1 dng ca resu1tset. thao tac trn dng tip theo chng ta s dng phuang thWc next(). Phuang thWc tr v gia tr4 true trong trung hqp c dng tip theo, nguqc 1?i tr v gia tr4 fa1se. 6.6.2.V d truy vn CSDL public class Movie{ private String movieTitle, category, mediaFormat; private int number; public Movie(int n, String title, String cat, String format){ number = n; movieTitle = title; category = cat; mediaFormat = format; } 171

public int getNumber(){return number;} public String getMovieTitle(){return movieTitle;} public String getCategory(){return category;} public void setCategory(String c){category = c;} public String getFormat(){return mediaFormat;} public void setFormat(String f){mediaFormat = f;} public String toString(){ return number + ": " + movieTitle + " - " + category + " " + mediaFormat; } } import java.sql.*; public class MovieDatabase{ private Connection connection; private FreparedStatement findByNumber, updateCategory; private CallableStatement findByCategory; public MovieDatabase(Connection connection) throws SQLException{ this.connection = connection; } public void showAllMovies(){ try{ Statement selectAll = connection.createStatement(); String sql = "SELECT * FROM Movies"; 172

ResultSet results = selectAll.executeQuery(sql); while(results.next()){ int number = results.getInt(1); String title = results.getString("title"); String category = results.getString(3); String format = results.getString(4); Movie movie = new Movie(number, title, category, format); System.out.println(movie.toString()); } results.close(); selectAll.close(); } catch(SQLException e){ e.printStackTrace(); } } } import java.sql.*; public class ShowMovies{ public static void main(String [] args){ String url = "jdbc:odbc:" + args[0]; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection connection = DriverManager.getConnection(url); MovieDatabase db = new MovieDatabase(connection); db.showAllMovies(); connection.close(); } catch(Exception e){ 173

e.printStackTrace(); } } } 6.6.3.V d cp nht CSDL nht Phuang thWc addMovie() bn dui duqc thm vao 1p ddM du duq MovieDatabase d d4nh ngha v d trn. public class MovieDatabase{ public void addMovie(Movie movie) { System.out.println(Adding movie: + movie.toString()); try{ Statement addMovie = connection.createStatement(); String sql = INSERT INTO Movies VALUES( + movie.getNumber() + , + + movie.getMovieTitle() + , + + movie.getCategory() + , + + movie.getFormat() + ); System.out.println(Executing statement: + sql); addMovie.executeUpdate(sql); addMovie.close(); System.out.println(Movie added successfully!); } catch(SQLException e){ e.printStackTrace(); } } } import java.sql.*; public class AddMovies{ public static void main(String [] args) { String url = jdbc:odbc: + args[0]; 174

System.out.println(Attempting to connect to + url); try{ System.out.println(Loading the driver...); Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); System.out.println(Establishing a connection...); Connection connection = DriverManager.getConnection(url); System.out.println(Connect to + connection.getCatalog() + a success!); MovieDatabase db = new MovieDatabase(connection); Movie [] movies = new Movie[6]; movies[0] = new Movie(1, Star Wars: A New Hope, Science Fiction, DVD); movies[1] = new Movie(2, Citizen Kane, Drama, VHS); movies[2] = new Movie(3, The Jungle Book, Children, VHS); movies[3] = new Movie(4, Dumb and Dumber, Comedy, DVD); movies[4] = new Movie(5, Star Wars: Attack of the Clones, Science Fiction, DVD); movies[5] = new Movie(6, Toy Story, Children, DVD); for(int i = 0; i < movies.length; i++){ db.addMovie(movies[i]); } System.out.println(Closing the connection...); connection.close(); } catch(Exception e){ e.printStackTrace(); } } } 175

Ti liu tham kho:[1] java.sun.com [2] Herbert Schi1dt. Java 2. A Beginners Guide. Second Edition. McGraw-Hi11 - 2003. [3] Dr. Harvey M. Deite1 - Pau1 J. Deite1. Java How to Program, 4th Ed (Deite1). Prentice Ha11 - 2002 [4] Simon Roberts Phi1ip He1 1er Michae1 Ernest. Complete Java 2 Certification study guide. BPB Pub1ications 2000. [5] Cay S. Horstmann Gary Corne1 1. Core Java Volum 1 - Fundamentals. The Sun Microsystems press. 1997 [6] Cay S. Horstmann Gary Corne1 1. Core Java Volum 2 Advanced Features. The Sun Microsystems press. 1997

176

Ph lc A: Trc nghim kin thc1. Chn phat biu dng a. InputStream va OuputStream 1a 2 1ung d 1iu kiu byte b. Reader va Writer 1a 2 1ung d 1iu kiu character. c. Cu a) va b) dng d. Tt c cac cu trn du sai 2. Cho bit s byte ma do?n chuang trlnh sau ghi ra tp tin temp.txt

a. 2 bytes b. 4 bytes c. 8 bytes d. 16 bytes 3. Chn phat biu dng a. Mt th hin ca 1p Fi1e c th duqc dng d truy cp cac tp tin trong thu mc hin hanh b. Khi mt th hin ca 1p Fi1e duqc t?o ra thl mt tp tin tuang Wng cng duqc t?o ra trn da. c. Cac th hin ca 1p Fi1e duqc dng d truy cp dn cac tp tin va thu mc trn da d. Cu a) va c) dng 177

4. Cho bit cach t?o mt th hin ca InputStreamReader t mt th hin ca InputStream. a. S dng phuang thWc createReader() ca 1p InputStream b. S dng phuang thWc createReader() ca 1p InputStreamReader c. T?o mt th hin ca InputStream ri truyn vao cho ham khi t?o ca InputStreamReader d. Tt c cac cu trn du sai 5. Chn phat biu dng a. Lp Writer c th duqc dng d ghi cac k t c cach m ha khac nhau ra 1ung xut b. Lp Writer c th duqc dng d ghi cac k t Unicode ra 1ung xut c. Lp Writer c th duqc dng d ghi gia tr4 cac kiu d 1iu ca s ra 1ung xut d. Cu a) va b) dng 6. Chn phat biu dng: a. Cac event 1isteners 1a cac interface qui d4nh cac phuang thWc cn phi cai dt d x 1 cac s kin 1in quan khi s kin d xy ra. b. Mt event adapter 1a mt cung cp cac cai dt mc d4nh cho cac event 1istener tuang Wng c. Lp WindowAdapter duqc dng d x 1 cac s kin 1in quan dn ca s man hlnh. d. Tt c cac cu trn du dng 7. Khi c nhiu component duqc gn cac b 1ng nghe ca cng mt 1o?i s kin thl component nao s nhn duqc s kin du tin? a. Component du tin duqc gn b 1ng nghe s kin b. Component cui cng duqc gn b 1ng nghe s kin c. Khng th xac d4nh component nao s nhn truc 178

d. Khng th c nhiu han mt b 1ng nghe cho cng mt 1o?i s kin 8. Chn cac component c phat sinh action event a. Button b. Labe1 c. Checkbox d. Windows 9. Chn phat biu dng a. Th hin ca TextFie1d c th phat sinh ActionEvent b. Th hin ca TextArea c th phat sinh ActionEvent c. Th hin ca button c th phat sinh ActionEvent d. Cu a) va c) dng 10. Chn phat biu dng a. MouseListener interface d4nh ngha cac phuang thWc d x 1 s kin nhn chut. b. MouseMotionListener interface d4nh ngha cac phuang thWc d x 1 s kin nhn chut. c. MouseC1ickListener interface d4nh ngha cac phuang thWc d x 1 s kin nhn chut. d. Tt c cac cu trn du dng 11. Gi s chng ta c th hin e ca b 1ng nghe s kin TextEvent va th hin t ca 1p TextArea. Cho bit cach d gn b 1ng nghe e vao t? a. t.addTextListener(e) b. e.addTextListener(t) c. addTextListener(e,t) d. addTextListener(t,e) 12. Man hlnh sau s dng kiu trlnh bay nao?

179

a. b. c. d.

CardLayout nu1 1Layout BorderLayout SetLayout

13. Man hlnh sau s dng kiu trlnh bay nao?

a. b. c. d.

GridLayout F1owLayout BorderLayout GridBagLayout

14. Cho mt component comp va mt container cont c kiu trlnh bay 1a BorderLayout. Cho bit cach d gn comp vao v4 tr du ca cont. a. addTop(cont,comp) b. comp.add(North, cont) c. cont.addTop(comp) d. cont.add(comp,BorderLayout.NORTH) 15. Cho mt component comp va mt container cont c kiu trlnh bay 1a F1owLayout. Cho bit cach d gn comp vao cont. 180

a. b. c. d.

cont.add(comp) comp.add(cont) cont.addComponent(comp) cont.addA1 1Components()

16. Chn phuang thWc dng d xac d4nh cach trlnh bay ca mt khung chWa a. startLayout() b. initLayout() c. 1ayoutContainer() d. setLayout() 17. Chn phuang thWc dng d xac d4nh v4 tr va kch thuc ca cac component a. setBounds() b. setSizeAndPosition() c. setComponentSize() d. setComponent() 18. Chn kiu trlnh bay d dt cac component trn khung chWa dui d?ng bng. a. CardLayout b. BorderLayout c. GridLayout d. F1owLayout 19. Chn phuang thWc dng d gan ni dung cho Labe1 a. setText() b. setLabe1() c. setTextLabe1() d. setLabe1Text() 20. Chn phat biu dng a. TextComponent extends TextArea b. TextArea extends TextFie1d 181

c. TextFie1d extends TextComponent d. TextComponent extends TextFie1d 21. Chn phat biu dng a. Lp CheckboxGroup dng d d4nh ngha ca RadioButtons b. Lp RadioGroup dng d d4nh ngha ca RadioButtons c. Tt c cac cu trn du dng d. Tt c cac cu trn du sai 22. Chn cu 1nh d t?o ra TextArea c 10 dng va 20 ct a. new TexArea(10,20) b. new TexArea(20,10) c. new TexArea(200) d. Tt c cac cu trn du sai 23. Chn cu 1nh d t?o ra mt danh sach gm 5 mc chn va cho php thc hin chn nhiu mc cng 1c a. new List(5, true) b. new List(true, 5) c. new List(5, fa1se) d. new List(fa1se, 5) 24. Chn phuang thWc d hin th4 Frame 1n man hlnh a. setVisib1e() b. disp1ay() c. disp1ayFrame() d. Tt c cac cu trn du sai 25. Chn phat biu dng a. Lp C1ass 1a 1p cha ca 1p Object b. Lp Object 1a mt 1p fina1 c. Mi 1p d k tha trc tip hoc gian tip t 1p Object d. Tt c cac cu trn du sai

182

26. Lp nao sau dy dng d thc hin cac thao tac nhp xut ca bn vi conso1e a. System b. Math c. String d. StringBuffer 27. Lp nao sau dy khng phi 1a 1p bao? a. String b. Integer c. Boo1ean d. Character 28. o?n m sau sai ch nao?

a. o?n m khng c 1i b. iu kin ca cu 1nh if phi c kiu boo1ean thay vl Boo1ean c. Chi s ca cu 1nh for 1a int thay vl Integer d. Cu b) va c) d 29. Phuang thWc nao sau dy s 1am cho gia tr4 bin s b4 thay di a. s.concat() 183

b. s.toUpperCase() c. s.rep1ace() d. Cu a) va b) dng 30. Hy cho bit kt xut ca do?n chuang trlnh sau:

a. b. c. d.

S1 S2 S1S2 S2S1

31. Chn phat biu dng cho ham khi t?o a. Mt 1p s kt tha cac ham khi t?o t 1p cha b. Trlnh bin d4ch s t dng t?o ham khi t?o mc d4nh nu 1p khng d4nh ngha ham khi t?o c. Tt c cac ham khi t?o c kiu tr v 1a void d. Tt c cac cu trn du sai 32. Cho bit kt xut ca do?n chuang trlnh sau:

184

a. b. c. d.

S1 S2 nu1 1 S1S2

33. Mt kiu d 1iu s c du c 2 gia tr4 +0 va -0 bng nhau: a. ng b. Sai c. Chi dng vi kiu s nguyn d. Chi dng vi kiu s thc 34. Chn khai bao tn dng a. Big01LongStringWidthMeaning1essName b. $int c. bytes d. Tt c cac cu trn du dng

185

35. Chn khai bao dng cho phuang thWc main() a. pub1ic static void main( ) b. pub1ic void main(String[] arg) c. pub1ic static void main(String[] args) d. pub1ic static int main(String[] arg) 36. Chn thW t dng ca cac thanh phn trong mt tp tin ngun a. Cu 1nh import, khai bao package, khai bao 1p. b. Khai bao package du tin; thW t ca cu 1nh import va khai bao 1p 1a ty . c. Khai bao package, cu 1nh import, khai bao 1p d. Cu 1nh import truc tin; thW t ca khai bao package va khai bao 1p 1a ty . 37. Cho cu 1nh sau: int[] x = new int[25]; Chn kt qu dng sau khi thi hanh cu 1nh trn a. x[24] chua duqc d4nh ngha b. x[25] c gia tr4 0 c. x[0] = c gia tr4 nu1 1 d. x.1ength = 25 38. Cho do?n m sau: 1 : class Q6{ 2: public static void main(String args[]){ 3: Holder h = new Holder(); 4: h.held = 100; 5: h.bump(h); 6: System.out.println(h.held); 7: } 8: } 9 : class Holder{ 10 : public int held; 11 : public void bump(Holder theHolder){ 186

12 : theHolder.held++; 13 : } 14 : } Gia tr4 in ra ca cu 1nh dng thW 6 1a: a. 0 b. 1 c. 100 d. 101 39. Cho do?n m sau: 1 : class Q7{ 2: public static void main(String args[]){ 3: double d = 12.3; 4: Decrementer dec = new Decrementer(); 5: dec.decrement(d); 6: System.out.println(d); 7: } 8: } 9 : class Decrementer{ 10 : public void decrement(double decMe){ 11 : decMe = decMe 1.0; 12 : } 13 : } Gia tr4 in ra ca cu 1nh dng thW 6 1a: a. 0.0 b. -1.0 c. 12.3 d. 11.3 40. Min gia tr4 ca bin kiu short 1a: a. N ph thuc vao nn phn cWng bn dui 16 b. T 0 dn 2 1 15 15 c. T -2 dn 2 1 31 31 d. T -2 dn 2 1 187

41. Min gia tr4 ca bin kiu byte 1a: a. N ph thuc vao nn phn cWng bn dui 8 b. T 0 dn 2 1 7 7 c. T -2 dn 2 1 15 15 d. T -2 dn 2 1 42. Cho bit gia tr4 ca x, a va b sau khi thi hanh do?n m sau: 1 : int x, a = 6, b = 7; 2 : x = a++ + b++; a. x = 15, a = 7, b = 8 b. x = 15, a = 6, b = 7 c. x = 13, a = 7, b = 8 d. x = 13, a = 6, b = 7 43. Biu thWc nao sau dy 1a hqp 1 a. int x = 6;x = !x; b. itn x = 6; if (!(x > 3)) {} c. int x = 6; x = ~x; d. Cu b) va c) dng 44. Biu thWc nao sau dy cho x c gia tr4 duang: a. int x = -1; x = x >>> 5; b. int x = -1; x = x >>> 32; c. byte x = -1; x = x >>> 5; d. int x = -1; x = x >> 5; 45. Biu thWc nao sau dy hqp 1 a. String x = He1 1o; int y = 9; x +=y; b. String x = He1 1o; int y = 9; x = x + y; c. String x = nu1 1; int y = (x != nu1 1) && (x.1ength() > 0) ? x.1ength() : 0; d. Tt c cac cu trn du dng 46. o?n m nao sau dy in ra man hlnh ch Equa1: a. 188

int x = 100; float y = 100.0F; if (x == y) { System.out.println(Equal); } b. Integer x = new Integer(100); Integer y = new Integer(100); if (x == y) { System.out.println(Equal); } c. String x = 100; String y = 100; if (x == y) { System.out.println(Equal); } d. Cu a. va c. dng 47. Cho bit kt qu sau khi thi hanh chuang trlnh sau: 1 : public class Short{ 2: public static void main(String[] args){ 3: StringBuffer s = new StringBuffer(Hello); 4: if ((s.length() > 5) && 5: s.append( there).equals(False))) 6: ;//do nothing 7: System.out.println(value is + s); 8: } 9: } a. Gia tr4 xut 1a He1 1o b. Li bin d4ch t?i dng 4 va 5 c. Khng c gia tr4 xut d. Thng bao Nu1 1PointerException 189

48. Cho bit kt qu sau khi thc hin chuang trlnh sau: 1 : public class Xor{ 2: public static void main(String[] args){ 3: byte b = 10;//00001010 4: byte c = 15;//00001111 5: b = (byte)(b ^ c); 6: System.out.println(b contains + b); 7: } 8: } a. Kt qu 1a: b contains 10 b. Kt qu 1a: b contains 5 c. Kt qu 1a: b contains 250 d. Kt qu 1a: b contains 245 49. Cho bit kt qu sau khi bin d4ch va thi hanh chuang trlnh sau: 1 : public class Conditional{ 2: public static void mai n(String[] args){ 3: int x = 4; 4: System.out.println(value is + 5: ((x > 4 ? 99.99 : 9)); 6: } 7: } a. Kt qu 1a: va1ue is 99.99 b. Kt qu 1a: va1ue is 9 c. Kt qu 1a: va1ue is 9.0 d. Li bin d4ch t?i dng s 5 50. Cho bit kt qu ca do?n m sau: 1 : int x = 3; int y = 10; 2 : System.out.println(y % x); a. 0 b. 1 c. 2 d. 3 190

51. Chn cu khai bao khng hqp 1 a. String s; b. abstract doub1e d; c. abstract fina1 doub1e hyperbo1Cosine(); d. Tt c cac cu trn du dng 52. Chn cu phat biu dng a. Mt 1p tru tuqng khng th chWa phuang thWc fina1 b. Mt 1p fina1 khng th chWa cac phuang thWc tru tuqng c. C a) va b) du dng d. C a) va b) du sai 53. Chn cach sa t nht d do?n m sau bin d4ch dng 3 : final class Aaa 4: { 5: int xxx; 6: void yyy(){xxx = 1;} 7: } 8: 9: 10 : class Bbb extends Aaa 11 : { 12 : final Aaa finalRef = new Aaa(); 13 : 14 : final void yyy() 15 : { 16 : System.out.println(In method yyy()); 17 : finalRef.xxx = 12345; 18 : } 19 : } a. Xa t fina1 dng 1 b. Xoa t fina1 dng 10 c. Xa t fina1 dng 1 va 10 d. Khng cn phi chinh sa gl 191

54. Chn phat biu dng cho chuang trlnh sau 1 : class StaticStuff 2: { 3: static int x = 10; 4: 5: static {x += 5;} 6: 7: public static void main(String args[]) 8: { 9: System.out.pritln(x = + x); 10 : } 11 : 12 : static {x /= 5} 13 : } a. Li bin d4ch t?i dng 5 va 12 bi vl thiu tn phuang thWc va kiu tr v b. Chuang trlnh ch?y va cho kt qu x = 10 c. Chuang trlnh ch?y va cho kt qu x = 15 d. Chuang trlnh ch?y va cho kt qu x = 3 55. Chn phat biu dng cho chuang trlnh sau: 1 : class HasStatic 2: { 3: private static int x = 100; 4: 5: public static void main(String args[]) 6: { 7: HasStatic hs1 = new HasStatic(); 8: hs1.x++; 9: HasStatic hs2 = new HasStatic(); 10 : hs2.x++; 11 : hs1 = new HasStatic(); 12 : hs1.x++; 13 : HasStatic.x++; 14 : System.out.println(x = + x); 192

15 : } 16 : } a. Chuang trlnh ch?y va cho kt qu x = 102 b. Chuang trlnh ch?y va cho kt qu x = 103 c. Chuang trlnh ch?y va cho kt qu x = 104 d. Tt c cac cu trn du sai 56. Cho do?n ma sau: 1 : class SuperDuper 2: { 3: void aMethod(){} 4: } 5: 6 : class Sub extends SuperDuper 7: { 8: void aMethod(){} 9: } Hay chn t kha chi ph?m vi hqp 1 d Wng truc aMethod() dng 8 a. defau1t b. protected c. pub1ic d. Tt c cac cu trn du dng 1: 2: 3: 4: 5: 6: 7: 8: o?n ma sau dung cho 2 cu hi tip theo package abcde; public class Bird{ protected static int referneceCount = 0; public Bird(){referenceCount++;} protected void fly(){} static int getRefCount(){return referenceCount;} }

57. Chn phat biu dng cho 1p Bird trn va 1p Parrot sau: 193

1 : package abcde; 2: 3 : class Farrot extends abcde.Bird{ 4: public void fly(){ 5: // 6: } 7: public int getRefCount(){ 8: return referenceCount; 9: } 10 : } a. Li bin d4ch dng 4 tp tin Parrot.java vl phuang thWc f1y() 1a protected trong 1p cha va 1p Bird va Parrot nm trong cung package b. Li bin d4ch dng 4 tp tin Parrot.java vl phuang thWc f1y() 1a protected trong 1p cha va pub1ic trong 1p con. c. Li bin d4ch dng 7 tp tin Parrot.java vl phuang thWc getRefCount() 1a static trong 1p cha. d. Chuang trlnh bin d4ch thanh cng nhung s phat sinh Exception khi ch?y nu phuang thWc f1y() ca 1p Parrot khng duqc gi 58. Chn phat biu dng cho 1p Bird trn va 1p Nightinga1e sau: 1 : package singers; 2: 3 : class Nightingale extends abcde.Bird{ 4: Nightingale(){ refernceCount++;} 5: 6: public static void main(String args[]){ 7: System.out.print(Before: + refernceCount); 8: Nightingale florence = new Nightingale(); 9: System.out.print(After: + refernceCount); 10 : florence.fly(); 11 : } 12 : } 194

a. Kt qu trn man hlnh 1a: Before: 0 After: 2 b. Kt qu trn man hlnh 1a: Before: 0 After: 1 c. Li bin d4ch dng 4 ca 1p Nightinga1e vl khng th overidde thanh vin static d. Li bin d4ch dng 10 ca 1p Nightinga1e vl phuang thWc f1y() 1a protected trong 1p cha. 59. Chn phat biu dng a. Chi kiu d 1iu ca s mi duqc chuyn di kiu t dng; d chuyn di kiu d 1iu ca bin tham chiu phi s dng php p kiu b. Chi bin tham chiu mi duqc chuyn di kiu t dng; d chuyn kiu ca 1 bin kiu ca s phi s dng php toan p kiu c. C kiu d 1iu ca s va kiu tham chiu du c th chuyn di t dng va p kiu d. Php p kiu di vi d 1iu s c th cn php kim tra khi thc thi 60. Dng 1nh nao sau dy s khng th bin d4ch: 1 : byte b = 5; 2 : char c = 5; 3 : short s = 55; 4 : int i = 555; 5 : float f = 555.5f; 6 : b = s; 7 : i = c; 8 : if (f > b) 9: f = i; a. Dng 3 b. Dng 4 c. Dng 5 d. Dng 6 61. Chn dng phat sinh 1i khi bin d4ch 195

1: 2: 3: a. b. c. d.

byte b = 2; byte b1 = 3; b = b * b1; Dng 1 Dng 2 Dng 3 Tt c cac cu trn du dng

62. Trong do?n ma sau kiu d 1iu ca bin resu1t c th 1a nhng kiu nao? 1 : byte b = 11; 2 : short s =13; 3 : result = b * ++s; a. byte, short, int, 1ong, f1oat, doub1e b. boo1ean, byte, short, char, int, 1ong, f1oat, doub1e c. byte, short, char, int, 1ong, f1oat, doub1e d. int, 1ong, f1oat, doub1e 63. Cho do?n chuang trlnh sau: 1 : class Cruncher{ 2: void crunch(int i){ 3: System.out.println(int version): 4: } 5: void crunch(String s){ 6: System.out.println(String version); 7: } 8: 9: public static void main(String[] args){ 10 : Cruncher crun = new Cruncher(); 11 : char ch = p; 12 : crun.crunch(ch); 13 : } 14 : } a. Dng 5 s khng bin d4ch vl phuang thWc tr v kiu void khng th overridde 196

b. Dng 12 s khng bin d4ch vl khng c phin bn nao ca phuang thWc crunch() nhn vao tham s kiu char c. o?n ma bin d4ch duqc nhung s phat sinh Exception dng 12 d. Chuang trlnh ch?y va in ra kt qu: int version 64. Chn phat biu dng a. Tham chiu ca di tuqng c th duqc chuyn di trong php gan nhung khng th thc hin trong php gi phuang thWc b. Tham chiu ca di tuqng c th duqc p kiu trong php gi phuang thWc nhung khng th thc hin trong php gan c. Tham chiu ca di tuqng c th duqc chuyn di trong php gi phuang thWc va php gan nhung tun theo nhng quy tc khac nhau d. Tham chiu ca di tuqng c th duqc chuyn di trong php gi phuang thWc va php gan va tun theo nhng quy tc ging nhau 65. Cho do?n ma nhu bn dui. Hay cho bit dng nao khng th bin d4ch 1 : Object ob = new Object(); 2 : String stringarr[] = new String[50]; 3 : Float floater = new Float(3.14f); 4 : ob = stringarr; 5 : ob = stringarr[5]; 6 : floater = ob; 7 : ob = floater; a. Dng 4 b. Dng 5 a. Dng 6 b. Dng 7

197

Anima1

Mamma 1

Dog

Cat (imp1ements Washer)

Racoon (imp1ements Washer)

Swamp Thing

Hlnh sau ap dng cho cac cu 66, 67, 68 66. Cho do?n ma sau: 1 :Dog rover, fido; 2 :Animal anim; 3: 4 :rover = new Dog(); 5 :anim = rover; 6 :fido = (Dog)anim; Hay chn phat biu dng a. Dng 5 khng th bin d4ch b. Dng 6 khng th bin d4ch c. o?n ma bin d4ch thanh cng nhung s phat sinh Exception t?i dng 6 d. o?n ma bin d4ch thanh cng va c th thi hanh 67. Cho do?n ma sau: 1 :Cat sunflower; 2 :Washer wawa; 3 :SwampThing pogo; 4: 5 :sunflower = new Cat(); 198

6 :wawa = sunflower; 7 :pogo = (SwampThing)wawa; Hay chn p