lap trinh huong doi tuong trong java

Upload: adnpacs

Post on 07-Feb-2018

253 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    1/114

    AptechVietnam 1/114

    Chng1: Gii thiu v Java

    Mc tiu bi hc

    Kt thc bi hc ny, hc vin c th:

    Tm hiu cc thc th trong th gii thc nh l cc i tng

    nh ngha mt i tng phn mm

    Tm hiu v gii thch cu trc ca mt lp

    So snh cc lp v cc i tng

    Tm hiu tm quan trngca Java

    Tm hiu bJDK v cc cng c ca n Tm hiu v my o Java - Java Virtual Machine (JVM)

    1.1 Gii thiu v lp v i tng

    Cc i tng (object)v cc lp (class)l nn tng xy dng Java. Lp lmt khun mu, bao gm mt tp cc i tng c tnh cht tng t nhau. Lpm t tt c cc thuc tnh ca mt tp cc i tng c th.

    1.1.1 Cc thc th trong th gii thc nh l cc i tng

    i tng l khi nim dng m t cc thc th trong th gii thc. V d cci tng c th nhainf thy quanh ta nh:Ch - Dogs, t - Cars, bng hoa -Flowers, ngi nhHouses, Bt k mt thc th hu hnh hoc c th s mcno , uc th xem nhnh mt i tng trong th gii thc.

    Mi i tng c cc thuc tnh hoc tnh cht nhm m t n l ci g. V d,cc thuc tnh ca i tng Dog l:

    Ging

    Mu lng

    TuiNgoi ra, mt i tng c th thc hin cc hnh ng. Chng hn, cc hnhng ca Dog c th thc hin l:

    Sa

    n

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    2/114

    Learn Java by Example

    2/114 AptechVietnam

    Chy

    Nh vy, hai yu t quan trng nht ca i tng trong th gii thc l: thuctnh (Attribute) v hnh ng (Action). Nh , i tng c th c nh nghanh mt thc th tn ti, c cc thuc tnh v hnh ng hon ton xc nh.

    Tng tnh vy, trong phm vi ca cng ngh phn mm, cc i tng cngcm t da theo trng thi v hnh vi ca n. Trng thi ca mt i tngphn mm c nh ngha bi cc thuc tnh ca n. Cc hotng ca mti tng phn mm c nh ngha nh l cc hnh vi ca n.

    Hy xem xt mt i tng trong th gii thc, chng hnDog, mt con ch.Nu i tng ny c nh x n mt i tng phn mm, trng thi ca nc th l mu lng, ging v tui. Hnh vi ca i tng Dog c th l sa, n,chy,

    V vy, mt itng phn mm l mt thc th bao gm cctrng thi (thuc

    tnh) v hnh vi (hnh ng). N lu gi cc trng thi ca n trong cc trng,c gi l cc bin trong ngn ng lp trnh. Cn cc hnh vi c xem nh lcc phng thc, ging nh cc hm trong ngn ng lp trnh. Mt phngthc l mt chui cc cu lnh c t tn nhm thc hin cc tc v c thno .

    Tham kho hnh 1.1, y lv d v i tng Cashier(Th qu)

    Hnh 1.1:i tng Cashier v i tng Customer

    Cc thuc tnh ca i tng Cashierl:

    Tn

    Chc v

    Tui

    Mt i tng thc thi mt shnh ng. Cc hnh ng ca i tngCashier l:

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    3/114

    Chng 1Gii thiu v Java

    3/114

    Thu tin t khch hng

    In ho n

    S thun li khi s dng i tng l:

    N gip chng ta hiu hn v th gii thc N nh x cc thuc tnh v cc hnh ng ca cc i tng trong th

    gii thc thnh trng thi v hnh vi ca cc i tng phn mm.

    1.1.2 Class (Lp)

    Nh cp trn, Dog l mt v d v mt i tng trong th gii thc. Tuynhin, trong th gii thcc nhiu loi ng vt khc nh mo, cu, cp, Vvy, Dog ch l mt th hin ca lp ng vt.

    Cc thuc tnh v hnh ng chung ca mt si tng c nhm li thnhmt n v. n v ny c th c dng to ra mt i din ca loi tngng, gi l lp. Mi mt lp m t mt tp cc i tng ring l.

    Mt lp l mt khun mu hoc bn thit k nh ngha c im chnh ca trngthi v hnh vi cho tt c cc i tng thuc v lp. Tt c cc th hin calp, c gi l i tng, s cchung cc trng thi v hnh vi.

    Tuy nhin, cc thuc tnh v hnh ng c th c gn ch sau khi mt itng c tora. Khi i tng c tora ta mi c mt i dintht s cathc th.V vy, lp l mt m hnh khi nim ca thc th. N m t cc thuctnh v hnh ng chung chkhng ring cho mt i tng c th no.

    V d, xem xt mt lp c tn Animal(ng vt)nh trong bng 1.1. Lp chacc thuc tnh (trng thi) v hnh ng (hnh vi) ca ng vt.

    Class Animal

    TypeAnimal NameColorMotionBreathingEating

    Bng 1.1: M t lp Animal

    Lp ny c trng thi Type, Animal Name v Color.Trong ,Type - M t loi ng vt.

    Animal name- Tn loi ng vt, chng hncu, cp, ch,

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    4/114

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    5/114

    Chng 1Gii thiu v Java

    5/114

    Hnh 1.2: Cc i tng v lp.

    1.2 Gii thiu v Java

    Vo nm 1995, hng Sun Microsystem gii thiu mt ngn ng lp trnh mi l

    Java. Cho ngi, t Java ch c ngha l tn mt hn o Indonesia hocmt kiu cch pha caf no .

    1.2.1 S cn thit ca Java

    Java l mt ngn ng dnh cho cc nh lp trnh chuyn nghip. Java c xydng trn c s ngn ng lp trnh C v C++. N k tha c php ca C v ccnt c trng ca C++. Mt nhm k s ca hng Sun Microsystem cn thit kmt ngn ng cho cc thit b in t nh tivi, my git, V vy, mc ch cbn l pht trin ngn ng to ra phn mm c th nhng trong cc thit bin t. Trong ngn ng C v C++ trnh bin dch ph thuc vo loi CPUring

    bit.

    Cc trnh bin dch rt t vmt nhiu thi gian to ra. Do , khng th ctrnh bin dch cho mi loi CPU. V yu cu l cn c cch d dng v hiu qu to ra cc trnh bin dch. Ngoi ra, phn mm phi nh, nhanh, hiu qu vc lp nn tng, ngha l m chng trnh c th thc hin trn nhiu CPUkhc nhau di cc mi trng khc nhau. Trong n lc to ra mt ngn ngc lp nn tng v kh chuyn,James Gosling v nhm cng s i tin phong

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    6/114

    Learn Java by Example

    6/114 AptechVietnam

    trong vn ny.Kt qu l s ra i ca ngn ng Java. u tin n c gil Oak, sau c i tn thnh Java.Ngy nay, Java c nhng bcpht trin ht sc thnh cng v c chp nhn bi hng triu lp trnh vintrn ton th gii.

    Java l mt ngn ng lp trnh ph dng, c dng vit cc chng trnh cth chy c trn Internet. Nt c trng chnh ca Java l ngn ng hngi tng v c lp nn tng. c lp nn tng c ngha l chng trnh c thchy trn nhiu nn tng khc nhau nh: Microsoft Windows , Apple Macintosh,Linux, Java khng nhng c dng cho cc ng dng c lp, cc chngtrnh trn mng, m cn c dng trong cc thit b tiu dng nh: in thoi,cc thit b cm tay,

    1.2.2 Cc c trng ca ngn ng Java

    Hng i tng(Object-oriented)

    Java l mt ngn ng hng i tng. Trong Java khng c cc hng, binhoc hm c lp. Ngha l tt c u l mt phn ca i tng. Cc hng,binv hm c truy nhpthng qua cc lp v cc i tng.

    Cc ngn ng hng i tng lai ghp khc nh C++, c c im ca ngnng cu trc cng thm s m rng i tng. V d, C++ l mt ngn nghng i tng, nhng lp trnh theo hng cu trc, phng thc main()nmngoi bt k lp v i tngno. Java th khng cho php cch khai bo ny.Trong Java, phng thc main() ch c khai bo bn trong mt lp.

    c lp nn tng(Platform independent)

    Java l mt nn tng pht trin ng dng. N c th c dng nh mtngn ng. Nn tng y l s kt hp gia phn cng v phn mm h thngm hu ht cc phn mm u chy c. V d, b x l Intel chy trn nnWindows XP l mt nn tng.

    c lp nn tng ni n kh nng ca chng trnh di chuyn t mt nn tngny sang mt nn tng khc khng c bt k mt kh khn no. c lp nntng trong Java mc m ngun v m bytecode(m trung gian).

    Java l mt ngn ng nh kiu mnh m, ngha l phi cn khai bo kiu dliu cho mi bin. Kiu d liu trong Java l ng nht trong tt c cc nn tngpht trin. Java c cc lp th vin c s. iu ny cho php cc lp trnh vinc th di chuyn m t nn tng ny n mt nn tng khc m khng cn vitli m.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    7/114

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    8/114

    Learn Java by Example

    8/114 AptechVietnam

    trnh thun tu m cn cung cp nhiu mc kim sot tnh an ton khi thc thichng trnh.

    mc u tin, d liu v cc phng thc c truy nhp thng qua ccinterface (giao tip) do lp cung cp. Java khng h tr cc php ton con tr.

    Do , n khng cho php truy nhp trc tip n cc vng nh v cung cp cch thu gom rc gip thu hi b nh khng s dng. Cc c trng ny gipJava an ton ti a v c kh nng kh chuyn cao.

    Trong mcth hai, trnh bin dch kim sot m bo m l an ton, v tuntheo cc nguyn tc ca Java.

    Mcth ba, c m bo bi trnh thng dch. Chng kim tra xem bytecodephim bo cc qui tc an ton trc khi thc thi.

    Mcth t, kim sot vic np cc lp vo b nh gim st vic vi phm gii

    hn truy xut trc khi np vo h thng. Phn tn (Distributed)

    Java c th c dng pht trin cc ng dng trn nhiu nn tng, h iuhnh v nhiu giao tipngi dng ho. Java c thit k h tr ccng dng trn mng. Do , Java c dng nh l mt cng c pht trin trnmi trng Internet.

    a lung(Multithreaded)

    a lung l yu t cn thit cho mt ngn ng nh Java. Mt ng dng thchin mt tc v trong khiangch ngi dng nhp liu. Trong mt ng dng ho trn mng nh mt trnh duyt web, thng c rt nhiu tc v xy ra ti

    mt thi im. Java cung cp h tr cho x l gi l multithreading thchin nhiu tc v ng thi. Java cung cp c ch ng b nhiu x l. C chny cng h tr cho lung (thread) gip cc ng dng tng tc trn mng chym xui.

    ng(Dynamic)

    Java c thit k nh mt ngn ng ng p ng cho nhng mi trngm. M ngun Java c lu tr trong tp tin c dng .java. Trnh bin dch sbin dch chng thnh bytecode cha trong tp tin .class. Mi tp tin .javathng c bin dch thnh mt tp tin .class.

    u tin trnh bin dch kim tra ng dn trn th mc hin hnh v cc thmc khc c xc nh trong bin mi trng CLASSPATH.iu ny cn thitgip xc nh cc lp khc c tham chiu trong tp tin ngun. V d, nu tptin c bin dch ph thuc vo cc tp tin khng c bin dch khc, trnhbin dch s c tm v bin dch chng. Trnh bin dch c th iu khin s phthuc vng trn cng nh cc phng thc c s dng trc khi c khaibo. N cng xc nh tp tin ngun c thay i so vi ln bin dch cui cnghay khng. V vy, trnh bin dch kh thng minh .

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    9/114

    Chng 1Gii thiu v Java

    9/114

    Kin trc trung lp(Architecture-neutral)

    Cng ngh Java c thit k h tr cc ng dng s c trin khai trongcc mi trng khng ng nht trn mng. Trong cc mi trng nh vy, ccng dng phi c kh nng thc thi tt trnnhiu kin trc phn cng.

    Cc chng trnh Java c bin dch thnh mt nh dng bytecode khng phthuc kin trcc th thc thi trn nhiu nn tng phn cng v phn mm. Vvy, vn phn phi nh phn v phin bn c gii quyt bi bn cht thngdch ca cng ngh Java.

    Cc chng trnh Java chy trn bt k h thng noc h tr my o Java.iu ny khng nhng hu ch trn mng m cn c ch trn cc h thng phntn.

    Kh chuyn(Portable)

    Kh chuyn l h qu ca kin trc trung lp. Cng ngh Java c c kh nngkh chuyn l nh vo nh ngha cht ch ca ngn ng. N ch r kch thc

    ca cc kiu d liu c bn loi tr s ph thuc ci tv hnh vi ca ccton t s hc. H thng Java bn thn l kh chuyn. Trnh bin dch Javac vit bng Java, trong khi h thng thc thi Java c vit bng ANSI C viranh gii kh chuyn r rng.

    Hiu sut cao (high performance)

    Hiu sut lun c cn nhc. So vi cc ngn ng kch bn thng dch mccao, Java c hiu sut cao nht. B thu gom rc t ng thc hin nh lungngm bn di, c u tin thp nht, m bo kh nng kh chuyn caonht. Sun khng nh kh nng thc thi ca bytecode chuyn thnh m my ttgn nh C hoc C++.

    1.3 Gii thiu JDK

    Sun Microsystems cung cp ngn ng Java trong sn phm gi l JavaDevelopment Kit (JDK). JDK bao gm cc cng c pht trin, mi trng thc thi(Java Runtime Environment hay JRE), cc th vin, cc chng trnh demo vm ngun. Mt s cng c nm trong JDK dng pht trin cc ng dng Javac m t di y:

    Trnh bin dch Java, Javac

    Trnh bin dch dch m ngun Java thnh tp tin class. Trnh bin dch javac

    c dng bin dch cc tp tin m ngun Java thnh bytecode. M ngunJava c th c to ra bng bt k trnh son tho vn bn no, chng hnNotepad

    C php:

    Javac [option] source

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    10/114

    Learn Java by Example

    10/114 AptechVietnam

    Trong ,

    source - 1 hoc nhiu tn tp tinc phn m rng l .java

    option - Cc tu chn dng lnh

    V d,

    Javac FirstProgram.java

    Cu lnh ny s tora mt tp tin c tn FirstProgram.class. Tp tin class nys chy trn my o Java (JVM). Mt vi tu chn ca cu lnhjavac c mt trong bng 1.3

    Ty chn(Option)

    M t

    -classpathXc nh r v tr cha cc lp c tham chiutrong m ngun (c lu trong bin mi trngCLASSPATH)

    -d Xc nh th mc ch cha cctp tin .class

    -gIn tt c cc thng tin g li thay cho s dng vtn tp tin mc nh.

    -verboseHi n th cc thng tin u ra mi ln lp c npv tp tin ngun c bin dch.

    -version Hi n th thng tin v phin bn-sourcepath Cho bit v tr lp

    -help Hi n th cc tu chn chu n

    Bng 1.3: Cc tu chn ca trnh bin dch Javac

    Xem xt v d sau s dng tu chn d:

    javac d c:\FirstProgram.java

    Cu lnh ny s bin dch v lu tp tin FirstProgram.class trong aC.

    Trnh thng dch Java, Java

    Trnh thng dch Java c s dng thc thi m bytecode. N ly i s ltn tp tin .class thc thi hoc tn tp tin lu tr Java gi l jar.

    C php:

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    11/114

    Chng 1Gii thiu v Java

    11/114

    java [option] classname [arguments]

    Trong ,

    option - Cc tu chn dng lnh

    classname - Tn tp tinclass c dng

    arguments -i s c truyn vo cho hm main

    V d,

    Java FirstProgram

    Mt vi tu chn ca cu lnh Java c m t trong bng 1.4

    Ty chn M t

    -classpath Xc nh r v tr cha cc lp cn (c lutrong bin mi trng CLASSPATH)

    -v hoc

    verbose

    Hin th cc thng tin u ra mi ln lp cnp v tp tin ngun c bin dch.

    -version Hi n th thng tin v phin bn v thot

    -jar S dngtn tp tinJAR thay cho tp tin class

    -help Hi n th thng tin tr gip v lnh Java v thot

    -XHi n th thng tin v cc ty chn phi chu n v

    thot

    Bng 1.4: Cc tu chn ca trnh thng dch Java

    1.4 My o Java (Java Virtual Machine - JVM)

    My o Java l tri tim ca ngn ng lp trnh Java. Mi trng Java bao gmnm phn t sau:

    Ngn ng nh ngha Bytecode

    Cc th vin lp Java/Sun

    My o Java (JVM)

    Cu trc catp tin.class

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    12/114

    Learn Java by Example

    12/114 AptechVietnam

    c tnh kh chuyn catp tin .class cho php cc chng trnh Java vit mtln chy mi ni (Write once, run anywhere).c tnh ny c c nh s cit my o Java(JVM).

    1.4.1 My o Java l g?

    Lp trnh vin cn thit phi bit my o Java l g v cch lm vic ca n. iuny s gip ta tn dng c im mnh ca JVM v trnh nhng im yu.

    My o l mt khi nim phn mm da trn tng ca my tnh tng tng.N c tp hp cc lnh logic xc nh cc hot ng ca my tnh. My o cth c xem nh mt h iu hnh thu nh. N thit lp cc lp tru tngcho: phn cng bn di,h iu hnh, m bin dch.

    Trnh bin dch chuyn m ngun thnh tp cc lnh ca my o khng phthuc vo phn cngring bit. Trnh thng dch l mt ng dng hiu cc lnh

    ca my o v chuyn cc lnh thnh cc lnh thc hin trn phn cng bndi. My o, v c bn, to ra mt h thng thc thi gip thc hin cc mlnhbng cch:

    Np cctp tin .class

    Cc trnh Class Loaders l mt trong cc thnh phn c bn ca kintrc my o Java. N cho php my o Java np cc lp m khng cnbit bt c th g v ng ngha h thng tp tin v cho php cc ngdng np cc lp Java nh cc module m rng.

    Qun l b nh

    My o Java qun l b nh theo cc cch sau: Khi mt my o Java c triu gi chy mt ng dng, n yu

    cu h iu hnh cp b nh cho bn thn JVM chy v b nhtrng cho cc ng dng to cc i tng mi.

    Khi mt i tng mi c to, JVM cp pht b nh cho itng t vng nh trng.

    Khi vng nh trng gim xungsau khi to mt si tng, JVMyu cu h iu hnh cp thm.

    Khi mt i tng khng cn c dngn s b hu b. B nh b

    chim dng s c gii phng v tr li vng b nh trng. Khi vng nh trng b chim gi, v khng th xincp thm vng

    nh t h iu hnh th JVM tm dng ng dng v a ra thngbo li Out of memory error.

    Thc hin thu gom rc (Garbage Collection)

    Qu trnh thu gom rc l gii phng b nh ang s dng camt i tngngay khi n kt thc, ngha l i tng khng c truy nhp sau mt thi

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    13/114

    Chng 1Gii thiu v Java

    13/114

    gian di. Qu trnh ny xy ra t ng v an ton i vi cc i tng khngcn cn tham chiu n na.

    Khi my o Java thc thi m, mt thanh ghi cc b gi l program counter cdng. Thanh ghi ny tr n cc lnh ang c thc thi hin ti. Nu cn thit,cc lnh ny sa ni dung thanh ghi ny thay i lung thc thi. Mt khc,

    lung c thc hin tun tnn n tr t lnh ny n lnh khc.

    Mt khi nim ph bin khc c dng trong Java l trnh bin dch JIT Just-In-Time. Cc trnh duyt web nh Netscape Navigator, Internet Explorer baogm trnh bin dch JIT nhm tng tc thc thi m Java. Mc ch chnh caJIT l chuyn i m bytecode sang m my ng vi tng b vi x l c th.Cc lnh ny c lu tr v dng bt c lc no, c gi nh l mt phngthc xc nh. Hnh 1.3 hin th mi quan h gia trnh bin dch Java v JIT.

    Hnh 1.3: Mi quan h gia trnh bin dch Java v JIT

    M chng trnh c bin dch v chy thng qua mt my o thay cho vi x lca my tnh. Bng cch s dng cch tip cn ny, m ngun Java c th chytrn bt k nn tng no, n c bin dch v chy thng qua my o Java.

    My o Java khng bit g v ngn ng lp trnh Java, n ch nhn ra mt nh

    dng nh phn xc nh ca mt file gi l file class. Cc chng trnhJava

    cbin dch thnh m bytecode c th tuyn trn mng v thc thi bi my oJava. Mi file class cha nh ngha ca mt lp hoc mt giao tip . Filebytecode c phn tn m rng l .class

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    14/114

    Learn Java by Example

    14/114 AptechVietnam

    Tm Tt Bi Hc

    Mt i tng l mt th hin ca mt lp.

    Mt lp nh ngha mt thc th trn gii hn ca cc tnh cht v hnhng ph bin.

    Mt lp nh ngha mt thc th, trong khi mt i tng l mt thcth thc s.

    Java l mt ngn ng thng dch v bin dch.

    Cc tnh nng ca Java:

    o Hng i tng

    o c lp nn tng

    o Mnh mo An ton

    o Phn tn

    o a lung

    o ng

    o Kin trc trung lp

    o Kh chuyn

    o Hiu sut cao

    Sun Microsystems gii thiu ngn ng Java nh l mt sn phm ditn gi Java Development Kit (JDK)

    Bn trong my o, Java to ra mt h thng thi gian thc gip thc thim lnh nh sau:

    o Np cc files .class

    o Qun l b nh

    o Thc thi vic thu gom rc

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    15/114

    AptechVietnam 15/114

    t

    Chng2: Bin v ton t

    Mc tiubi hc

    Kt thc bi hc ny, hc vin c th:

    C php khai bo bin

    nh ngha cc kiu d liu c bn

    Tm hiu v gii thch cu trc ca mt lp

    M t cc kiu nh dng

    M t cc k t c bit (escape sequences)

    Xc nh cc ton t khc nhau

    2.1 Bin

    Bin l n v lu tr c bn trong chng trnh Java. Bin l cc thnh phnxc nh d liu v c dng tham chiu n cc gi tr xc nh c tora trong chng trnh. t tn cc bin c ngha gip ta d dng c hiu mngun hn.

    2.1.1 Khai bo bin

    Tt c cc bin phi c khai bo trc khi s dng. Dng khai bobin cbn l:

    datatype variablename;

    Trong ,datatype - Kiu d liu hp l

    variablename - Tn bin hp l

    Cc bin c th khai bo v khi to theo nhiu cch khc nhau, c minh hotrong on m 1.

    on m 1:

    Line0: int x,y,z; //Khai bo 3 bin kiu int x,y//v z

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    16/114

    Learn Java by Example

    16/114 AptechVietnam

    Line1: int a=5,b,c=10; //Khai bo 3 bin kiu int//, khi to a v c

    Line2: byte num=20; // Khai bo 1 bin num c kiu//byte v khi to gi tr l 20

    Line3: char c=c; //Khai bo c l bin c kiu//char, khi to gi tr l c

    Line4: int num1=num2=10; //Gi tr 10 c lu tr//trong num1 v num2

    Line0 v Line1 l cc v d v khai bo danh sch cc bin c cch nhau bidu phy v Line4 l v d v gnmtgi tr cho mt hoc nhiu bin lc khaibo bin.

    on m 2 l mt v d v gn cc gi tr h bt phn (8) v h thp lc phn(16) cho cc bin.

    on m 2:

    Line1: int decVal = 10;//gi tr 10 trong h

    // thp phn (h 10)

    Line2: int octVal = 012;//gi tr 10 trong h

    // bt phn (h 8)

    Line3: int hexVal = 0xa;//gi tr 10 trong h

    // thp lc phn (h 16)

    on m 2 hin th c php ng cha cc gi tr trong h bt phn v hthp lc phn. Line2 biu din mt nh dng trong h bt phn vi tip u ng0. H thng s bc phn c 8 k t s t 0 n 7 m t cc s.

    Line3 biu din nh dng trong h thp lc phn vi tip u ng 0x. H thngs thp lc phn c 16 k t s m t cc s, t 0 n 9 v t k t A n F.T A n F tng ng t 10 n 15. V d, gi tr 26 trong h 16 l:

    int hexVal = 0x1a;

    H thng thp phn c m t trong Line1, l cch dng thng dngtrong lptrnh.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    17/114

    Chng 2 Bin v ton t

    17/114

    2.1.2 Khai bo hng(literals)

    Hng l mt gi tr khng iv c m t trc tip trong on m m khngcn n tnh ton. V d,

    on m 3:

    Line1: int val = 50;

    Line2: float num = 35.7F;

    Line3: char x = x;

    Mt hng c s dng bt k ni no cho php kiu gi tr ca n. Tuynhin, c nhiu kiu hng khc nhau. Mt vi trong s chng l:

    Hng nguyn (Integer literals)Hng nguyn c dng biu din mt gi tr nguyn (int), trong Java l mtgi tr s nguyn 32 bit. Trong mt chng trnh, s nguyn l kiu thng cs dng nht. Bt k mt gi tr s nguyn no u l mt hng s nguyn .

    Cc s nguyn c th biu din nh:

    Cc gi tr thp phn c biu din trong h c s 10

    Cc gi tr bt phn c biu din trong h c s 8

    Cc gi tr thp lc phn c biu din trong h c s 16

    Mi mt loi trn c hng tng ng. Mt hng s nguyn c th c gn nmt kiu s nguyn khcnh byte hoc long. Khi mt gi tr hng c gn nmt bin kiu byte hoc short, s khng c li nu gi tr hng nm trong phm vica kiu ch. Cc s nguyn c th c biu din vi mt k t hoa (L)hocthng (l) cui, biu din mt s nguyn di 64 bit.

    Hng du chm ng(floating-point literals)

    Cc hng s thc biu din cc gi tr thp phn vi phn l. Cc hng s thcc cc thnh phn sau:

    Thnh phn s, v d 0, 1, 2, , 9

    Du thp phn, v d 4.90, 3.141

    S m c biu din bi E hoc e i theo sau mt s thp phnc th dng hoc m. V d: e+208, 7.436E6, 23763E-05,

    Kiu hu t D, d, F hoc f

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    18/114

    Learn Java by Example

    18/114 AptechVietnam

    Trong Java, cc hng s thc, ngm nh, c chnh xc double. Mt hngfloat c biu din bi F hoc f, theo sau l gi tr, v mt hng s thc doublec biu din bi D hoc d.

    Hng Boolean(boolean literals)

    Cc hng boolean n gin v ch c hai gi tr logic l truev false. Cc gi trny khng th chuyn i n bt k h thng s no. Trong Java, truekhngbng 1 v falsekhng bng 0. N ch c th gn n cc bin c khi bo lbooleanhoc dng trong cc biu thc vi cc ton t boolean.

    Hng k t(character literals)

    Cc hng k t c t trong cp du ngoc n. Tt c cc k t ASCII hpl c th t trc tip trong cp du ngoc n, nh g, $ v z.

    Hng Null(null literals)

    Khi mt i tng c to, lng b nh xc nh c cp pht cho itng. a ch bt u ca b nh c lu trong i tng, l, mt bintham chiu. Tuy nhini khi, bin tham chiu khng tham chiu n i tng.

    Trong hp ny, bin tham chiu c gn mt hng nullnh v d bn di:obj = null ;

    Hng chui(String literals)

    Hng chui cha chui cc k t trong cp du ngoc kp. Cc k t c th lk t thng, c th c c trn mn hnh, hoc k t iu khin, khng nhnthy c trn mn hnh. Cc du vch cho ngc, du nhy kp v cc k tiu khin khc c th c biu din bng du cho ngc (\) i km vi m

    iu khin, cc k t ny cn gi l escape sequences. V dsau l mt xuthng, khng c k t iu khin:

    Welcome to Java

    2.2 Kiu d liu(Data type)

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    19/114

    Chng 2 Bin v ton t

    19/114

    Cc ng dng x l d liu u vo v xut d liu kt qu. u vo, u ra, vkt qu ca cc qu trnh tnh ton u lin quan n d liu. Trong mi trngtnh ton, d liu c phn lp theo cc tiu ch khc nhau ph thuc vo bncht ca n. mi tiu ch, d liu c mt tnh cht xc nh v c mt kiu thhinring bit.

    Java cung cp mt vi kiu d liu m chng c h tr trn tt c cc nntng. V d, d liu loi int (integer) ca Java c th hin bng 4 bytes trongb nh ca tt c cc loi my bt lun u chy chng trnh Java. Bi vycc chng trnh Java khng cn phi thay i khi chy trn cc nn khc nhau.

    Trong Java kiu d liu c chia thnh hai loi:

    Cc kiu d liu nguyn thy (primitive)

    Cc kiu d liu tham chiu (reference)

    2.2.1 Cc kiu d liu nguyn thu(Primitive Data Type)Java h tr tm kiu d liu nguyn thu c chia ra thnh 4 nhm:

    Kiu s nguyn (Integer)

    Trong nhm ny c cc kiu d liu: byte, short, int v long v, hu ht, biudin cc gi tr s nguyn c du.

    Kiu du chm ng (Floating-point)

    Trong nhm ny c cc kiu d liu: float v double v biu dincc s c phnthp phn.

    Kiu k t (Character)

    Nhm ny c kiu d liu char, biu din cc k hiu trong tp hp cc k tnh k t ch ci v k t s.

    Kiu Boolean

    Kiu d liu boolean thuc nhm ny v biu din cho hai gi tr true (ng)hoc false(Sai).

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    20/114

    Learn Java by Example

    20/114 AptechVietnam

    Kiu d lius nguyngm 4 loi:

    Kiu byte

    Dng lu tr lng d liu nh. y l kiu d liu c di 8 bit, phm vi

    lu tr t -128 n 127. N thng c dng khi lm vicvi lung d liu tmng hoc t file. Kiu d liu ny thng dng khi lm vic vi d liu nhphn chun v c th khng tng thch vi cc kiu d liu khc ca Java. Tkho byte c dng trong khai bo mt bin kiu ny. V d:

    byte val;

    Kiu short

    y l kiu d liu t dng nht. C di 16 bitv phm vi lu tr t -

    32.768 n 32.767. Kiu d liu ny thng dng cho cc ng dng trn ccmy tnh 16 bit. Kiu d liu ny cng c dng lu tr d liu s nh. Tkho short dng khai bo bin kiu ny.

    Kiu int

    y l kiu d liu thng dng nht. N c di 32 bit, vi phm vi lu tr t-2.147.483.648 n 2.147.483.647. Kiu int l kiu linh hot v hiu qu nht. Vd: Tng s lng phi tr cho tt c nhn vin trong cng ty.

    Kiu long

    long l kiu d liu 64 bitc du, vi phm vi lu tr t

    -9.223.372.036.854.775.808 n +9.223.372.036.854.775.807. N c dngkhi kiu int khng lu mt s ln hn phm vi ca n. V d, dn s camt nc.

    2.2.2 Cc kiu d liu tham chiu

    Trong Java, cc i tng v cc mng l cc bin tham chiu. Khi mt itng hoc mt mng c to, mt vng nh nht nh c gn cho n va ch ca vng nh ny c lu tr trong bin tham chiu. Ni cch khc,kiu d liu tham chiu l a ch ca mt i tng hoc mt mng c to ratrong b nh.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    21/114

    Chng 2 Bin v ton t

    21/114

    2.3 nh dng nhp v xut

    Bt c khi no kt qu hin th trn mn hnh, th cn phi c nh dng. Java

    cung cp cc k t iu khin nh dng (escape sequence) thc hin nhdng cc d liu nhp v xut

    2.3.1 nh dng xut

    C th nh dng theo 2 cch:

    print() v println()

    format()

    Cc phng thc ny hot ng tng t nhau. Phng thc format()dng lpJava.util.Formatter thc hin nhiu nh dng phc tp hn.

    Cc phng thc print() v println()

    Cc phng thc ny chuyn d liu dng phng thc toString thch hp v

    tr limt gi tr chui. Hy xem xt on m 4.

    on m 4:

    int num1 = 5;

    int num2 = 10;

    int sum = num1 + num2;

    System.out.print(The sum of);

    System.out.print(num1);

    System.out.print( and );

    System.out.print(num2);

    System.out.print( is );

    System.out.print(sum);

    System.out.println(.);

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    22/114

    Learn Java by Example

    22/114 AptechVietnam

    int num3 = 2;

    sum = num1 + num2 + num3;

    System.out.println(The sum of + num1 + , + num2+ and + num3 + is + sum + .);

    Kt qu ca on m trn l:

    The sum of 5 and 10 is 15.

    The sum of 5, 10, and 2 is 17.

    Bin sum c nh dng hai ln: ln u trong lnh print; ln th hai bng mchuyn c t ng to ra bi trnh bin dch Java v s dng phng thctoString. Trong trng hp ny, bt k gi tr no cng c th c nh dng.

    Phng thc format()

    Phng thc ny nh dng nhiu i s da trn mt chui nh dng. Chuinh dng cha c phn nh dng lnhng chui bnh thngnhngn khngkt hp vi bt k mt i s no.Cc chui nh dng h tr nhiuc tnh.Thnh phnnh dng bt u bng du %. V d,

    System.out.println(%d, + sum);

    Cu lnh ny hin th gi tr nguyn ca bin sum.

    C php ca mt chui nh dng nh sau:

    C php:

    %[arg_index$][flags][width][.precision]conversion character

    Trong ,

    arg_indexL mt s nguyn theo sau l $. S nguyn cho bit i s s

    c in ti v tr c cp.flagsC nhiu bin c khc nhau trong Java nh bng 2.1

    Flag (C) M t

    - i s c canh th ng theo bn tri

    + Chn mt du + hoc - vi i s ny

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    23/114

    Chng 2 Bin v ton t

    23/114

    0 Dn ui s ny vi cc s 0

    , Dng du ngn cch nhm

    ( S m c bao quanh bng dungoc n

    Bng 2.1: Kiu ca cc flag

    width - Xc nh s ti thiu cc k t s c in

    precisionxc nh s k t s s c in sau du thp phn. Dng vicc s du chm ng.

    conversion character - Kiu ca i s c nh dng. V d, b lboolean, c l char, d l s nguyn, .

    Cc gi tr t trong cp du [] l ty chn. Ch cc thnh phn yu cu xcnh nh dng l du % v k t chuyn i.

    on m 5 minh ha cch s dngphng thc format()

    int val = 5;

    double sq = 2.236068;

    System.out.format("The square root of %d is %f.%n",val,sq);

    Kt qu ca on m trn nh sau:

    The square root of 5 is 2.236068.

    2.3.2 K t iu khin(escape sequences)

    K t iu khin c dng biu din cc k t c bit. Cc k t iu khinc th dng cho hng k t hoc hng chui.

    Bng 2.2 gii thiu mt vi k t c bit trong Java

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    24/114

    Learn Java by Example

    24/114 AptechVietnam

    K t c bit Gi tr k t

    \f Cun trang giy vo my in (Form feed)

    \r Xung hng (Carriage return)

    \xxx K t tng ng vi gi tr bt phn xxx, xxx nm

    trong khong 000 n 0377.\uxxxx K t unicode vi m ho xxxx, trong xxxx l

    mt s thp lc phn gm 4 k s.

    Bng 2.2: K t iu khin (Escape sequence)

    biu din mt k t unicode , k t iu khin unicode \u c th c dngtrong chng trnh Java. Mt k t unicode c th c biu din bng mtchui thp lc phn hoc bt phn. on m 6 minh ho vn ny.

    on m 6:

    // In Hello s dng chui thp lc phn

    System.out.println("\u0048\u0065\u006C\u006C\u006F" +"!\n");

    //In Blake s dng chui bt phn cho k t a

    System.out.println("Bl\141ke\"2007\"");

    Ch : Cc k t iu khi n thp lc phn bt u vi \u, theo sau l 4 k s hthp lc phn. Cc k t iu khin bt phn gm 3 k s sau du \. V d:

    \xyy

    Trong , x c th bt k k s no t 0 n 3, y t 0 n 7.

    Kt qu on m 6 l:

    Hello!

    Blake2007

    Hai kiu k t iu khin c th c ngha khc nhau bi v k t c bit \u cx l trc cc k t c bit khc.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    25/114

    Chng 2 Bin v ton t

    25/114

    2.4 Cc ton t

    Cc ton t kt hp vi cc bin n hoc cc biu thc thnh cc biu thcmi phc tp hn m n tr li cc gi tr.

    2.4.1 Loi ton t

    Java cung cp cc loi ton t khc nhau nh sau:

    Ton t s hc

    Cc ton t s hc c dng trong cc biu thc ton hc. Cc ton hng ca

    cc ton t s hc phi dng s. Cc ton hng kiu boolean khng s dngc,song cc ton hng k t cho php s dng vi loi ton t ny.

    Ton t quan h

    Cc ton t quan h kim tra mi quan h gia hai ton hng. Kt qu ca mtbiu thc c dng cc ton t quan h l nhng gi tr boolean, true(ng) hocfalse(sai).

    Ton t logic

    Cc ton t logic lm vic vi cc ton hng boolean.

    Ton t gn

    Ton t gn l mt du bng, =, dng gn gi tr cho mt bin. C th gn gitr cho mt hoc nhiu bink tip nhau. Nghal, c th s dngmt dy cc

    php gn.

    Ton t thao tc bit (bitwise)

    Mt ton t bitwise cho php ta thao tc trn tng bit ring bit trong cc kiu dliu nguyn thu. Ton t bitwise da trn c s i s boolean. N thc hin

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    26/114

    Learn Java by Example

    26/114 AptechVietnam

    php tnh trn hai bit c v tr tng ng trn hai ton hng to ra mt kt qumi.

    Khi cc ton hng l cc s, ton t & thc thi hm AND gia hai bit, v ton t| thc thi hm OR gia hai bit. Bng 2.3 m t vn ny.

    Condition1(iu kin 1)

    Condition2(iu kin 2)

    Condition1 &Condition2

    Condition1 |Condition2

    True True True True

    True False False True

    False False False False

    False False False False

    Bng 2.3: AND v OR

    Ton t dch bit sang phi khng du

    Mi ln mt dch bit xy ra, ton t >>> t ng in bit c th t u tin cao vini dung trc ca n nhng vn gi du ca gi tr. Tuy nhin, thnh thongdch chuynny khng thch hp vi nhng gi tr khng phi l s . Trng hpny thng xy ra khi lm vic vi d liu l hav cc gi tr da trn pixel.

    Trong tnh hung , mt gi tr 0 c dch chuyn n bit c th t u tin caokhng quan tm ti gi tr ban u ca n. iu ny gi l dch chuyn bit khngdu. V vy, mt ton t dch bit sang phi khng du, >>>, lun lun dchchuyn 0 n cc bit c th t u tin cao hn.

    on m 7:

    int val = -3;

    val = val >>> 20;

    Trong , val c gn bng -3. Gi tr ny sau c dch chuyn sang phi20 bits, in 0 vo 20 bits v l i bit du. Gi tr sau khi dch bit l 4095.

    Ton t instanceof

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    27/114

    Chng 2 Bin v ton t

    27/114

    Ton t ny ch c dng cho cc bin tham chiu i tng kim tra mti tng c thuc mt kiu xc nh hay khng.Dng tng qut ca ton tinstanceof l:

    object instanceof type

    y, i tng l th hin ca mt lp, v c kiu l kiu ca lp. Nu itng thuc vmt kiu xc nh hoc c th p kiu thnh kiu xc nh, thton t instanceof tr li gi tr true, ngc li th false.

    on m 8 minh ho cch dng ton t ny.

    on m 8:

    Scanner input = new Scanner(System.in);

    Boolean val = input instanceof Scanner;

    System.out.println(val);

    Gi tr c in ra trong on m trn l true

    Ton iu kin

    Ton t iu kin l mt loi ton t c bit v n gm ba thnh phn cu thnhbiu thc iu kin. Ton t ny c th thay th cu lnh if-then-else.

    C php :

    expression1 ? expression2 : expression3;

    Trong ,

    expression1: l biu thc logicbt k tr v gi tr true hoc false.

    expression2: l biu thc s c c lng khi gi tr ca expression 1 l true.

    expression3: l biu thc s c clng khi gi tr ca expression 1 l false

    Cc ton t iu kin c th lng nhauv c minh ha trong on m 9:

    on m 9:

    int num1 = 5;

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    28/114

    Learn Java by Example

    28/114 AptechVietnam

    int num2 = 10;

    char op = '*';

    System.out.println( (op == '-') ? (num1 - num2) : (op =='+') ? (num1 + num2) : (op == '*') ? (num1 * num2) :"Invalid operator");

    Trong on m 9, iu kin cui cng l true nn kt qu l 50.

    2.4.2 Th t u tin ca cc ton t v s kt hp

    Khi mt biu thc cha nhiuton t, chng s c thc hin theo mt th txc nh bi th t u tin ca n. Th t u tin ca cc ton t ton hc tuntheo cc nguyn tc s hc. Nu khng chc chn, ta dng du ngoc n

    thay i th t u tin.

    Xt biu thc 5+3*2, n c tnh 5+(3*2) bng 11, ch khng tnh (5+3)*2 bng16. Ton t (*) c u tin cao hn ton t (+), do vy php nhn c thchin trc.

    Xt biu thc 8-3-2, n c tnh (8-3)-5 bng 3, ch khng tnh 8-(3-2) bng 7.V vy , khi biu thc c nhiu ton t - th u tin (s kt hp) c thchin t tri sang phi.

    Hai ton t + v c cng u tin. Nn cng c thc hin t tri sangphi. Xt biu thc:

    x + 3y +5

    (x + 3)y +5

    ((x + 3)y) +5

    ((x + 3)y +5)

    Cc ton t =, += v -= c cng u tin nhng cthc hin t phi sangtri trong cng biu thc. Xt biu thc:

    x = y += z -= 4

    x = y += (z -= 4)

    x = (y += (z -= 4))

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    29/114

    Chng 2 Bin v ton t

    29/114

    (x = y += (z -= 4))

    Dng du ngoc n thay i th t u tin ca cc ton t. Nu khng dngn th u tin v s kt hp s c dng xc nh th t cc ton t sthc thi. Khong trng khng c tc dng.

    Th t u tin c thc hin nh sau:

    Trong mt biu thc cc ton t c thc hin theo th t u tin tcao xung thp(tightest binding)

    Nu c nhiu hn 1 ton t u tin nh nhau trong biu thc th thc hint tri sangphi

    Hy t cc biu thc u tin nht trong du ngoc trn chng cthc hin trc nht.

    Tip tc vi biu thc con th haiv cc biu thc tip theo Tip n cc ton t c u tin cao nht cn li theo cng qui trnh

    trn.

    Rt d b sai nu qun i th t u tin. Hy xem biu thc sau:

    x = a+b/5.0-c**d+1*e

    l tng ng vi

    x = ((a+(b/5.0))-(c**d))+ (1*e)

    Tun theo qui trnh sau ng ngoccc biu thc

    Ton t u tin cao nht l **. Ngha l c**d c thc hin trc tin, tang n trong ngoc trn.

    Du / v du * l ton t u tin cao nht th hai, s c thc hin ktip, do vy t b/5.0 v 1*e vo ngoc trn.

    Du + v c u tin cao nht k tip. Do chng c cng u t in

    vi nhau nn thc hin t tri sang phi.

    Cui cng php gn c thc hin.

    2.4.3 p kiu

    p kiu hay chuyn i kiu hm ni n vic thay i kiu d liu ca mtbin sang kiu khc. Thc hin iu ny ta thu c mt s tinh nng u vit

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    30/114

    Learn Java by Example

    30/114 AptechVietnam

    ca thang bc cc d liu. Chng hn, cc gi tr gii hn ca mt tp cc snguyn integer c th cha trong mt khun dng c ng hn. C th chuyni kiu sang dng khc ph hp vi vic tnh ton hn v khng th tnh tonvi kiu d liu trc , chng hn nh l chia cc s vi chnh xc caohn. Trong ngn ng lp trnh hng i tng, chuyn i kiu cho php

    chng trnh xem i tng ca mt kiu nh l kiu tin bi ca chng lmn gin vic tng tc vi chng.

    C 2 loi chuyn kiu: mc nh v tng minh. Thut ng chuyn kiu mcnh c ngha lnng kiu. Hu ht cc dng chuyn kiu tng minh c hiul p kiu. Chuyn kiu tng minh cng c th thu c t cc thng trnhchuyn kiu c vit ring nh l np chng hm dng ca i tng.

    Chuyn kiu ngm nh

    Chuyn kiu ngm nh, cng cn gi l nng kiu (coercion), l t ng

    chuyn kiu bi trnh bin dch. Mt s ngn ngcho php, thm ch ihi b bin dch phi h tr chuyn kiu.

    Trong mt biu thc phc hp, chng trnh s chy ng nu d liuca kiu di c th chuyn ln kiu trn.

    on lnh 10 m t chuyn kiu mc nh.

    short a=2000;int b;b=a;

    y gi tr a c nng cp t short ln int v khng cn ton t pkiu no c. iu ny c hiu l chuyn kiu thng thng. Chuynkiu thng thng tc ng trn cc kiu d liu c bn, cho phpchuyn i cc dliu s (short ln int, int ln float, float ln double...) vmt s chuyn i con tr. Mt s chuyn i c th gy ra mt chn hxc, lc y trnh bin dch c th cnh bo. iu ny c th khng cn nchuyn kiu tng minh.

    Chuyn kiu tng minh

    Nhiu loi chuyn kiu, c bit l h thp kiu gy mt d liu, i hichuyn kiu tng minh.

    on lnh 11 m t chuyn kiu tng minh

    short a=2000;int b;b= (int)a; // c php p kiu

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    31/114

    Chng 2 Bin v ton t

    31/114

    b= int (a); // c php kiu hm

    C nhiu loi p kiu tng minh, l:

    C kim tra

    Trc khi chuyn kiu c thc hin, mt kim tra trong lc chychng trnh c thc hin xemkiu ch n c cha c gitr ngun hay khng. Nu khng, mt li b sinh ra.

    Khng kim tra

    Khng c kim tra no c thc hin. Nu kiu ch khng chac gi tr gc, kt qu khng c ghi nhn.

    Mu bit

    D liu khng c xem xt g tt, cc bt th c sao chp nguynbn.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    32/114

    Learn Java by Example

    32/114 AptechVietnam

    Tm tt bi hc

    Bin l mt tn c dng tham chiu n cc gi trch nh trong chng trnh.

    Hng l gi tr khng i c vit thng trong m lnhkhng i hi s tnh ton no c.

    Java c cc loi d liu c sn, gi l d liu nguynthy.

    nh dng d liu xut ra ngi ta dng lp Formatterhoc s dng cc phng thc format() v printf() calp PrintStream.

    Mt s cc k t c bit c biu din kt hp vi du\

    Java cung cp nhiu loi ton t, l

    Ton t s hc

    Ton t bit

    Ton t quan h

    Ton t logic

    Ton t iu kin

    Ton t gn

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    33/114

    AptechVietnam 33/114

    Chng 3: Lnh r nhnh v vng lp

    Mc ch

    Cui chng ny, hc vin c th nm c:

    Cc cu trc r nhnh if

    Cu trc switch-case

    Cu trc vng lp while, do while, forv vng lp lng nhau

    Cu lnh break, continue

    3.1 Cu lnh r nhnh

    Cu lnh r nhnh hay cu lnh iu khin c s dng iu khin lung

    thc thi trong ngn ng lp trnh. Java h tr hai loi lnh r nhnh l: cu

    trc if v cu trc switch.Cc cu lnh ny cho php chng trnh thc thi cc

    on m lnh khcnhau da trn kt qu ca biu thc iu kin hoc gi tr

    ca bin.

    3.1.1 Lnh if lng nhau

    Cu lnh if-elsekim tra kt qu ca biu thchocbin iukinrida trn

    kt qu tr v thc hin cc lnh tng ng. Cu lnh ifc th c s dng

    lng trong mt cu trc if khc, loi if ny c gi l nested-if. Nh vy, nested-

    if l cu trc ifc lng trong cu trc ifhocelse khc.

    Cc im quan trng cn lu khi s dng lnh if lng nhau :

    Cu lnh else lun lun c kt hp lnh if gn nht.

    N nm trong cng khi vi else v khng kt hp vi else no c.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    34/114

    Learn Java by Example

    34/114 AptechVietnam

    C php:

    if (iu_kin)

    {if (iu_kin){//cu lnh/khi lnh ny c thc hin nu iu kin ng}else{//cu lnh/khi lnh ny c thc hin nu iu kin sai}

    }else{

    //cu lnh/khi lnh ny c thc hin nu iu kin sai}

    on m di y minh ha cch s dng cu trc nested-if

    on m 1:

    Scanner input = new Scanner(System.in);System.out.println(Nhp mt s: );num = input.nextInt();

    //Kim tra xem num c chia ht cho 3 khng?//cu lnh if ngoiif(num % 3 == 0){//kim tra xem num c chia ht cho 5 khng?if(num % 5 == 0){//in ra thng bo num chia ht cho 3 v 5System.out.println(The number is divisible by both 3 and 5.);}else{

    //S chia ht cho 3 nhng khng chia ht cho 5System.out.println(The number is divisible by 3 but not by 5.);}

    }else{

    //S khng chia ht cho 3 v 5System.out.println(The number is not divisible by 3 and 5.);

    }

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    35/114

    Chng 3 R nhnh v vng lp

    35/114

    Gii thch on m lnh

    on m trn khi bo mt bin num v cha s nguyn nhp vo t ngidng. Chng trnh s dng cu trc if lng nhau, u tin chng trnh kim tras nguyn ngi dng nhp vo (bin num) c chia ht cho 3 v 5 hay ch chiaht cho 3 v in ra cc thng bo tng ng. y, cu lnh else cui cngc kt hp vi if (num % 3 ==0). Cu lnh else bn trong c kt hp vi if(num % 5 == 0) bi v n c kt hp vi if gn nht trong cng khi lnh.

    3.1.2 Lnh Switch-case lng nhau

    Cu trc switch-case c th c s dng thay th cho cu trc if-else-if khi cnhiu if-else lng nhau. S dng switch-case khin kh nng thc thi cachng trnh tt hn. Tng t nh if-else, switch-case c th s dng lngtrong mt switch-case khc.

    Do switch-case nh ngha cc khi lnh ring, nn khng c s xung t giacc hng gi tr case ca lnh switch-case trong v lnh switch-case ngoi. onm di y minh ha cch s dng cc lnh switch-case:

    on m 2:

    ......switch (day){

    case 0:switch(target)

    { case 1:System.out.println(Target is 1 to 7.);break;

    }break;

    case 1:System.out.println(Sunday);break;

    case 2:System.out.println(Monday);break;

    case 3:System.out.println(Tuesday);break;

    case 4:System.out.println(Wednesday);break;

    ......}

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    36/114

    Learn Java by Example

    36/114 AptechVietnam

    Trong on m trn, khi lnh case 1 ca switch-case trong khng xungt/nhm ln vi khi lnh case 1 ca switch-case ngoi. Bin day c sdng so snh vi danh sch cc khi case ca switch-case ngoi, nu gi trca bin day bng 0 th bin target mi c sosnh vi danh sch cc khicase ca switch-case bn trong.

    C ba im quan trng cn lu khi s dng cu trc switch-case;

    Cu trc switch khc vi cu trc if. switch ch c th kim tra bng, trong

    khi if c th kim tra bt k gi tr ca biu thc logic no.

    Khng cho php 2 gi tr case ging nhau trong cng mt switch-case.

    Nu switch-case lng nhau, gi tr ca cc hng case ca switch-case

    trong v ngoi c th ging nhau.

    Cu trc lnh switch-case hiu qu hn s dng nhiu cu lnh if-elselng nhau.

    3.2 Vng lp

    Vng lp c s dng rt ph bin trong lp trnh, n c s dng thc

    hin cc cu lnh lp li nhiu ln. Cc loi vng lp c h tr trong Java

    gm:

    - Vng lp while

    - Vng lp do while

    - Vng lp for

    Vng lp thc hin mt lnh (hoc khi lnh) chng no tha mn mt iu kin

    hoc tha mn s ln lp xc nh.

    3.2.1 Vng lp while

    Vng lpwhile dng thc hin mt lnh hoc khi lnh chng no iu kin

    cn true (ng). Ti mt v tr no trong vng lp lm cho biu thc iu kin

    thnh false (sai), nu khng vng lp s thc hin v tn.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    37/114

    Chng 3 R nhnh v vng lp

    37/114

    C php:

    ...

    while(iu_kin)

    {

    Cc cu lnh;

    ...

    }

    ...

    Thn ca vng lp l rng nu n khng cha cu lnh no c, v mt c php,n vn ng trong Java. on m di y minh ha cch s dng thn vng

    lp rng:

    on m 3:

    ......

    int num1 = 1;

    int num2 = 30;

    while (++num1 < --num2);

    System.out.println(The midpoint is: + num1);

    ......

    Trong on m trn, gi tr ca bin num1 c tng 1 v gi tr ca bin num2

    c gim 1, sau em so snh. Vng lp c thc hin chng no gi tr

    ca num1 ln hoc bng num2. Do vy, bin num1 c gi tr gia num1 v

    num2, kt qu in ra:

    The midpoint is: 16

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    38/114

    Learn Java by Example

    38/114 AptechVietnam

    Biu thc iu kin ca vng lp c th phc tp, bin iu khin c th c

    thay i gi tr trong thn vng lp. Tuy nhin biu thc iu kin phi false (sai

    hoc khng tha)nu khng vng lp s thc hin v tn. on m di y

    minh ha vng lp v tn:

    on m 4:

    ......

    int count = 0;

    while (count < 100)

    {

    System.out.println(This goes on forever, HELP!!!);count = count + 10; //Tng count ln 10 n v

    System.out.println(Count = + count);

    count = count - 10; //gim count 10 n v

    System.out.println(Count = + count);

    }

    ......

    Trong on m trn, gi tr ca countlun bng 0 v nh hn 100. V vy, biu

    thc iu kin lun lun true (ng), vng lp khng bao gi kt thc. Mt lnh

    breakc th c dng ngt vng lptrong chng trnh trn. Nu c dng

    ny cui vnglp, vng lp ch thc hin 1 ln v kt thc, kt qu hin th:

    This goes on forever, HELP!!!

    Count = 10

    Count = 0

    Tuy nhin, y ch l minh ha cch s dng, trong thc t chng ta khng dng

    nh vy.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    39/114

    Chng 3 R nhnh v vng lp

    39/114

    im quan trng cn lu khi s dng vng lp while l, cc bin iu khin

    (bin c s dng trong biu thc iu kin) phi c khai bo trc khi s

    dng. Xem v d di y l khng hp l

    while (int val = 10) { } //biu thc iu khin khng hp

    l

    3.2.2 Vng lp do-while

    Vng lp do-whilethc hin cc cu lnh chng no iu kin cn true(ng).

    Khc vi vng lp while, vng lp do-whilethc hin cc cu lnh t nht mt

    ln sau biu thc iu kin mi c kim tra. Nu iu kin ng, vng lptip tc thc hin, nu iu kin sai, vng lp kt thc. on m di y minh

    ha cch s dng vng lp do-while

    on m 5:

    ......

    int number = 5;int guest;

    Scanner input = new Scanner(System.in);

    System.out.println(Guess a number between 1 to 10);

    do

    {

    System.out.println(Enter your guess: );

    guess = input.nextInt();

    if (guess > number)

    {

    System.out.println(Value too high);

    }

    if (guess < number)

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    40/114

    Learn Java by Example

    40/114 AptechVietnam

    {

    System.out.println(Value too low);

    }

    }while (guess != number);

    System.out.println(The answer is %d., number);

    ......

    Trong on m trn, 2 bin number v guess c khai bo. Bin number c

    gn gi tr 5, bin guess c nhp vo t ngi dng. Nu gi tr ngi dng

    nhp vo bng gi tr ca bin number th dng lnh println() in ra dng The

    answer is 5.cn nu khng th vng lp tip tc thc hin.

    3.2.3 Vng lp for

    Vng lp forc s dng khi ngi dng bit trc s bc lp. Khai bo ca

    vng lp forgm 3 phn:

    Khai bo v khi to gi tr ca cc bin

    Biu thc logic

    Biu thc iu khin lp

    Ba phn khai bo ny phn cch nhau bng du chm phy(;). Khi vng lp bt

    u, phn khai bo ca vng lp c thc hin. Thng thng, y l biu

    thc khi gn gi tr ban u v ng vai tr l bin m iu khin vng lp.

    Biu thc khi to ch thc hin duy nht mt ln. Tip n, biu thc logic c

    thc hin kim tra bin iu khin vi gi tr ca s ln lp. Nu biu thc

    logic c gi tr ng th vng lp tip tc thc hin, ngc li vng lp kt thc.

    Sau cng, biu thc iu khin lp c thc hin, thng thng biu thc lp

    dng tng hoc gim gi tr ca bin iu khin.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    41/114

    Chng 3 R nhnh v vng lp

    41/114

    Trong phn khai bo v biu thc lp, chng ta c th s dng nhiu bin phn

    cch nhau bi du phy v th t thc hin t tri qua phi. Th t thc hin

    rt quan trng nu nh gi tr ca biu thc th 2 ph thuc vo kt qu thc

    hin. on m di y minh ha cch s dng vng lp for vi phn cch

    nhiu bin khai bo:

    on m 6:

    ......

    int i,j;

    int max = 10;

    System.out.println(The sum of two variables for a table of

    10 is: );

    for(i=0,j=max;i

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    42/114

    Learn Java by Example

    42/114 AptechVietnam

    1 + 9 = 10

    2 + 8 = 10

    3 + 7 = 10

    4 + 6 = 10

    5 + 5 = 10

    6 + 4 = 10

    7 + 3 = 10

    8 + 2 = 10

    9 + 1 = 10

    10 + 0 = 10

    Nh tho lun trong phn trc, c 3 phn trong khai bo vng lp for, tuy nhinbt k mt hoc tt c cc phn trong khai bo forc th trng. on m

    di y minh ha cch s dng vng lp forkhng s dng phn khai bo:

    on m 7:

    ......

    //Khi to gi tr ca bin num

    int num = 1;

    for(; num != 40;num++)

    {

    System.out.println(Enter a number: );

    num = input.nextInt();

    }

    ......

    Trong on m trn, bin num c ngi dng nhp vo cho n khi c gi tr

    bng 40. Vng lp khng c phn khi to. Thay vo , num c khi to

    ngoi phn khai bo vng lp. Bin num c tng ln 1. Vng lp s kt thc

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    43/114

    Chng 3 R nhnh v vng lp

    43/114

    khi num bng 40. Nu c 3 phn trng, vng lp s lp v tn. on m di

    y minh ha cch s dng :

    on m 8:

    ......

    for( ; ; )

    {

    System.out.println(This will go on and on);

    }

    ......

    Trong on m trn, dng ch This will go on and onc in cho n khi

    vng lp kt thc. Cu lnh breakc th dng kt thc vng lp ny. on

    m trn dn n vng lp v hn, vng lp v hn khin chng trnh chy

    khng gii hn trong khong thi gian di v s dng ht ti nguyn ca h

    thng, iu ny dn n treo h thng. Trong thc t, chng ta nn trnh s

    dng loi vng lp kiu ny trong chng trnh ca mnh.

    3.2.4 Vng lp lng nhau

    Trong Java, chng ta c th s dng vng lp lng nhau, l vng lp c

    ttrong mt vng lp khc. on m di y minh ha cch s dng vng lp

    lng nhau:

    on m 9:

    ......

    int num = 0;

    //Lp t 0 cho n 5 (lp 6 ln)

    System.out.println(The factorials of the first five

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    44/114

    Learn Java by Example

    44/114 AptechVietnam

    numbers are: );

    do

    {

    int i = 1;

    int factorial = 1;

    System.out.println(Factorial of + num + :);

    if(num==0)

    {

    System.out.println(factorial);

    }else

    {

    while(num>=i){

    factorial = factorial * i;

    i++;

    }

    System.out.println(factorial);

    }

    num++;

    }while(num < 6);

    ......

    Trong on m trn, chng trnh in ra giai tha ca cc s t 0 5. Cu lnh

    if-elsec dng tnh giai tha ca bin num. Lnh c t trong vng lp

    do-while. Kt qu hin th nh sau:

    The factorials of the first five numbers are:

    Factorial of 0 : 1

    Factorial of 1 : 1

    Factorial of 2 : 2

    Factorial of 3 : 6

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    45/114

    Chng 3 R nhnh v vng lp

    45/114

    Factorial of 4 : 24

    Factorial of 5 : 120

    3.3 Cu lnh nhy

    i khi s bc lp ca vng lp khng c bit trc. iu kin kt thcvng lp c xc nh sau, v ngay trong thn vng lp. Trong mt s tnhhung khc, mt s cu lnh trong thn vng lp c b qua da trn iu kinno . p ng nhng yu cu , Java cung cp hai lnh nhy l breakvcontinuedng thay i lung iu khin ca chng trnh da trn cc iu kin. Do vy, cc cu lnh nhy ny c s dng chuyn iu khin nphn khc ca chng trnh.

    3.3.1 Lnh break

    Lnh breakthot khi vng lp trong cng v thc hin cu lnh tip theo saukhi lnh ca vng lp ngoi. Cu lnh break l cu lnh c lp, do vy cnphi kt thc lnh breakbng du chm phy. Lnh breakkhng ch c sdng trong vng lp form cn c s dng trong c whilev do-while. Cccu lnh sau breakkhng c thc hin. V d di y minh ha cch sdng breaktrong vng lp while.

    on m 10:

    ......

    int i = 1;

    int sum = 0;

    while (i < 100)

    {

    sum = sum + i;

    System.out.println(Sum: + sum);

    if(i==10)

    break;

    i++;

    }

    ......

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    46/114

    Learn Java by Example

    46/114 AptechVietnam

    Trong on m trn, vng lp whilec thit k chy t 1 n 99 v tnhtng ca cc s t 1 n 99. Nhng cu lnh breakc s dng kt thcvng lp khi i bng 10. Do vy kt qu c hin th nh sau:

    Sum: 1

    Sum: 3Sum: 6Sum: 10Sum: 15Sum: 21Sum: 28Sum: 36Sum: 45Sum: 55

    3.3.2 Lnh continue

    Cu lnh continuechuyn iu khin sang bc lp k tip v b qua cc cu

    lnh sau continue. C ngha l khi gp cu lnh continue, cc lnh sau continue

    trong thn vng lp s khng c thc hin m iu khin s c chuyn

    sang bc lp k tip. Cu lnh continue thng c s dng vi mt biu

    thc iu kin trong thn vng lp nh lnh break. Lnh continue s dng

    c trong 3 loi vng lp: while, do-whilev vng lp for. Vi vng lp while,

    do-while, lnh continuechuyn iu khin n biu thc iu khin ca vng

    lp. Trong khi , vi vng lp for, iu khin nhy n phn biu thc lp (phn

    th 3 trong khai bo vng lp) sau thc hin tip biu thc iu khin. on

    m di y minh ha cch s dng continuetrong vng lp do-while:

    on m 11:

    ......

    char letter = A;

    do

    {

    if(letter ==J || letter == L)

    {

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    47/114

    Chng 3 R nhnh v vng lp

    47/114

    letter++;

    continue;

    }

    System.out.println(Letter: + letter);

    letter++;

    }while(letter !=N)

    ...

    Trong on m trn, cc k t t A n M c in ramn hnh bng vng lp

    do-while. Lnh continueb qua 2 k t in ra l J v L.

    3.4 Nhn

    Cc cu lnh trong Java c th nh nhn. Nhn thng c hay dng vi

    vng lp for, while kt hp vi break hoc continue. Nhn c nhn din bi

    tn nh danh theo sau l du 2 chm v t trc lnh nh nhn.

    Lnh nh nhn c s dng trong trng hp cc vng lp lng nhau. N

    dng ch nh vng lp lng trong thc hin bc lp k tip hay ngt vng

    lp. on m di y minh ha cch s dng nhn

    on m 12:

    int i;

    outer:

    for(i=0;i

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    48/114

    Learn Java by Example

    48/114 AptechVietnam

    System.out.println("This is the outer loop");

    }

    System.out.println("Good bye");

    ......

    Trong on m trn, vng lp thc hin 5 ln. Hai ln lp u tin chng trnh

    in ra dng ch This is the outer loop. Bc lp th 3 gi tr ca i = 2, do vy

    s in ra dng ch Hello. Tip n, lnh breakc thc hin v chuyn iu

    khin n nhn outer: . Vng lp kt thc v dng lnh cui c in ra. Kt qu

    hin th nh sau:

    This is the outer loop

    This is the outer loop

    Hello

    Good bye

    on m di y minh ha cch s dng lnh continue

    on m 13:

    ......

    outer:

    for(i=0;i

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    49/114

    Chng 3 R nhnh v vng lp

    49/114

    System.out.println("Good bye");

    ......

    Trong on m trn, dng ch Hello c in ra 5 ln. Sau khi cu lnh

    continuec thc hin, lung iu khin ca chng trnh c chuyn sang

    bc lp k tip ca vng lp c nh nhn. Cui cng, iu kin ca vng lp

    ngoi (vng lp c nh nhn) tr v false, vng lp kt thc v chng trnh in

    ra dng ch Good bye. Kt qu thc hin nh sau:

    Hello

    Hello

    Hello

    Hello

    Hello

    Good bye

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    50/114

    Learn Java by Example

    50/114 AptechVietnam

    Tm tt bi hc

    Lung iu khin chng trnh c iu khin bi cc cu trc lnh r

    nhnh Cc loi vng lp h tr trong Java gm: while, do -while, for. Vng lp s

    dng thc hin cc cu lnh mt cch lp li

    Lnh break v continue l cc cu lnhnhy trong Java

    Lnh break kt thc vng lp lng trong v thc hin lnh k tip trong

    khi lnh ca vng lp ngoi.

    Lnh continue b qua cc cu lnh nm sau n v thc hin bc lp tip

    theo

    Lnh nhn thng c s dng vi cc vng lp nh for, while.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    51/114

    AptechVietnam 51/114

    Chng 4: Gii thiu v lp

    Mc tiu bi hc

    Kt thc bi hc ny, hc vin c th nm c nhng vn sau:

    To mng i tng

    Khi nim qui trong Java

    M t v s dng kiu enum

    Thu gom rc (Garbage collection) trong Java v c ch hot ng

    4.1 Mng cc tham chiu i tng

    Trong Java, c th khai bo mng chacc phn c bt k kiu d liu no, k

    c kiu tham chiuni tng. Khi mt mng c to ra, tham chiu nmt lp, ta ni l mt mng cc i tng.

    Cc i tng c khi to ch khi hm dng ca i tng c gi khi thc

    thi chng trnh. Sau khi i tng c khi to, n c th truy nhpthng qua

    bin i tng.

    Nu kiu ca mng khai bo l mt lp th cc tham chiu n cc i tng

    ca kiu lp c khai bo c lu trong mng. Do vy, cc thnh phn ca

    mng cc i tng ch l cc tham chiu n cc i tng ch khng phi l

    cc th hin thc s ca cc i tng.

    4.2 To mng i tng

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    52/114

    Learn Java by Example

    52/114 AptechVietnam

    To mng i tng thc hin theo 3 bc nh sau:

    1. Khai bo bin c th tham chiu n mng i tng c kiu thch hp.

    2. To i tngmng

    3. Gn cc phn t mng vi cc th hin ca kiu tng ng.

    V d di y khai bo mng c tn emp_Array cha 20 i tng ca lp

    Employee;

    on m 1:

    Employee [] emp_Array = new Employee[20];

    Khi to mng bng vng lp for

    on m 2:

    for (int m=0;m

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    53/114

    Chng 4 Gii Thiu v Lp

    53/114

    emp_Array[0] = new Employee(Derek,121);

    emp_Array[1] = new Employee(Clark,55);

    Hoc khi tobng cch khc nh sau:

    on m 4:

    Employee [2] emp_Array = {new Employee(Derek,121),new

    Employee(Clark,55)};

    4.3 qui trong Java

    Trong lp trnh, qui l cch thc gi li chnh n (gi li chnh hm ). Trong

    thc t, rt nhiu bi ton c biu din v gii quyt bng thut ton qui. V

    d trong Java, tnh giai tha dng qui c biu din nh sau:

    on m 5:

    public static int calculateFactorial(int n){

    if(n==0)

    return 1;

    else

    return n * calculateFactorial(n1);

    //li gi qui

    }

    qui l phng thc gi li chnh n. v d trn, phng thc

    calculateFactorial() gi li chnh n. Mt iu lu l lm sao m bo rng

    n lc no th li gi qui kt thc cn khng chng trnh s chy v tn

    v s dng ht ti nguyn ca my tnh dn n treo my. Vi minh ha trn

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    54/114

    Learn Java by Example

    54/114 AptechVietnam

    chng ta thy qui s kt thc khi n =0. Tnh hungkt thc qui cn c

    gi l tnh hung nn (base case)ca qui.

    Tt c cc phng thc dng thut gii quic nhng c tnh nh sau:

    S ln m phng thc gi li chnh n cn c gi l su ca qui

    Mi khi phng thc gi chnh n, my tnh s lu cc bin trong ngn

    xp (stack). Stack l vng nh hn ch, do vy vi thut gii qui c

    su ln s dn n treo my. Trng hp nh vy c gi l Stack

    Overflow (trn stack).

    Phng thc qui c mt iu kin kt thc. Trong v d trn, phngthc calculateFactorial() s kt thc khi n = 0. Nu iu kin ny khng c

    th phng thc s gi li chnh n v hn. Trng hp ny c gi l

    qui khng im dng.

    Tt c cc phng thc qui u c 2 giai on. Giai on th nht

    c gi l Winding, xy ra khi phng thc gi li chnh n v y gi tr

    vo stack. Giai on th 2 c gi l Unwinding, xy ra khi phng thc

    ly gi tr t stack ra.

    V d di y dng thut gii qui tnh ly tha hai:

    V d 1:

    package test;import Java.util.Scanner;

    public class PowerOfTwo

    {

    public static void main(String [] args)

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    55/114

    Chng 4 Gii Thiu v Lp

    55/114

    {

    Scanner input = new Scanner(System.in);

    int power, result;

    System.out.println(Calculate the power of two);

    System.out.println(Enter an integer power: );

    Power = input.nextInt();

    Result = powerOfTwo(power);

    System.out.println(Two to power + power + is +

    result);

    return;

    }

    public static int powerOfTwo(int exponent){

    if(exponent ==0)

    return 1;

    else

    return (2 * powerOfTwo(exponent - 1));

    }

    }

    4.4 Kiu d liu lit k (enum)

    Gi s bn mun biu din cc ma trong nm trong chng trnh, bn c ths dng cc con s 0, 1, 2, 3 tng ng vi ma xun, ma h, ma thu v mang. Dng theo cch ny h thng hot ng c nhng khng trc quan vkhng r rng. y khng phi l gii php tt xy dng nhng tnh hungnh vy. Chng hn ngi ta c th nhp sai cc con s khc ch khng phicc con s 0, 1, 2, 3 nh mong mun v khng c cch g khng ch vic

    nhp sai. Java h tr kiu d liu enum gii quyt tt nhng vn trn. Vikiu d liu enum, gi tr ca n l cc tn tng trng.

    4.5 To kiu lit k

    Kiu enum c th c th t hoc khng c th t. Kiu enum khng th t lkiu khng c th t logic. V d: kiu d liu boolean l mt dng ca kiu

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    56/114

    Learn Java by Example

    56/114 AptechVietnam

    khng th t v khng c lp lun no xc nh true trc hay sau false. Vikiu enum c th t, cc gi tr c th sp xp theo mt trt t logic.

    4.5.1 Mc ch ca enum

    Kiu enum c gii thiu nhm gip lit k hiu qu dy cc gi tr, v d nhbiu din cc ngy trong tun. u im ca kiu enum:

    Khc phc c vic nh x gia s v chui mt cch t nht. Kiu

    enum c s dng bng cc chui thay cho cc con s.

    Dng s nguyn dng thay cho kiu lit k khng an ton. Chng

    hn, bin DaysOfWeek l bin nguyn lit k ngy trong tun, chng ta

    c th gn gi tr bng 9, nh vy l khng hp l. R rng, dng s

    nguyn thay cho kiu lit k l khng an ton. gii quyt cc hhc

    im ny ngi ta dng kiu lit k. Vi kiu lit k, chng ta ch c th

    gn cc gi tr c nh nghatrc.

    Trong Java, kiu d liu enum c nh ngha bng t kha enum. V cc gi

    tr ca n l cc hng s, nn cc trng ca kiu enum khai bo bng ch hoa.

    V d di y khai bo bin Monthsthuc kiu enum:

    on m 6:

    public enum Months

    {

    JANUARY,

    FEBRUARY,MARCH,

    APRIL,

    MAY,

    JUNE,

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    57/114

    Chng 4 Gii Thiu v Lp

    57/114

    JULY,

    AUGUST,

    SEPTEMBER,

    OCTOBER,

    NOVEMBER,

    DECEMBER

    }

    Kiu enum s dng c php khai bo nh khai bo lp, ch khc s dng tkha enum thay cho class v c gi l lp c bit. Phn thn ca kiuenumc th khai bo cc phng thc cng nh cc trng. Trnh bin dch sb sung thm cc phng thc c bit khi enum c to ra. Chng ta c thnh ngha kiu enum trong mt tp tinring hoc trong mt tp tinnh nghacc lp. Nu nh ngha kiu enum public th phi nh ngha trong mt tp tinring bit c tn trng vi tn enum.

    V d di y minh ha vic nh ngha kiu enum biu din lc mu:

    on m 7:

    enum ColorScheme

    {

    Red, Blue, Green, Cyan, Magenta, Yellow, Black

    }

    Sau khi nh ngha kiu enum, chng ta c th khai bo bin thuc kiu enumnh sau:

    ColorScheme CMYK;

    Sau gn gi tr cho bin:

    CMYK = ColorScheme.Magenta;

    In ra gi tr ca binColorSchema bng lnhnh sau:

    System.out.println(The color used is: + CMYK);

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    58/114

    Learn Java by Example

    58/114 AptechVietnam

    Kt qu s l:

    The color used is: Magenta

    4.6 Garbage Collection (GC)Thu gom rc

    Khi mt i tng (Object) c to ra, n c cp pht vng nh trong b

    nh. Vng nh ny c gi l Heap. Cc i tng trong Java c to ra

    bng ton t new v vng nh ca i tng c cp pht trong Heap lc

    thc thi. Khi i tng trn Heap khng cn c tham chiu bi chng trnh,

    chng tr nn thch hp cho thnh phn thu gom rc (Garbage Collection), v

    Java Heap c gi l Garbage Collection Heap. Thut ng GarbageCollection(Thu gom rc) hm cc i tng trong Java khi khng cn cn

    thit bi chng trnh, gi l rc v c th loib. iu c ngha lvng nh

    cp pht cho cc i tng s c ti s dng cho i tng mitip sau.

    Java Virtual Machine s xc nh nhng i tng no m khng cn dng

    na v s thu hi vng nh b chim dng.

    Bn cnh vic gii phng vng nh ca cc i tng khngc tham chiu,

    Garbage Collector (b thu gom rc) cn gip ngn s phn mnh vng nh

    heap. S phn mnh heap xy ra trong qu trnh chng trnh thc thi. Trong

    qu trnh thc thi, cc itng c to ra v hy b khi khng dng n na,

    do dn n tnh trng c cc block(khi)rng nm gia cc block ang dng.

    Khi yu cu vng nh cp pht cho cc i tng micn phi ni rng kch

    thc ca heap mc d vn cn vng nh trong heap cp pht. Vn

    ny thng hay xy ra do khng cn vng nh lin tc trong heap cp

    pht.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    59/114

    Chng 4 Gii Thiu v Lp

    59/114

    Trong c t JVM, ch vng heap ca JVM phi c thu gom rc. Nhng khng

    nh ngha cch thc b thu gom rc (Garbage Collector) hot ng, m m i nh

    pht trin JVMphi quyt nh cch ci t.

    4.6.1 u im ca GC(Garbage Collection)

    GC lm gim bt gnh nng cho lp trnh vin trong vic gii phng vng nh.

    i vi lp trnh vin, vic quyt nh khi no gii phng vng nh rt kh khn

    v y ri ro, do vy cng vic ny c giao cho JVM, iu ny c nhiu u

    im:

    u im th nht l tng hiu sut cho lp trnh vin v cho php h tptrung hn vo vic lp trnh.

    Th hai, GC m botnh ton vn chng trnh. GC l phn quan trng

    trong chin lc bo mt ca Java. Lp trnh vin Java khng th tnh c

    lm hng JVM do vic gii phng sai vng nh.

    Nhc im tim n ca GC l lm tng ti nguyn s dng v lm gim hiu

    nng ca chng trnh. JVM lun theo di nhng i tng no ang c s

    dng bi chng trnh v gii phng nhng i tng khng cn dng na.

    Hot ng ny gy tiu tn nhiu thi gian ca CPU.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    60/114

    Learn Java by Example

    60/114 AptechVietnam

    Tm tt bi hc

    Mng i tng l mt mng cha tham chiu n cc i tng

    qui l hnh thc gi(gi hm) li chnh n

    Kiu enum l mt danh sch hng s v tp hu hn cc gi tr c th gn

    cho bin.

    GC (Garbage Collection) l gii php qun l vng nh t ng

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    61/114

    AptechVietnam 61/114

    Chng 5: ArraysMng

    Mc tiu ca bi

    Kt thc bi hc ny, hc vin c th:

    M t mng trong Java

    M t lp Stringv nhng phng thc ca n

    Gii ngha lp StringBuilderv nhng phng thc ca n

    5.1 Gii thiu v mng (Arrays)

    Mng lu tr cc phn t cng kiu d liu vo nhng vng nh lin tip nhau.D liu trong mng c th l kiu d liu nguyn thu(primitive data type) hoci tng.Ging nh bin, gi tr trong mng c th c gn gi tr ngay lcto mng. Nu khng c gi tr no c gn cho mng, th Java s gn gi trmc nh cho tt c cc phn t trong mng, ty thuc vo kiu d liu. V d,nhng phn t ca mng c kiu d liu l int, mc nh, c khi gn l 0.Mng c th l mng mt chiu hay mng nhiu chiu. Mt phn t xc nhtrong mng c truy nhpbng tn hoc ch s. Phn t u tin trong mngc ch s l 0, phn t th 2 c ch s l 1, v c tip tc nh vy. Mng lphng tin thun tin nhm thng tin c lin quan vi nhau.

    Mng c th c to theo ba cch nh bng 5.1Phng php M t C php V dCh khai bo Khai bo mt

    mngdatatype[]identifier

    char[] ch;khai bo mt mng kiuk t tn l ch

    Khai bo vto mng

    Khai bo v cppht vng nhcho cc phn ttrong mng dngt kho new

    datatype[]identifier = newdatatype[size]

    char[] ch = newchar[10];khai bo v khi tomt mng ch lu 10k t.

    Khai bo, tov khigngi tr cho ccphn t

    Khai bo mng,cp pht vngnh v khi gngi tr cho ccphn t

    datatype[]identifier ={value1,value2,valueN}

    char[] ch ={A,B,C,D};khai bo mt mngchbn phn t vi cc gitr c khi gn

    Bng 5.1 : To mng

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    62/114

    Learn Java by Example

    62/114 AptechVietnam

    5.1.1 Mng k t

    Mngk t c th c to nh trong on m sau.

    on m 1:

    char[] ch ={A,B,C,D};System.out.println(ch[3]);

    on m 1to mng mt chiu c tn ch, vi ccgi tr khi to A, B, C v D.Dng th hai in ra gi tr ca phn t c ch s 3, l D.

    Trong Java, mng nhiu chiu l mt mng c cc thnh phn mt mngkhc,ta cng ni l mng ca cc mng. Mng nhiu chiu cc k t c th cto ra nh onm 2.

    onm 2 :

    Char [][] ch = {{A,B,C,D}, {E,F,G,H}};System.out.println(ch[1][1]);

    onm 2 khi to mt mng nhiu chiu vihai hng v bn ct. Dng th 2in ra gi tr ca phn t ti v tr hng 1, ct 1. Kt qu in ra l F.

    onm 3 m tmng chui 2 chiu.

    onm 3:String [][] names = {{John, Andrews, David,Scott},{- Manager, CEO}};System.out.println(names[0][0] + names[0][1]);System.out.println(names[0][2] + names[1][1]);

    on m 3 s c hin th kt qu nh:

    JohnManager

    DavidCEOThuc tnh length c th dng xc nh kch thcca mnghay s cc phnt c lu trong mng.

    System.out.println(ch.length);

    Cu lnh trn s in ra kch thc ca mng

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    63/114

    Chng 5 Mng

    63/114

    5.1.2 Sp xp mng

    Lun cn thit sp xp cc phn t trong mng theo gi tr c th t t caon thp (th t gim dn - descending order) hoc ngc li (th t tng dn

    ascending order).Qu trnh sp xp mng cn phi hon i gi tr gia cc phn t mng. Cnhiu cch khc nhau sp xp mng. Cc cch sp xp ging nhau chchng u so sch mi phn t trong mng vi phn t khc vhon i gi trnu gi tr t sai v tr.

    Qu trnh sp xp hon i thc hin vi cc phn t bt u tp gi tr.Kiusp xp ny so snh gi tr ca phn t u tin vi mi phn t tip theo vthc hin cc hon i cn thit. Tip nphn t th hai s c so snh vimi phn t tip theo cn li trong mngv thc hin cc hon i cn thit.

    Tng t vi cc phn t cn li trong mng n khi khng cn hon i noxy ra bc cui cng.

    Hnh 5.1 m t khi nim ca sp xphon i.

    65 10 57 98 105 304

    Hnh 5.1 : Sp xp hon i

    Bng 5.2 ch rcc phn t c sp xp theo th t tng dn sau mi bc.Mi bc bt u t khi ly mt phn t v so snh vi cc phn t cn li tiptheo trong mng, nu cn thit, thc hin cc hon i gi tr ca cc phn t.

    Cc gi tr g c trongmng

    65 10 57 98 105 304

    Sau bc th nht 304 10 57 65 98 105

    Sau bc th hai 304 105 10 57 65 98Sau bc th ba 304 105 98 10 57 65Sau bc th t 304 105 98 65 10 57Sau bc th nm 304 105 98 65 57 10

    Bng 5.2: Gi tr ca cc thnh phn sau mi bc trong sp xp hon i.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    64/114

    Learn Java by Example

    64/114 AptechVietnam

    u tin 2 phn t (65 v 10) c so snh v gi tr ln hn s c di sangbn tri. Trong trng hp ny, 10 nh hn 65; nn khng hon i. Tip theo ,so snh gi tr u tin vigi tr th 3 (65 v 57) v cngtng t, khng honi. Sau ,phn t u tin v phn t th 4 (65 v 98) c so snh v honi v tr, a 98 ln u v 65 v v tr th 4 . C nh vy so snh phn t u

    tin vi tt c cc phn t cn li tip theo trong mng, gi tr ln nht 304 sc t vo phn t u tin.Kt thc bc lp th 2 gi tr lnnht th 2(304) s c t vo v tr th hai. Qu trnh tip tc v gi tr nh nht ct vo cui danh sch khi kt thc.

    on m 4 minh ha cch sp xp cc phn t theo th t gim dn trong Java.

    on m 4 :

    int [] array = {65,10,57,98,105,304};int i,j;

    int temp ;// ly chiu di ca mngint arrayLength = array.length;// phn t c so snh trong vng lp nyfor (i=0; i< (arrayLength -1);i++){

    for (array[i]

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    65/114

    Chng 5 Mng

    65/114

    phn t u tin. V cch tm kim ny thc hin theo dng tuyn tnh nn cnc gi l tm kim tuyn tnh (linear search). Tuy nhin, nu thc hin tm trnmng khng c sp xp th chm.

    K thut hiu qu nht c th c p dng tm cc phn t trong mt mng

    c sp xp l k thut tm kim nh phn. K thut ny nhanh hn so vi ccphng thc tm kim khc. K thut ny kim tra phn t nm gia ca mng.Nu gi tr cn tm bng phn t gia, th tm kim kt thc. Nu gi tr cn tmnh hn phn t gia, th thc hin tm nh phn trn na phn u ca mng. Nu ln hn, th thc hin tm nh phn trn na phn sau ca mng. Trc khithc hin tm kim nh phn th mng phi c sp xp .

    Hnh 5.2 minh hak thut tm kim nh phn trn mt mng c sp xp. Gi tr cn tm l 11.

    Hnh 5.2 K thut tm kim nh phnon m 5 m t m Java cho thc hin tm kim nh phn

    on m 5 :

    int [] array = {0,11,13,14,15,17,18,19,21,24,26,28,29};int low =0;int high = array.length -1;int searchValue = 11;int flag =0;while(low

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    66/114

    Learn Java by Example

    66/114 AptechVietnam

    }else if (searchValue > array[mid]){low = mid +1;

    }}if(flag ==0){

    System.out.println(Element not found in the array);}

    Kt qu c hin th nh di :

    Element found at index 1

    5.2 Lp String

    Khi nim chui trong Java rt khc so vi C v C++. Trong Java, mt hngchui l mt i tng ca lp String. V th, cc thao tc vi chui c thc

    hin thng qua cc phng thc c cung cp bi lp String. Khi i tngca lp String c to ra, cc k t to nn chui khng th thay i. Nhng cth thay i chui nh th no? Mi ln cn thay i mt chui, mt i tngString mi c to ra cng vi cc thay i so vi i tng c, chui gc vngi nguyn nh c. Cc phng thc ca lp String trong J2SE 5.0 c giithiu trong cc phn sau:

    5.2.1 codePointAt()

    Phng thc codePointAt() tr v m s ca k t ti ch mc xc nh. Khinim then cht trong Unicode l code point. Unicode code points l ch nhng sch v tr ca cc k t trong bng m . V d trong Unicode, code point 65 thhin cho k tin A

    C php:

    int codePointAt(int index);

    V d 1:

    String str = Aptech Global Learning Solutions;System.out.print(str.codePointAt(0));

    Kt qu:65

    5.2.2 codePointBefore()

    Phng thc codePointBefore() tr v m s unicode ca k t (Unicode codepoint) trc k t c ch mc xc nh.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    67/114

    Chng 5 Mng

    67/114

    C php:

    int codePointBefore(int index);

    V d 2 :

    String str = Aptech Global Learning Solutions;System.out.println(str.codePointBefore(1));

    Kt qu:65

    5.2.3 codePointCount()

    Phng thc codePointCount() tr v s lng k t Unicode gia hai ch mctrong chui.

    C php:

    int codePointCount(int start, int end)

    V d 3:

    String str = Aptech Global Learning Solutions;System.out.println(str.codePointCount(0,5));

    Kt qu:5

    5.2.4 startsWith()

    Phng thc startsWith()tr v gi tr logic kim tra chui c bt u bngmt tin t(prefix) xc nh hay khng.

    C php:

    boolean startsWith(String prefix);

    V d 4 :

    String str = Aptech Global Learning Solutions;System.out.println(str.startsWith(Apt));

    Kt qu:true

    5.2.5 endsWith()

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    68/114

    Learn Java by Example

    68/114 AptechVietnam

    Phng thc endsWith()tr v gi tr logic kim tra chui c kt thc bnghu t (suffix) xc nh hay khng.

    C php:

    boolean endsWith(String suffix);

    V d 5:

    String str = Aptech Global Learning Solutions;System.out.println(str.endsWith(tions));

    Kt qu:true

    5.2.6 toUpperCase()

    Phng thc toUpperCase()chuyn cc k t trong chui thnh ch vit hoa

    C php:

    String toUpperCase();

    V d 6:

    String str = Aptech Global Learning Solutions;System.out.println(str.toUpperCase());

    Kt qu hin th:

    APTECH GLOBAL LEARNING SOLUTIONS

    5.2.7 toLowerCase()

    Phng thc toLowerCase()chuyn cc k t trong chui thnh ch vitthng

    C php:

    String toLowerCase();

    V d 6:

    String str = Aptech Global Learning Solutions;System.out.println(str.toLowerCase());

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    69/114

    Chng 5 Mng

    69/114

    Kt qu hin th:

    aptech global learning solutions

    5.2.8 valueOf()

    Phng thc valueOf() tr v chui tng ng vii s xc nh. i s cth l mt trong cc gi tr sau: boolean, char, float, double, int, long, mngchar, hoc object.

    C php:

    Static String valueOf(char[] data);Static String valueOf(char[] data, int offset, int count);

    V d 8:

    Char [] array = {A, p,t,e,c,h,,G,l,o,b,a,l};System.out.println(String.valueOf(array));System.out.println(String.valueOf(array,7,6);

    Kt qu hin th:

    Aptech GlobalGlobal

    5.2.9 toCharArray()

    Phng thc toCharArray()chuyn ni dung ca chui thnh mng cc k t.

    C php:

    char [] toCharArray();

    V d:

    char [] array;String str =Aptech Global Learning Solutions;Array = str.toCharArray();System.out.println(String.valueOf(array));

    Kt qu hin th :

    Aptech Global Learning Solutions

    5.2.10 equalsIgnoreCase()

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    70/114

    Learn Java by Example

    70/114 AptechVietnam

    Phng thc equalsIgnoreCase()so snh hai chui, b quakiu vit v tr vgi tr boolean. Nu cc chui ging nhau th phng thc tr v gi tr true,ngc li l false.

    C php:

    boolean equalsIgnoreCase(String anotherString);

    V d:

    String str = Aptech Global Learning Solutions;String anotherString = APTECH GLOBAL LEARNING SOLUTIONS;System.out.println(str.equalsIgnoreCase(anotherString));

    Kt qu:

    true

    5.3 Lp StringBuider

    Chui trong Java, mt khi c to ra, khng th no thay i trc tip. ctnh ny c gi l tnh bt bin cachui. khc phc, Java cung cp lpStringBuilder, th hin cho mt dy kh bin cc k t. StringBuilder l lptng ng vi chui v th hin cho cc dy k t c kh nng bin ic. Chng c th c nhiu k t c chn vo gia hoc thm vo phn cuica chui. Nhng phng thc ca lp StringBuilderc m t di y:

    5.3.1 charAt()

    Phng thc charAt()tr v k t ti ch mcxc nh

    C php:

    char charAt(int index);

    V d 11:

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);System.out.println(sb.charAt(7));

    Kt qu hin th :

    G

    5.3.2 deleteCharAt()

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    71/114

    Chng 5 Mng

    71/114

    Phng thc deleteCharAt()xo k t tiv tr xc nh.

    C php:

    StringBuilder deleteCharAt(int index);

    V d 12:

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);System.out.println(sb.deleteCharAt(5));

    Kt qu hin th :Aptec Global Learning Solutions

    5.3.3 getChars()

    Phng thc getChars() sao chps lng xc nh cc k t ca chui vomt mng.

    C php:

    void getChars(int begin, int end, char[] destArray, intdestArraybegin);

    V d 13:

    char [] array = new char[6];StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);sb.getChars(0,6,array,0);System.out.println(array);

    on m trn sao chp nhng k t ca i tng StringBuilder, sb, bt u tk t c ch mc 0 n ch mc 5. Nhng k t c sao chp c lu vomng k t c tn arraybt u t ch mc 0.

    Kt qu hin th :

    Aptech

    5.3.4 length()

    Phng thc length()tr v tngs k t t i tng StringBuilder.

    C php:

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    72/114

    Learn Java by Example

    72/114 AptechVietnam

    int length();

    V d:

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);System.out.println(sb.length());

    Hin th :32

    5.3.5 replace()

    Phng thc replace()thay th nhng k ttrong i tng StringBuilderbngnhng k t mi.

    C php:

    StringBuilder replace(int begin, int end, String str);

    V d 15 :

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);System.out.println(sb.replace(23,32,Services));

    Kt qu hin th :Aptech Global Learning Services

    5.3.6 setCharAt()

    Phng thc setCharAt()thay th mt k t ti ch mc xc nh ti tngStringBuilder bng mt k t mi.

    C php:

    void setCharAt(int index, char ch);

    V d:

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);sb.setCharAt(7,g);// thay th ch hoa G thnh ch thnggSystem.out.println(sb);

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    73/114

    Chng 5 Mng

    73/114

    Kt qu hin th :Aptech global Learning Solutions

    5.3.7 setLength()

    Phng thc setLength() thit lp di ca StringBuilder.C php:

    void setLength(int newLength);

    Nu di mi ln hn di hin ti, tt c cc k t mi c thit lp v kt null(\u0000). Nu chiu di nhhn chiu di hinti, th k t u tin camng cho n k t cui cng ca chiu di mi c gi li, phn cn li saucng c ct b.

    V d 17:StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);sb.setLength(35);// chiu di c l length=32, chiu dimi length = 35;System.out.println(sb);sb.setLength(13); // chiu di mi l length = 13System.out.println(sb);

    Kt qu hin th :Aptech Global Learning SolutionsAptech Global

    5.3.8 appendCodePoint()

    Phng thc appendCodePoint()b sungthm mt Unicode code pointvoi tng StringBuilder

    C php:

    StringBuilder appendCodePoint(int codePoint);

    V d:

    StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);System.out.println(sb.appendCodePoint(123)); // chn k t{

    Kt qu hin th :

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    74/114

    Learn Java by Example

    74/114 AptechVietnam

    Aptech Global Learning Solutions{

    5.3.9 capacity()

    Phng thc capacity()tr v dung lng hin c ca i tngStringBuilder.

    Dung lng l s lng lu tr ginh cho cc k t c chn mi.C php:

    int capacity();

    V d 19:

    StringBuilder sb = new StringBuilder(); //dung lng mcnhSystem.out.println(sb.capacity()); // tr v 16

    sb = new StringBuilder(Aptech Global Learning Solutions);System.out.println(sb.length()); // tr v 32//dung lng mc nh + chiu di ca i tng sbSystem.out.println(sb.capacity());// tr v 48

    Kt qu hin th163248

    5.3.10 substring()

    Phng thc subString()to mt chui con t i tng StringBuilder.

    C php:

    String substring(int startIndex);String substring(int startIndex, int endIndex);

    Phng thc th haitr v chui con t i tng StringBuilder. Chui con btu ti startIndex v kt thc ti endIndex - 1

    V d 20:

    String str;StringBuilder sb = new StringBuilder(Aptech GlobalLearning Solutions);str = sb.substring(7);//tr v mt chui con bt u vtr ch mc th 7System.out.println(str);

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    75/114

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    76/114

    Learn Java by Example

    76/114 AptechVietnam

    Tm Tt Bi Hc

    Mng cdng lu tr nhiu phn t cng kiu d liu trong mtdy v tr vng nh lin tip nhau

    Gi tr lu tr trong cc phn t mng c th c tm v sp xp

    Hng String trong Java l mt trng hp ca lp String.

    Lp String cung cp nhiu phng thc a dng tm kim v chia tchtrong chui

    String khng th bin i c, c ngha rng chng l hng v gi tr cachng khng th thay i c

    Lp StringBuilder c dng nh mt String c th thay i ni dung

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    77/114

    AptechVietnam 77/114

    Chng 6: Gi v thnh phn chnh truy nhp

    Mc Tiu Bi Hc

    Kt thcbi hc ny, hc vin c th:

    nh ngha packages v lit k nhiu loi package

    Cc bc ci t v s dng packages ca ngi dng nh ngha

    Nhn bit cc cch truy nhppublic, private v protected Trng thi dng default hoc truy nhppackage

    nh ngha v lit k cc trng v nh ngha phng thc

    6.1 Gi (Package)

    Package trong Java l mt nhm cc lp (class) v cc giao tip (interface) clin quan vi nhau c t chc thnh mt n v. Mt package, ln lt, chacc package con hoc khng. Nu mt lp c to ra khng ch ra package

    no, n thuc v package khng c tn. iu ny thng gp trong cc ngdng nh.

    Tn lp i km tn cc package cha lp y gi l tn y ca lp(Fullyqualified name). V d, tools.drawing.Shapes l tn y ca lp Shape.

    Package c phn thnh package c sn hay nh ngha trc v package dongi dng nh ngha. Nhng package c sn l phn Java API. Package dongi dng nh nghac to binh pht trin ng dng.

    6.2 To v s dng package

    Cc bc to mt package trong Java c c th nh sau:

    Bc u tin l chn tn cho package. Tn package c vit di dng chin thng, khng bt u bng k t ch s v khng c du ni(-). Tuy nhin,chng c thcha cc k t gch di. Ngay khi tn package c chn, mtth mc c tn ng vi tn package c to ra. Tt c cc tp tin ngun cha

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    78/114

    Learn Java by Example

    78/114 AptechVietnam

    chng trnh Java trong package c t trong th mc . Lnh packagec thm vo u trong mi tp tin ngun cha trong th mc.

    C php:

    package ;

    V d, gi s Machines.Javav Gadgets.Javal hai tp tin c to ra trongpackagec tn factory.

    Nh bc 1, th mc c to ra vi tn factory.

    Dng package factory;c thm vo mi tp tin Machines.JavavGadgets.Java. Trong hai on m 1 v on m 2 minh ha v d.

    on m 1:

    Line0 : package factory;Line1 : public class Machines {Line0 hin th m t package. Class Machines by gi nmtrong package factory

    onm 2:

    Line0 : package factory;Line1 : public class Gadgets {

    Gi s hai on m c hon thnh v hai tp tin c lu.Bc k tip l bin dch v thc thi ng dng. V d, thc thi lp Machinesthc hin cu lnh sau ti du nhc lnh vi th mc hin ti l th mc chacha tp tin ngun:

    Java factory.Machines

    s dng mt lp ti bt k v tr no, lnh importc dng.V d v cchdng lnh import nhp lp Machinest package factory:

    import factory.Machines; //import mt class n

    import tt c cc lp trong package, dng lnh di y :

    import factory.*; // import tt c cc class

    on m 3 minh ha cch dng lp Machinest packge factorytrong lpResourcest trong mt package khc.

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    79/114

    Chng7 Thakv giao tip

    79/114

    on m 3:

    package company;import factory.Machines;

    public class Resources {public void testMethod() {Machines objMachines = new Machines();

    }}

    ch ra lp Resources thuc package company, lnh packagec thmvo dng u tin ca onm. dng lpMachines trong lp Resources,cn phi importlp Machinesvo. Lc bin dch lp Resources, phi m boclasspathcha ng dn ca th mc cha cc package, y l factory.

    Tt c cc lnh importtrong lpphi c t sau cu lnh packagev trckhai bo lp. Cc lnh importv packaget trong mt tp tin s nh hngn tt c cc lp trong tp tinv khng th p dng cho ring tng lp.

    Trong lnh package, tn ca cc package v tn ca package conc phncch bi du chm. Mi thnh phn ca tn package phi l tn mt th mctrn my cc b. V d, nu lnh packagenh di y:

    package demo.management.list.src;

    th, phi to cu trc th mc nh hnh di :

    demo\management\list\src.

    Thng thng, tn y cn phi s dng truy nhpnhng thnh phn tnh(static) ca lp trong lp khc. Tuy nhin, iu lm cho m tr nn cngknh, c bit khi c nhiu li gi thnh phn tnh trong cng mt cu lnh. Javacung cp cch gii quyt bng cc lnh import static. Lnh importstatic chophp mt chng trnh import ring l hay ton b nhng thnhphntnh. V d,nu lp Machines thuc vo package mnc.factory c mt thnh phn tnhboltSizecn c dng trong lp Gadgets, th lnh import static c th cs dng. Lc ny, boltSizec th c dng bt c ni u bn trong lpGadgetsm khng cn dng tn y ca n. on m 4 minh ha trnghp ny.

    on m 4:

    import static mnc.factory.Machines.boltSize;class Gadgets {

    public void assign() {

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    80/114

    Learn Java by Example

    80/114 AptechVietnam

    boltSize = 20;}

    }

    importstatic cng c th c dng trong th vin :

    import static Java.lang.Math.PI;double area = PI*radius*radius;

    D import static l c tnh rt hu ch, nhng khng nn s dng thngxuyn. Dng qu nhiu import static lm cho chng trnh tr nn kh ccng knh kh c v cng gy ra cc vn bo dng.

    6.3 Ch nh truy nhp(Accesss Specifiers)

    Ch nh truy nhphay thnh phn xc nh phm vi truy nhp trong Java iu

    khin cch truy nhpv kh nng nhn thy ca cc lp v cc thnh phn calp.Cc nguyn l hng i tng c ci t trong chng trnh thng quas dng cc ch nh truy nhp. C bn mc truy nhpsau :

    public

    Ch nh truy nhppublicxc nh mc truy nhpph bin. Ch nh truynhppublic, khi p dng cho lp Java, cho php lp c th truy nhpmi ni, thm ch bn ngoi package. Khi p dng cho bt k thnh phnno ca lp, n cho php thnh phn c th truy nhp t mi ni trongchng trnh. Cc lp mc trn ch c th l publichoc truy nhpngm

    nh v khng th l privatehoc protected. private

    Ch nh truy nhpprivatexc nh mc truy nhphn ch. Khi mt lphoc thnh phn ca n c khai bo l private, ch c th truy nhpbn trong lp v khng th truy nhp bt k u khc. Cc lp khckhng th truy nhpvo thnh phn private ca lp ny.

    protected

    Ch nh truy nhp protected xc nh mc truy nhp c bo v. Khithnh phn lp c khai bo l protected, th ch c th truy nhpbntrong lp ca n, trong cng package v cc lp k tha.

    Truy nhpngm nh hoc package.

    Khng c t kha xc nh cho mc truy nhp ngm nh hoc package.Nu lp hay interface khng xc nh cc ch nh truy nhp trn, th s

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    81/114

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    82/114

    Learn Java by Example

    82/114 AptechVietnam

    private Yes No No Noprotected Yes Yes Yes NoKhng khaibo

    Yes Yes No No

    Bng 6.2 Ch nh truy nhpv phm vi truy nhpca chng

    on m 6 s minh ha cch s dng mt s ch nh truy nhp.

    on m 6:

    class Building {protected int floors = 3;private String name;public void getName() {

    System.out.println(Building name is +name);

    }public void setName() {Scanner imput = new Scanner(System.in);input.useDelimiter(\n);name = input.next();

    }}

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

    Building objBuilding = new Building();System.out.println(Number of floors are +

    objBuilding.floors);objBuilding.setName();objBuilding.getName();

    }}

    on m 6, khi bin dch v thc thi, s hin th s tngl 3 v nhc ngi dngnhp tn ca ta nh (building) vo trng name v hin th tn c nhp.Nh trong on m, tn c truy nhpv in ra dng phng thc publicbi vtrng namel privatev khng th truy nhpbn ngoi lp. Quan st ta thylp BuildingTest l khng c k tha t lp Buildingnhng cch n ginl to i tng v kch hot cc phng thc ca n.

    Mt thnh phn (lp, interface hoc thnhvin) c th c mt trong cc ch nhtruy nhpc m t trong bng 6.2. V d, public v protected khng th cthit lp ng thi cho mt thnh phn ca lp. Khi thit k lp, tt nht l to racc bin th hin privatev c cc phng thc truy nhp (accessor methods)

  • 7/21/2019 Lap Trinh Huong Doi Tuong Trong Java

    83/114

    Chng7 Thakv giao tip

    83/114

    public truy xut v thit lp gi tr cho cc bin. V cng m bo khng cphng thc privatehoc bin privateno khng c s dng trong lp.

    Cc bin cc b khai bo trong phng thc khng khai bo ch nh truy nhp (acce