giaotrinhjava1234

Upload: hieu

Post on 07-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 giaotrinhJava1234

    1/352

    GIO TRNH BI GING

    MN HC : LP TRNH JAVA

  • 8/3/2019 giaotrinhJava1234

    2/352

    M U

    GII THIU SLC LPTRNH HNG I TNG

  • 8/3/2019 giaotrinhJava1234

    3/352

    Mc Tiu Bi Hc

    Th no l lp trnh hngitng

    Tm hiuvtrutngdliu

    nhnghalp v itng Constructor v Destructor

    Tm hiuv tnh lutr, bao bcdliu,tnh ktha v a hnh

    Cc u im caphng php lp trnhhngitng

  • 8/3/2019 giaotrinhJava1234

    4/352

    Lp Trnh Hng i Tng

    Ly i tng lm nn tng c s caphng php lp trnh

    Phng php thitk v thchinbng cchphnmm

  • 8/3/2019 giaotrinhJava1234

    5/352

    Tru Tng D Liu

    L tin trnh xc nh v tphp cc tnh chtv cc hnh ng ca mt thc th c lin

    quan nngdng Li ch :

    Tp trung vo vn

    Xc nhnhng tnh cht v hnh ngthityu

    Loitrnhng chi tit khng cnthit

  • 8/3/2019 giaotrinhJava1234

    6/352

    Tru Tng D Liu

    Cc tnh chtca mt i

    tng Ngi

    Tn

    a ch

    Tui

    Chiu cao

    Mu tc

    Cc tnh cht camt i tng

    Khch hng

    Tn

    a ch

  • 8/3/2019 giaotrinhJava1234

    7/352

    Tru Tng D Liu (tip theo)

    Cc thuc tnh Cc hnh ng

    Tn ca khch hng Nhp tn ca khch hng

    a ch ca khch hng Nhp a ch ca khch hng

    i xe hi mua Nhp i xe hi mua c

    Ngi bn xe hi Nhp tn ngi bn xe hi

    Lp ho n

  • 8/3/2019 giaotrinhJava1234

    8/352

    Lp

    Lp l mt nhm cc i tng c chungnhng tnh cht v hnh ng

    Lp Khch hng

    Tn khch hnga ch khch hng

    i xe hi mua

    Tn ngi bn xe hi

    Nhp tnNhp a ch

    Nhp i ca xe hi mua c

    Nhp tn ca ngi bn xe hi

    Lp ha n

  • 8/3/2019 giaotrinhJava1234

    9/352

    i Tng

    i tng l mt th hin ca lp

    Ton

    Anh

    Tun

  • 8/3/2019 giaotrinhJava1234

    10/352

    i Tng ( tip theo )

    Thuc tnh Tnh cht m tmtitng

    Hnh ng Dchv m itng c thpng

    Phngthc ct cch pngbng hnh ng khi c yu cu

    Thng ip Yu cumt hnh ng

    Binc

    S kch thch titng ny gi sang itng khc

  • 8/3/2019 giaotrinhJava1234

    11/352

    Lp V i Tng

    Lp l mt thc th, cn i tng l mt thcththct

    Lp l mt m hnh nimnh r cc tnh chtv cc hnh ng c quy nhbi mt itng, cn itng l mt m hnh thcs

    Lp l khun mutitngcto ra

    Tt c cc i tng trong cng mt lp c cctnh cht v cc hnh ngnh nhau

  • 8/3/2019 giaotrinhJava1234

    12/352

    Constructor

    Tin trnh to ra mtitngcgi lConstructor

    Mt Constructor: Cp pht vng nh

    Khi gn nhng thuc tnh (nu c)

    Cho php truy cp nhng thuc tnh vphng thc

  • 8/3/2019 giaotrinhJava1234

    13/352

    Destructor

    Tin trnh hy mt i tng gi lDestructor

    Mt Destructor:

    Gii phngbnh

    Cm truy cpthuc tnh vphngthc

  • 8/3/2019 giaotrinhJava1234

    14/352

    Tnh Lu Tr

    Tnh lu tr l khnngca i tng cthlulidliuca n sau khi bhy

  • 8/3/2019 giaotrinhJava1234

    15/352

    Tnh Bao Bc D Liu

    Tin trnh che dunhng chi tithinthcmtitngcgi l tnh baobc

    uim: Tt c nhng thuc tnh v phng thc cn

    thitucto

    Mt lp c th c nhiu tnh cht v phngthcnhngchmts trong chinthcho ngi dng

  • 8/3/2019 giaotrinhJava1234

    16/352

    Tnh K Tha

    LP SINH VIN LP NHNVIN

    LP KHCHHNG

    Tn Tn Tn

    a ch a ch a chim mn 1 Lng Sn phm mua

    c

    im mn 2 Chc v Nhp tn

    Nhp tn Nhp tn Nhp a ch

    Nhp a ch Nhp a ch Nhp m sn phmNhp im Nhp lng Lp ha n

    Tnh tng s im Tnh lng

  • 8/3/2019 giaotrinhJava1234

    17/352

    Tnh K Tha (tip theo)

    Lp Ngi

    Tn

    a ch

    Nhp tnNhp a ch

  • 8/3/2019 giaotrinhJava1234

    18/352

    Tnh K Tha ( tip theo )

    LP NGI

    Tn

    a ch

    Nhp tnNhp a ch

    Thm cc thuc tnh v hnh ngcn thit vo lp khch hng

    Nhp m sn phm mua

    Lp ha n

    Lp Khch Hng+ =

  • 8/3/2019 giaotrinhJava1234

    19/352

    Tnh K Tha ( tip theo )

    Tnh Thak L cch cho php mtlp chia snhngthuc tnh

    v nhng hnh ng nh ngha trong mt hocnhiulp khc

    Lp con L lpthaktlp khc

    Lp cha L lptmtlp khc thak cc ngxca n

    athak Khi mtlp con thakt hai hocnhiulp

  • 8/3/2019 giaotrinhJava1234

    20/352

    Tnh a Hnh

    Text Line Picture

    How are you?

    Hnh ngDisplay

    Tnh a hnh l thuc tnh cho php mthnh ng ng x khc nhau trn cc lpkhc nhau

  • 8/3/2019 giaotrinhJava1234

    21/352

    u im ca phng phphng i tng

    Chia s trongphm vi mtngdng y mnh s dng li ca cc i tng

    khi hinthcnhngngdngmi V lu di, chi phgimngk Gimli v rcri trongbo tr

    iuchnh nhanh hn

  • 8/3/2019 giaotrinhJava1234

    22/352

    TNG KT

    Tip cn hng i tng a ra mt gii phpton din cho mt bi ton cth

    Tru tngd liu l mt tin trnh xc nh vtphp cc tnh cht v cc hnh ng c quan hvimtthcthcth

    Lp m tmtthcth, cn itng l mtthc

    ththct Constructor v Destructor

    Tnh lu tr, bao bcd liu, tnh k tha v a

    hnh

  • 8/3/2019 giaotrinhJava1234

    23/352

    Chng 1

    Gii thiu ngn ng

    lp trnh Java

  • 8/3/2019 giaotrinhJava1234

    24/352

    Gii thiu

    S pht trin ca Java

    Hng ti ngi dng

    Ging vi C / C++

  • 8/3/2019 giaotrinhJava1234

    25/352

    Cc c trng ca Java

    ngin Hngitng

    clpphncng Mnh Bo mt Phn tn

    a lung ng

  • 8/3/2019 giaotrinhJava1234

    26/352

    Cc chng trnh dch

    truyn thng

  • 8/3/2019 giaotrinhJava1234

    27/352

    Chng trnh dch Java

  • 8/3/2019 giaotrinhJava1234

    28/352

    28

    Java Translation and ExecutionJava source

    code

    Machinecode

    Javabytecode

    Javainterpreter

    Bytecodecompiler

    Javacompiler

  • 8/3/2019 giaotrinhJava1234

    29/352

    Cc loi chng trnh Java Applets

    ngdngclp (console Application)

    ngdng giao din (GUI Application)

    Servlet

    ng dng c s d liu

  • 8/3/2019 giaotrinhJava1234

    30/352

    My o Java

    L mtphnmmda trn cs my tnho

    L tp hp cc lnh logic xc nh hotngca my tnh

    c xem nh l mthiu hnh thu nh N thitlplptrutng cho:

    Phncng bn di Hiu hnh M bin dch

  • 8/3/2019 giaotrinhJava1234

    31/352

    Qu trnh dch chng trnh Java

    Trnh bin dch chuyn m ngun thnh tpcc lnh khng phthuc vo phncng

    Trnh thng dch trn mi my chuyn tplnh ny thnh chng trnh thc thi

    My oto ra mt mi trngthc thi cclnhbng cch:

    Np cc file .class

    Qun l b nh

    Dnrc

  • 8/3/2019 giaotrinhJava1234

    32/352

    Trnh dch Java

    Java Development Kit Java 1.0

    Java 1.1

    Java 2

    ..............

  • 8/3/2019 giaotrinhJava1234

    33/352

    B cng c JDK

    Trnh bin dch, 'javac'

    javac [options] sourcecodename.java

    Trnh thng dch, 'java' java [options] classname

    Trnh dch ngc, 'javap'

    javap [options] classname

    Cng c sinh ti liu, 'javadoc'

    javadoc [options] sourcecodename.java

  • 8/3/2019 giaotrinhJava1234

    34/352

    Chng trnh tm li - Debug, 'jdb

    jdb [options] sourcecodename.javaOR

    jdb -host -password [options]

    sourcecodename.java

    Chng trnh xem Applet ,

    'appletviewer appletviewer [options]sourcecodename.java / url

  • 8/3/2019 giaotrinhJava1234

    35/352

    Cc gi chun ca Java java.langGeneral support java.applet - Creating applets for the web java.awt - Graphics and graphical user interfaces

    java.io java.utilUtilities java.net - Network communication java.awt.event

    java.rmi java.security java.sql

  • 8/3/2019 giaotrinhJava1234

    36/352

    Chng 2

    Cc kin thc c bn Cu trc chng trnh ca

    ngn ng Java

  • 8/3/2019 giaotrinhJava1234

    37/352

    Cc thnh phn c bn

    1. TP K T CA JAVA

    2. T KHO

    3. TN, LI CH THCH4. CU LNH V DU CHM CU

    5. CU TRC CA CHNG TRNH JAVA

    6. MT S CHNG TRNH JAVA MU

  • 8/3/2019 giaotrinhJava1234

    38/352

    Tp k t ca java

    Mi ngn ng u c xy dng trn b k t. B k tca Java nh sau:+ Cc ch ci in hoa: A, B, C, Y, Z+ Cc ch ci in thng: a, b, c, y, z+ Cc ch s: 0, 1, 2, ,9

    + Cc du cu: , ; : / ? . [ ] { }! ~ @ # $ % ^ & * ( )- + = < >+ Cc du ngn cch khng nhn thy: du cch, du

    tab, du xung hng enter+ Du gch ni di _

    Ch :+ Java phn bit ch in hoa v ch in thng.+ C th dng cc k t khc nh , , , , , hay

    c ting Vit trong chng trnh Java

  • 8/3/2019 giaotrinhJava1234

    39/352

    B t kha ca Java

  • 8/3/2019 giaotrinhJava1234

    40/352

    Tn v Li ch thch

    * Tn :- Tn dng xc nh cc i lng khc nhau trongmtchng trnh.- Mi tn c s dng trong chng trnh uphic khai bo.- Tn hpl l dy ktlin nhau, c thgm cc chci (a..,z, A..,Z), cc chs (0..9), ktgchdi (_).- Tnphibtubngch ci hocdugchdi.

    - Tn khng c trng vit kho.Vd : Nghiem_x, hoan_doi, y_1, y2,.. l tn hpl.

  • 8/3/2019 giaotrinhJava1234

    41/352

    Tn v Li ch thch* Lich thch :

    - Khng c tc dngto ra m cachng trnh, gip ddng trong vic tm kim,kim tra, sachng trnh

    - Li ch thch c th c t bt k u trongchng trnh

    - Cch ghi li ch thch:

    Cch 1 : Ch thch cho nhiu dng

    /* li ch thch

    --------------*/

    Cch 2 : Ch thch cho mt dng

    //li ch thch

  • 8/3/2019 giaotrinhJava1234

    42/352

    Cu lnh v Du chm cu

    Mt cu lnh thnggmphn m td liu v phnlnh theo quy nhca Java. C hai loi:

    + Cu lnhngin: l nhng lnh khng cha cc

    lnh khc : lnh gn, lnhgiphngthc, ...+ Cu lnh cu trc: gm khi lnh, lnh r nhnh,lnhlp

    Khilnh l gmnhiulnhct trong du { } Cc cu lnh cch nhaubidu; Duchmphy; dng ngn cch cc lnh,ngha l

    cuimilnh,mi khai bo u c chmphy

  • 8/3/2019 giaotrinhJava1234

    43/352

    Cu lnh v Du chm cu

    cu lnh

    cu lnh n gin

    cu lnh cu trc

    php gn

    li gi phng thc

    lnh nhy

    khi lnh

    lnh la chn

    lnh lp

    if (...) else ...switch ...

    for (...) ...

    do ... while ( )while (...) ...

  • 8/3/2019 giaotrinhJava1234

    44/352

    Cu trc mt chng trnh Java

    Xc lp thng tin mi trng Khai bo lp i tng (Class)

    Cc thnh phn (Tokens): nh danh T kha/ t d phng

    K t phn cch Hng (Literals) Ton t

  • 8/3/2019 giaotrinhJava1234

    45/352

    45

    Java Program Structurepublic class MyProgram

    {

    }

    public static void main (String[] args)

    {

    }

    // comments about the class

    // comments about the method

    method headermethod body

  • 8/3/2019 giaotrinhJava1234

    46/352

    Chng trnh Java mu

    // This is a simple program called Ex1.java// import java.lang.*;class Ex1

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

    System.out.println(My first program in Java);

    }}

  • 8/3/2019 giaotrinhJava1234

    47/352

    Bin dch chng trnh java

    ..\jdk\bin>javac Ex1.java

    ..\jdk\bin>java Ex1

    Ktqu:My first program in Java

  • 8/3/2019 giaotrinhJava1234

    48/352

    Truyn i s dng lnh

    class Ex2{

    public static void main(String s[])

    {System.out.println(s[0]);System.out.println(s[1]);System.out.println(s[2]);

    }}

  • 8/3/2019 giaotrinhJava1234

    49/352

    Truyn i s trong dng lnh

    (Tip theo)

  • 8/3/2019 giaotrinhJava1234

    50/352

    Chng trnh tnh cn bc hai ca m

    import java.io.*;public class canbachai{

    public static void Tinhcb2(int m){

    double n=0.0;n=Math.sqrt(m);System.out.println("Can bac hai cua " +m+ "la" +n);

    }public static void main(String args[]){

    // tao doi tuong de goicanbachai t=new canbachai();t.Tinhcb2(9);t.Tinhcb2(16);

    }}

  • 8/3/2019 giaotrinhJava1234

    51/352

    Chng trnh tnh n10

    import java.io.*;class Tinh_n_mu10{

    public static long Tinh(int n){

    long tg=1;for(int i=1;i

  • 8/3/2019 giaotrinhJava1234

    52/352

    Chng trnh kim tra mt s c phi bi ca 5 khng

    import java.io.*;public class Boi5

    {public static void Kiemtraboi5(int m){

    if(m%5!=0)System.out.println(m+"Khong la boi so cua 5");

    else System.out.println(m+"La boi cua 5");}public static void main(String[] args){

    Boi5 dt1=new Boi5();// tao doi tuong dt1

    dt1.Kiemtraboi5(9);Boi5 dt2=new Boi5();// tao doi tuong dt2dt2.Kiemtraboi5(10);

    }}

  • 8/3/2019 giaotrinhJava1234

    53/352

    Chng trnh nhn cc k t g vo t bnphm v ch nhn cc k t s.

    class Convert{public static void main (String [] args) throws java.io.IOException {System.out.print ("Please enter a number: ");int num = 0;int ch;

    while ((ch = System.in.read ()) != '\n')if (ch >= '0' && ch

  • 8/3/2019 giaotrinhJava1234

    54/352

    Kiu d liu

    Kiu d liu c s (Primitive Data Types)

    Kiu d liu tham chiu (Reference data types)

    Kiu d liu c s

  • 8/3/2019 giaotrinhJava1234

    55/352

    Kiu d liu c s 4 kiu integers:

    byte, short, int, long 2 kiu s thc:

    float, double

    1 kiu characters: char

    1 kiu boolean :

    boolean

  • 8/3/2019 giaotrinhJava1234

    56/352

    Kiu d liu c s

    Type

    byte

    short

    intlong

    float

    double

    Storage

    8 bits

    16 bits

    32 bits64 bits

    32 bits

    64 bits

    Min Value

    -128

    -32,768

    -2,147,483,648< -9 x 1018

    +/- 3.4 x 1038 with 7 significant digits

    +/- 1.7 x 10308 with 15 significant

    digits

    Max Value

    127

    32,767

    2,147,483,647> 9 x 1018

    Ch t

  • 8/3/2019 giaotrinhJava1234

    57/352

    57

    Characters Character literals are delimited by single

    quotes:'a' 'X' '7' '$' ',' '\n'

    The ASCII characters :

    uppercase letterslowercase lettersPunctuationdigits

    special symbolscontrol characters

    A, B, C, a, b, c, period, semi-colon, 0, 1, 2,

    &, |, \, carriage return, tab, ...

    B l

  • 8/3/2019 giaotrinhJava1234

    58/352

    58

    Boolean A boolean value represents a true or

    false condition

    A boolean can also be used to represent any

    two states, such as a light bulb being on oroff

    The reserved words true and falseare the only valid values for a boolean type

    boolean done = false;

  • 8/3/2019 giaotrinhJava1234

    59/352

    Kiu d liu tham chiu

    Mng (Array)

    Lp (Class) Interface

  • 8/3/2019 giaotrinhJava1234

    60/352

    Cc ton t

    Cc loi ton t: Ton tshc (Arithmetic operators)

    Ton tdng Bit (Bitwise operators) Ton t so snh (Relational operators)

    Ton t logic (Logical operators)

    Ton tiukin (Conditional operator) Ton t gn (Assignment operator)

  • 8/3/2019 giaotrinhJava1234

    61/352

    Ton t s hc

    Arithmetic Operators+ Addition (Php cng)

    - Subtraction (Php tr)

    * Multiplication (Php nhn)

    / Division (Php chia)

    % Modulus (Ly s d)

    ++ Increment (Tng dn)

    -- Decrement (Gim dn)

  • 8/3/2019 giaotrinhJava1234

    62/352

    += Php cng v gn

    -= Php tr v gn

    *= Php nhn v gn

    /= Php chia v gn

    %= Php lysd v gn

  • 8/3/2019 giaotrinhJava1234

    63/352

    Ton t so snh

    (Relational Operators)== So snh bng

    != So snh khc

    < Nh hn> Ln hn

    = Ln hn hoc bng

  • 8/3/2019 giaotrinhJava1234

    64/352

    Ton t Bit

    (Bitwise Operators)~ Ph nh (NOT)

    & V (AND)

    | Hoc (OR)

    ^ Exclusive OR (XOR)

    >> Dch sang phi (Shift right)

  • 8/3/2019 giaotrinhJava1234

    65/352

    Ton t Logic

    (Logical Operators )&& Logical AND

    || Logical OR

    ! Logical unary NOT

  • 8/3/2019 giaotrinhJava1234

    66/352

    Ton t iu kin

    (Conditional Operator) C php

    Biuthc 1 ? Biuthc 2 : Biuthc 3;

    Biuthc 1

    iukinkiu Boolean trv gi tr True hoc False

    Biuthc 2

    Trv gi trnuktqucamnh 1 l True Biuthc 3

    Trv gi trnuktqucamnh 1 l False

  • 8/3/2019 giaotrinhJava1234

    67/352

    Ton t gn

    (Assignment Operator)= Assignment (Php gn)

    Gi tr c th c gn cho nhiu bin s

    V da = b = c = d = 90;

    Th t u tin ca cc ton t

  • 8/3/2019 giaotrinhJava1234

    68/352

    Th t ca cc ton t c th c thay i bngcch sdng cc dungocn trong mnh

    Th t Ton t

    1. trong ngoc tnh trc

    2. Cc ton t n nh +,-,++,--

    3. Cc ton t s hc v cc ton t dchnh *,/,+,-,

    4. Cc ton t quan h nh >,=,

  • 8/3/2019 giaotrinhJava1234

    69/352

    Operator Precedence What is the order of evaluation in the

    following expressions?a + b + c + d + e

    1 432

    a - b / c + d * e

    3 241

    a / (b + c) - d % e

    2 341

    a / (b * (c + (d - e)))

    4 123

    Assignment Revisited

  • 8/3/2019 giaotrinhJava1234

    70/352

    Assignment Revisited

    The assignment operator has a lowerprecedence than the arithmetic operators

    First the expression on the right hand

    side of the = operator is evaluated

    Then the result is stored in the

    variable on the left hand side

    answer = sum / 4 + MAX * lowest;

    14 3 2

    Assignment Revisited

  • 8/3/2019 giaotrinhJava1234

    71/352

    Assignment Revisited The right and left hand sides of an

    assignment statement can contain the samevariableFirst, one is added to theoriginal value ofcount

    Then the result is stored back into count

    (overwriting the original value)

    count = count + 1;

  • 8/3/2019 giaotrinhJava1234

    72/352

    p kiu (Type Casting)

    Kiu d liu ny c chuyn i sang mt kiu dliu khcC php: (kiu_mi)biu_thc;

    V d : int m=8, n=2;float x1,x2;x1 = m/n; // x1 nhn gi tr l s nguyn;x2 = m/float(n); // x2 nhn gi tr l sthc;

    V d :float c = 34.29675;

    int b = (int)c + 10;

  • 8/3/2019 giaotrinhJava1234

    73/352

    Cc k t nh dng xut d liu(Escape Sequences)

    Escape

    SequenceM t

    \n Xung dng mi\r Chuyn con tr n u dng hin hnh

    \t Chuyn con tr n v tr dng Tab k tip(k t Tab)

    \\ In du\

    \ In du nhy n ()

    \ In du nhy kp ()

  • 8/3/2019 giaotrinhJava1234

    74/352

    Hng, Bin, Biu thc

    * Hng : Hng l i lng c gi tr khng thay i trong

    sut qu trnh thc thi ca chng trnh

    * Bin : Bin l i lng c gi tr thay i trong sut qu

    trnh thc thi ca chng trnh Khai bo bin chng trnh dnh ring vng

    nh thch hp cho bin . Mi lnh truy cp n bin l truy cp n gi trca n.

  • 8/3/2019 giaotrinhJava1234

    75/352

    Hng, Bin, Biu thc

    * Bin:

    C php khai bo bin :datatype identifier [=value][, identifier[=value]...];

    Khai bo bin s gm 3 thnh phn: Kiu d liu ca bin s

    Tn bin Gi tr ban u ca bin (khng bt buc)

  • 8/3/2019 giaotrinhJava1234

    76/352

    Hng, Bin, Biu thc

    * Biu thc :

    L mt dy cc ton t v ton hng

    + Ton hng: c th l hng, hm, bin, ...+ Ton t : +, -, *, / , $ , %, & ...

    Mi biu thc s c gi tr thuc mt kiud liu no

    u tin cao nht cho biu thc con trongcp ngoc n

  • 8/3/2019 giaotrinhJava1234

    77/352

    Khai bo mng

    * Mng mt chiu: datatype identifier [ ];

    datatype identifier [ ] = new datatype[size];

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

    * Mng hai chiu :

    datatype identifier [ ][ ];

    Datatype [ ][ ] identifier;

  • 8/3/2019 giaotrinhJava1234

    78/352

    Lp v phng thc(Classes & Methods)

  • 8/3/2019 giaotrinhJava1234

    79/352

    79

    Lp trong Javapublic class MyProgram

    {

    }

    // comments about the class

    class header

    class body

    Comments can be added almost anywhere

  • 8/3/2019 giaotrinhJava1234

    80/352

    Lp trong Java

    C php khai bo lp (Class)

    class tnlp

    {kiu tnbin;:

    met_datatype tnphngthc([dsthams]):}

  • 8/3/2019 giaotrinhJava1234

    81/352

    Cc lp ni (Nested Classes)

    Mt lpcnhngha bn trong mt lpkhc. Lpcgi llpni(Nesting)

    Cc kiulpni: Static

    Non-static

  • 8/3/2019 giaotrinhJava1234

    82/352

    Phng thc

    (Methods in Classes) Phng thc c nh ngha nh l

    mt hnh nghocmt tc vthts

    caitng C php

    access_specifier modifier datatype method_name(parameter_list)

    {

    //body of method

    }

  • 8/3/2019 giaotrinhJava1234

    83/352

    V d v s dng phng thcclass Ex3{

    int x = 10; // variablepublic void show( )

    { System.out.println(x);

    }public static void main(String args[ ]) {

    Ex3 t = new Ex3( ); // tao doi tuong tt.show( ); // method call

    Ex3 t1 = new Ex3( ); // tao doi tuong t1t1.x = 20;t1.show( );

    }}

  • 8/3/2019 giaotrinhJava1234

    84/352

    Cc ch nh truy xut ca phng

    thc (Access specifiers) Cng cng (public)

    Ring t (private)

    Bo v (protected)

  • 8/3/2019 giaotrinhJava1234

    85/352

    Nhng phng thc c np chng :(Methods Overloading)

    Nhng phng thc c np chng : Cng trong mt lp

    C cng tn Khc nhau v danh sch tham s

    Nhngphngthcc npchng l

    mt hnh thc a hnh trong qu trnhbin dch (compile time)

  • 8/3/2019 giaotrinhJava1234

    86/352

    Ph th khi t

  • 8/3/2019 giaotrinhJava1234

    87/352

    Phng thc khi to

    (Class Constructors) L mtphng thccbit dng khito gi tr cho cc bin thnh vin ca lpitng

    C cng tn vi tn lp v khng c gi trtrv

    cgi khi itngcto ra C 2 loi:

    Tng minh (Explicit constructors) Ngmnh (Implicit constructors)

  • 8/3/2019 giaotrinhJava1234

    88/352

    Phng thc khi to ca lp dn xut(Derived class constructors)

    C cng tn vi lp dn xut (subclass)

    Nu lp dn xut mun gi hm

    constructor ca lpcs th cu lnhgi hm constructor calpcsphil cu lnh u tin trong hm

    constructor calpdnxut Dng t kho super

  • 8/3/2019 giaotrinhJava1234

    89/352

    Cc lnh iu khin

    iu khin r nhnh:

    Mnhif-else

    Mnhswitch-case

    Vng lp (Loops):

    Vng lpwhile

    Vng lpdo-while

    Vng lpfor

  • 8/3/2019 giaotrinhJava1234

    90/352

  • 8/3/2019 giaotrinhJava1234

    91/352

    Lnhswitch-case

    C phpswitch (expression)

    {

    case 'value1': action1 statement(s);

    break;

    case 'value2': action2 statement(s);

    break;

    :

    :case 'valueN': actionN statement(s);

    break;

    default: default_action statement(s);

    }

  • 8/3/2019 giaotrinhJava1234

    92/352

  • 8/3/2019 giaotrinhJava1234

    93/352

    Lnh lp do-while

    C php

    do

    {action statements;:

    :}while(condition);

  • 8/3/2019 giaotrinhJava1234

    94/352

    Vng lp for

    C php

    for(initialization statements ; condition ; increment statements)

    {

    action statements;

    :

    :

    }

  • 8/3/2019 giaotrinhJava1234

    95/352

    Chng 3

    Gi & Interface

    (Packages & Interfaces)

  • 8/3/2019 giaotrinhJava1234

    96/352

    Gii thiu Nhng thnh phn c bn ca chng trnh Java:

    Gi (Packages)

    Giao din (Interfaces)

    Nhng phn ca mt chng trnh Java:

    Lnh khai bo gi(package )

    Lnhchnh gi c dng (Lnh import)

    Khai bo lp public (mt file java chcha 1 lp public

    class) Cc lp khc (classes private to the package)

    Tp tin ngun Java c thchattchocmtvi trong s cc phn trn.

  • 8/3/2019 giaotrinhJava1234

    97/352

    Interfaces

    Interface chnh l lp abstract thun tu

    Khai bo nhng phng thc m lp s dng

    Trong Java 1 lp ch c th dn xut t 1 lpduy nht ti cng mt thi im, nhng cth dn xut cng lc nhiu Interface

    Trong Interface khng cha nhng phng

    thc c th (concrete methods) interface cn phi c implements.

  • 8/3/2019 giaotrinhJava1234

    98/352

    Cc bc to interface

    nh ngha Interface Bin dch Interface

    Implements Interface

    Tnh cht ca interface:

    Ttcphngthc trong interface phi lpublic. Cc phng thc phi c nh ngha

    trong lpdnxut interface .

  • 8/3/2019 giaotrinhJava1234

    99/352

  • 8/3/2019 giaotrinhJava1234

    100/352

  • 8/3/2019 giaotrinhJava1234

    101/352

    Nhng lu khi to gi:

  • 8/3/2019 giaotrinhJava1234

    102/352

    Nhnglu khi to gi: M ngun phibtubnglnh package

    M ngunphinm trong cng thmc mang tnca gi

    Tn gi nn btubng k tthng (lower case) phn bitgia tn lpitng v tn gi

    Nhng lnh khc phivit pha di dng khai bogi l mnh import, k n l cc lnh nhnghalpitng

    Nhng lpi tng trong gi cnphic bin

    dch. chng trnh Java c th s dng nhng gi

    ny, ta phiimport gi vo trong m ngun

  • 8/3/2019 giaotrinhJava1234

    103/352

    Import gi (Importing packages):

    C 2 cch:

    Xc nh lp hoc interface ca gi cnc import.

    - Hoc c th import ton b gi

    vd : import java.util.Vector;import java.util.*;

    Cc bc to ra gi

  • 8/3/2019 giaotrinhJava1234

    104/352

    Cc bc to ra gi

    (Package) Khai bo gi Import nhng gi chun cn thit

    Khai bo v nh ngha cc lp itng c trong gi

    Lu thnh tp tin .java, v bin dch

    nhng lp i tng c nhngha trong gi.

    S d h i d i d h

  • 8/3/2019 giaotrinhJava1234

    105/352

    S dng nhng gi do ngi dng nhngha (user-defined packages)

    M nguncanhngchng trnh ny phicng th mc ca gi do ngi dng nhngha. Nu khng ta phithitlpngdn.

    nhng chng trnh Java khc s dngnhng gi ny, import gi vo trong m ngun

    Import nhnglpitngcn dng

    Import ton b gi To tham chiunnhng thnh vin ca gi

  • 8/3/2019 giaotrinhJava1234

    106/352

    Thit lp ng dn - xc lp CLASSPATH

    L danh sch cc th mc, gip chovic tm kim cc tp tin lpitng

    tngng Nn xc lp CLASSPATH trong lc

    thc thi (runtime), v nhvy n s xc

    lp ng dn cho qu trnh thc thihin hnh

    Gi v iu khin truy xut

  • 8/3/2019 giaotrinhJava1234

    107/352

    Gi v iu khin truy xut(Packages & Access Control)

  • 8/3/2019 giaotrinhJava1234

    108/352

    Gi java.lang

    Gi java.lang c import mc nh.

    Nhng lp Wrapper cho cc kiu dliu nguyn thy:

  • 8/3/2019 giaotrinhJava1234

    109/352

    Lp String

    Phng thc khi to (Constructor): String str1 = new String();

    String str2 = new String(HelloWorld); char ch[ ] = {A,B,C,D,E};

    String str3 = new String(ch);

    String str4 = new String(ch,0,2);

  • 8/3/2019 giaotrinhJava1234

    110/352

    String Pool

    String Pool i din cho tt c cc kt c to ra trong chng trnh

    Khi nimString Pool

    S

  • 8/3/2019 giaotrinhJava1234

    111/352

    Nhng phng thc ca lp String

    charAt( )// startsWith() endsWith( )

    copyValueOf( ) toCharArray( ) indexOf( ) toUpperCase( )

    toLowerCase( ) trim( ) equals( )

  • 8/3/2019 giaotrinhJava1234

    112/352

  • 8/3/2019 giaotrinhJava1234

    113/352

    Lp java.lang.Math

    abs()

    ceil()// lam tron tren

    floor()// lam tron duoi max()

    min()

    round()

    random()

    sqrt()

    sin() cos()

    tan()

  • 8/3/2019 giaotrinhJava1234

    114/352

    Lp Runtime

    ng gi (Encapsulates) mi trngthc thi Dng qun l bnh, v thi hnh nhng

    tin trnh cng thm

    Phngthc: exit(int) freeMemory( ) getRuntime( )

    gc( ) totalMemory( ) exec(String)

    Lp System

  • 8/3/2019 giaotrinhJava1234

    115/352

    Cung cpnhnglungchunnhnhp (Input), xut(Output) v cc lungli(ErrorStreams)

    Cung cpkhnng truy xutnnhng thuc tnhcahthngthc thi Java, v nhngthuc tnh mitrngnh phin bn,ngdn, nh cung cp

    Phngthc:

    exit(int)

    gc()

    getProperties()

    setProperties() currentTimeMillis()

    arraCopy(Object, int, Object, int, int)

  • 8/3/2019 giaotrinhJava1234

    116/352

    L Obj

  • 8/3/2019 giaotrinhJava1234

    117/352

    Lp Object

    L lp cha ti cao ca tt c cc lp Phng thc:

    equals(Object) finalize()

    notify()

    notifyAll()

    toString() wait()

    i

  • 8/3/2019 giaotrinhJava1234

    118/352

    Gi java.util

    Cung cp phn ln nhng lp Javahu dng v thng xuyn cn ntrong hu ht cc ng dng

    Giithiunhnglptrutng sau: Hashtable

    Random

    Vector StringTokenizer

  • 8/3/2019 giaotrinhJava1234

    119/352

    Nhng phng thc ca lp

  • 8/3/2019 giaotrinhJava1234

    120/352

    Nhng phng thc ca lpHashtable

    clear()

    done()

    contains(Object) containsKey(Object)

    elements()

    get(Object key)

    isEmpty()

    keys()

    put(Object, Object)

    rehash() remove(Objectkey)

    size()

    toString()

  • 8/3/2019 giaotrinhJava1234

    121/352

    Nhng phng thc ca lp

  • 8/3/2019 giaotrinhJava1234

    122/352

    Nhng phng thc ca lpRandom

    nextDouble()

    nextFloat()

    nextGaussian() nextInt()

    nextLong()

    setSeed(long)

    L V t

  • 8/3/2019 giaotrinhJava1234

    123/352

    Lp Vector

    Cung cp kh nng co gin cho mng khithm phnt vo mng

    Lutrnhng thnh phncakiu Object

    Mt Vector ring r c th lu tr nhngphnt khc nhau, l nhng instance canhnglp khc nhau

    Phngthckhito (Constructors): Vector(int) Vector(int, int) Vector()

    Nhng phng thc ca lp

  • 8/3/2019 giaotrinhJava1234

    124/352

    Nhng phng thc ca lpVector

    addElement(Object) capacity( ) clone( ) contains(Object) copyInto(Object [ ]) elementAt(int) elements( ) ensureCapacity(int) firstElement( )

    indexOf(Object) indexOf(Object, int) insertElementAt(Object,

    int)

    isEmpty( ) lastElement( ) lastIndexOf(Object) lastIndexOf(Object, int) removeAllElements( )

    removeElement(Object) removeElementAt(int) setElementAt(Object,

    int)

    setSize(int) size( ) toString( ) trimToSize( )

    L St i T k i

  • 8/3/2019 giaotrinhJava1234

    125/352

    Lp StringTokenizer

    C thc dng tch mtchui thnh nhngthnh phncu thnh ca n (constituent tokens)

    K t phn cch c th c ch nh khi mt i

    tngStringTokenizerckhito Phngthckhito (Constructors):

    StringTokenizer(String)

    StringTokenizer(String, String)

    StringTokenizer(String, String, Boolean) Lp StringTokenizer s dng giao din lit k

    (enumeration interface)

    Nhng phng thc ca lp

  • 8/3/2019 giaotrinhJava1234

    126/352

    g p g t c ca pStringTokenizer

    countTokens( )

    hasMoreElements( )

    hasMoreTokens( ) nextElement( )

    nextToken( )

    nextToken(String)

  • 8/3/2019 giaotrinhJava1234

    127/352

    Chng 4

    X l bit l

    Gii thi bit l

  • 8/3/2019 giaotrinhJava1234

    128/352

    Gii thiu v bit l

    L mtkiulicbit N xy ra trong thi gian thc thi on

    lnh Thng thng cc iu kin thc thi

    chng trnh gy ra bitl Nu cc iukin ny khng cx

    l, th vic thc thi c thkt thc tngt

  • 8/3/2019 giaotrinhJava1234

    129/352

    X l bit l

  • 8/3/2019 giaotrinhJava1234

    130/352

    X l bit l

    Khi mtbitlxy ra, itngtngngvibitlscto ra.

    itng ny sau ctruyntiphngthc

    ni m bitlxy ra. itng ny cha cc thng tin chi titvbitl.

    Thng tin ny c thnhnc v x l.

    Lp throwable m Java cung cp l lp trn nht

    calpbitl.

  • 8/3/2019 giaotrinhJava1234

    131/352

    Cu trc ca m hnh x l bit l

  • 8/3/2019 giaotrinhJava1234

    132/352

    Cu trc ca m hnh x l bit l

    C phptry { . }catch(Exception e1) { . }catch(Exception e2) { . }catch(Exception eN) { . }finally { . }

    M hnh Catch and Throw nng cao

  • 8/3/2019 giaotrinhJava1234

    133/352

    M hnh Catch and Throw nng cao

    Ngi lp trnh ch quan tm ti cc likhi cnthit.

    Mt thng bo li c thc cung cptrong exception-handler.

    Khi try v catch

  • 8/3/2019 giaotrinhJava1234

    134/352

    Khi try v catch

    csdng thchin trong mhnh catch and throwcax l bitl.

    Khi lnh try gm tp hp cc lnhthc thi

    Mthocnhiukhilnhcatch c thtip theo sau mtkhilnhtry

    Cc khi lnh catch ny bt bit ltrong khilnhtry.

    Khi lnh try v catch (tt)

  • 8/3/2019 giaotrinhJava1234

    135/352

    Khi lnh try v catch (tt)

    btbtkloibitl no, ta c thch rakiubitl l Exceptioncatch(Exception e)

    Khi bit lb bt khng bit thuckiu no,chng ta c th s dng lp Exception btbitl.

    Li s c truyn thng qua khi lnh try

    catch cho ti khi chng bt gp mt catchtham chiuti n, nu khng chng trnh sbkt thc

  • 8/3/2019 giaotrinhJava1234

    136/352

    Khi lnh cha nhiu Catch

  • 8/3/2019 giaotrinhJava1234

    137/352

    (tt) Khi s dng cc try lng nhau, khi try

    bn trong cthc thi trc. Bt k bit l no b chn trong khi lnh

    try s b bt trong khi lnh catch tipngay sau. Nukhilnhcatch thch hp khng c

    tm thy, th cc khi catch ca khi try

    bn ngoi sc xem xt Ngcli, Java Runtime Environment sx

    l bitl.

  • 8/3/2019 giaotrinhJava1234

    138/352

  • 8/3/2019 giaotrinhJava1234

    139/352

  • 8/3/2019 giaotrinhJava1234

    140/352

  • 8/3/2019 giaotrinhJava1234

    141/352

  • 8/3/2019 giaotrinhJava1234

    142/352

  • 8/3/2019 giaotrinhJava1234

    143/352

    Danh sch cc bit l (tt)

  • 8/3/2019 giaotrinhJava1234

    144/352

    Danh sch cc bit l (tt)

    NumberFormatException

    AWTException

    IOException FileNotFoundException

    EOFException

    NoSuchMethodException InterruptedException

  • 8/3/2019 giaotrinhJava1234

    145/352

  • 8/3/2019 giaotrinhJava1234

    146/352

  • 8/3/2019 giaotrinhJava1234

    147/352

    AWT bao gm cc lp interfaces v cc gi

  • 8/3/2019 giaotrinhJava1234

    148/352

    AWT bao gm cc lp, interfaces v cc gikhc

    Components

  • 8/3/2019 giaotrinhJava1234

    149/352

    Components

    Ttc cc thnh phncu to nn chngtrnh GUI cgi l component.

    VdContainers,

    textfields, labels, checkboxes, textareas

    scrollbars, scrollpanes, dialog

  • 8/3/2019 giaotrinhJava1234

    150/352

  • 8/3/2019 giaotrinhJava1234

    151/352

    Panels

  • 8/3/2019 giaotrinhJava1234

    152/352

    Panels

    L cc vng cha trong mtcas.

    Hin th trong mt ca s m trnh duythoc appletviewer cung cp v khng cngvin.

    c s dng nhm mt s cc thnhphn

    Mt panel khng th nhn thy v th chngta cnphi thm n vo frame.

  • 8/3/2019 giaotrinhJava1234

    153/352

    Cc Components khc

  • 8/3/2019 giaotrinhJava1234

    154/352

    Cc Components khc

    Vd

    textfields, labels, checkboxes, textareas

    scrollbars, scrollpanes, dialog

    Label

  • 8/3/2019 giaotrinhJava1234

    155/352

    Label

    c dng hin th chui (String) Cc hm todng:

    Label( )

    Label(String labeltext) Label(String labeltext, int alignment)

    Cc phng thc: setFont(Font f)

    setText(String s) getText( )

    TextField

    L iu khin text cho php hin th text hoc

  • 8/3/2019 giaotrinhJava1234

    156/352

    L iukhin text, cho php hinth text hoc

    cho user nhpdliu vo. Cc hm dng: TextField( )

    TextField(int columns)

    TextField(String s) TextField(String s, int columns)

    Cc phngthc: setEchoChar(char) setText(String s)

    getText( )

    setEditable(boolean)

    isEditable( )

  • 8/3/2019 giaotrinhJava1234

    157/352

    TextArea (tt)

  • 8/3/2019 giaotrinhJava1234

    158/352

    TextArea (tt)

    Cc hm dng: TextArea( )

    TextArea(int rows, int cols )

    TextArea(String text)

    TextArea(String text, int rows, int cols)

  • 8/3/2019 giaotrinhJava1234

    159/352

    Button

  • 8/3/2019 giaotrinhJava1234

    160/352

    Button

    Cc nt n l cch dnht ly ccskincangi dng.

    Cc hm todng: Button( )

    Button(String text)

  • 8/3/2019 giaotrinhJava1234

    161/352

  • 8/3/2019 giaotrinhJava1234

    162/352

  • 8/3/2019 giaotrinhJava1234

    163/352

    FlowLayout

  • 8/3/2019 giaotrinhJava1234

    164/352

    FlowLayout l layout manager mcnh chocc applet v cc panel

    Vi FlowLayout cc component s c

    spxpt gc tri trn n gc phidica mn hnh theo tng hng. Cc constructor:

    FlowLayout mylayout = new FlowLayout();FlowLayout exLayout = newflowLayout(FlowLayout.RIGHT);

    BorderLayout BorderLayout mc nh cho Window,

    F Di l

  • 8/3/2019 giaotrinhJava1234

    165/352

    Frame v Dialog

    Trnh qun l ny c thb tr containerthnh 5 vng, NORTH, EAST, SOUTH,WEST v CENTER.

    V d: thm mt thnh phn vovng North ca containerButton b1= new Button(NorthButton);

    setLayout(new BorderLayout( ));add(b1, BorderLayout.NORTH);

    CardLayout

  • 8/3/2019 giaotrinhJava1234

    166/352

    y

    C th lu tr mt danh sch cc kiulayout khc nhau

    Mi layout c xem nhmtth (card)

    Ththng l itng Panel Mt thnh phnc lpnh button siukhin cc th ct pha trn nht

    Cc bcto CardLayout: B tr layout ca panel chnh l CardLayout Lnlt thm cc panel khc vo panel chnh

  • 8/3/2019 giaotrinhJava1234

    167/352

    GridBagLayout

  • 8/3/2019 giaotrinhJava1234

    168/352

    B tr cc thnh phn mt cch chnhxc Cc thnh phn khng cn c cng kch

    thc Cc thnh phncspxp trong mt

    licha cc dng v cc ct Th t t cc thnh phn khng tun

    theo hng t tri-sang-phi v trn-xung-di Hm constructor

    GridBagLayout gb = new GridBagLayout( );

  • 8/3/2019 giaotrinhJava1234

    169/352

  • 8/3/2019 giaotrinhJava1234

    170/352

  • 8/3/2019 giaotrinhJava1234

    171/352

  • 8/3/2019 giaotrinhJava1234

    172/352

    LpGridLayout

  • 8/3/2019 giaotrinhJava1234

    173/352

    Lp GridLayout cung cp cc hm to lp sp hng cc thnh phn giao

    din:GridLayout()

    GridLayout(int rows, int columns)

    GridLayout(int rows, int columns, int hoiongap, int verticalgap)

    To ra mt li hnh chnht c rows columns c khong cch gia cchng cc ct lhorizongap, verticalgap. Mt trong hai isrowshoccolumnsc th l 0, nhng khng thc hai, GridLayout(1,0) l to ra li c mt hng.

  • 8/3/2019 giaotrinhJava1234

    174/352

    //To ra li hnh chnht c 4 v tlayout spxp cc thnh phn //xLabel, xInput, yLabel, yInput

  • 8/3/2019 giaotrinhJava1234

    175/352

    , p , y , y p

    setLayout(new GridLayout(2,2));

    add(xLabel); //t xLabel vo thnht

    add(xInput); //t xInput vo thhai

    add(yLabel); //t yLabel vo thba

    add(yInput); //t yInput vo tht

    }

    }

  • 8/3/2019 giaotrinhJava1234

    176/352

  • 8/3/2019 giaotrinhJava1234

    177/352

    Scrollbar sb1=new Scrollbar(Scrollbar.VERTICAL,0,10,-50,100);

    Scrollbar sb2=new Scrollbar(Scrollbar VERTICAL 0 10 50 100);

  • 8/3/2019 giaotrinhJava1234

    178/352

    Scrollbar sb2=new Scrollbar(Scrollbar.VERTICAL,0,10,-50,100);

    setLayout(new BorderLayout());

    add(nutVe, BorderLayout.NORTH);//tnutVe trn (NORT)

    add(msg, BorderLayout.SOUTH); //tmsg di (SOUTH)

    add(vungVe,BorderLayout.CENTER);//tvungVe gia (CENTER)

    add(sb1, BorderLayout.WEST); //tsb1 bn tri (WEST)

    add(sb2, BorderLayout.EAST); //tsb2 bn phi (EAST)

    }

    }

  • 8/3/2019 giaotrinhJava1234

    179/352

  • 8/3/2019 giaotrinhJava1234

    180/352

    X l cc s kin

  • 8/3/2019 giaotrinhJava1234

    181/352

    Cc bccn tun thsdng m hnhEvent Listener:

    Ci t Listener tngng

    Nhn din c tt c cc thnh phn to skin

    Nhndincttc cc skincx l

    Ci t cc phngthcca listener, v vit cc

    on m x l skin trong cc phngthc

    Interface nh ngha cc phng thc khcnhau x l miskin

  • 8/3/2019 giaotrinhJava1234

    182/352

  • 8/3/2019 giaotrinhJava1234

    183/352

  • 8/3/2019 giaotrinhJava1234

    184/352

  • 8/3/2019 giaotrinhJava1234

    185/352

    c/ItemEventCc thnh phnca GUI gy ra cc skinv cc mcgm c:

    Ch kb khi t thi h ki t Ch kb th i

  • 8/3/2019 giaotrinhJava1234

    186/352

    Checkbox - khi trng thi cahpkim tra Checkbox thay i

    CheckboxMenuItem - khi trng thi cahpkim tra Checkbox ngvimccathcn thay i,Choice - khi mtmc trong danh sch cchnhocbloibList - khi mtmc trong danh sch cchnhocbloib.

    LpItemEvent c hm:Object getItem()

    Cho liitngcchn hay vabloib.d/ TextEventCc thnh phnca GUI gy ra cc skinvtextgm c:

    TextArea - khi kt thc bngnhn nt ENTER,TextField - khi kt thc bngnhn nt ENTER.

    Kiuskin Ngun gy ra

    s kinCc hm n nhn v di

    di cc s kinGiao din Listener tng

    ng

  • 8/3/2019 giaotrinhJava1234

    187/352

    AcitionEvent

    AdjustmentEvent

    ItemEvent

    TextEvent

    ButtonListTextFieldScrollbar

    ChoiceCheckboxCheckboxMen

    uItemListTextAreaTexField

    addComponentlistener

    remove ActiontListener

    addAdjustmentListenerremoveAdjustmentListener

    addItemListenerremoveItemListener

    addTexListener

    removeTextListener

    AcitionListener

    AdjustmentListener

    ItemListener

    TextListener

    2. Cc s kin mc thpa/ ComponentEvent

    Skin ny xuthin khi mt thnh phnb che giu,hinth hay thay ili kch thc Lp ComponentEvent c hm:

  • 8/3/2019 giaotrinhJava1234

    188/352

    li kch thc. LpComponentEvent c hm:

    Component getComponent()Cho liitng tham chiukiuComponent.b/ ContainerEvent

    Skin ny xuthin khi mt thnh phncb sung hay bloibkhiphntcha (Container).

    c/ FocusEvent

    Skin ny xuthin khi mt thnh phnnhncmt nt tbn phm.d/ KeyEventLpKeyEvent l lp con calptrutngInputEvent csdngxl cc skin lin quan n cc phm ca bn phm.

    int getKeyCode()i vi cc s kin KEY_PRESSED hoc KEY_RELEASED, hm ny

    csdngnhnli gi tr nguyn tngngvi m ca phm trnbn phm.

    char getKeyChar()ivi cc skin KEY_PRESSED, hm ny csdngnhnli gitr nguyn, m Unicodetngngvi k tca bn phm.

  • 8/3/2019 giaotrinhJava1234

    189/352

  • 8/3/2019 giaotrinhJava1234

    190/352

    Vd: Xy dngngdng c giao dinha GUI

  • 8/3/2019 giaotrinhJava1234

    191/352

    import java.awt.*;import java.awt.event.*;import java.applet.*;interface IGeometryConstants { // nh ngha Interface gm cc hng cho

    t

  • 8/3/2019 giaotrinhJava1234

    192/352

    192

    trc

    int SQUARE = 0;int CIRCLE = 1;int ELLIPSE = 2;String[] shapeNames = {"Square", "Circle" , "Ellipse"};int SMALL = 0;int MEDIUM = 1;int LARGE = 2;String[] sizeNames = {"Small", "Medium" , "Large"};

    }public class DemoApplet extends Applet implements

    IGeometryConstants {// Khai bo mtPanelcha cc Checkboxtngngvi cc loi hnh shapePanel shapePanel;// Khai bo mtPanelCheckboxGroup shapeCBG; // Khai bo mtCheckboxGroupCheckbox squareCB; // Khai bo mtCheckboxngvi hnh vungCheckbox circleCB; // Khai bo mtCheckboxngvi hnh trnCheckbox ellipseCB; // Khai bo mtCheckboxngvi hnh ellipse// Khai bo mtPanelcha cc Labelv cc TextFieldPanel xyPanel; // Khai bo mt Panel xyPanelLabel xLabel; // Khai bo mt Label xLabelTextField xInput; // Khai bo mt TextField xInputLabel yLabel; // Khai bo mt Label yLabel

    TextField In ut; // Khai bo t TextField In ut

    // Khai bo mtPanelcha cc Label, Choice v CheckboxPanel sizePanel;Label sizeLabel;Ch i i Ch i

  • 8/3/2019 giaotrinhJava1234

    193/352

    Choice sizeChoices;

    Checkbox fillCB;// Khai bo mtPanel chashape, coordinates, size and fill Panel leftPanelPanel leftPanel;// Khai bo mtPanel chaMassage display, draw button and canvasPanel rightPanel;Button drawButton;DrawRegion drawRegion;TextField messageDisplay;

    // nhnghali hm init()public void init() {

    makeShapePanel();makeXYPanel();makeSizePanel();makeLeftPanel();makeRightPanel();

    // Gi hm x l cc skinaddListeners();//a cc Panelvo hthngadd(leftPanel);add(rightPanel);

    }

    // a cc thnh phnv cc shapevo shapePanelvoid makeShapePanel() {shapePanel = new Panel();

  • 8/3/2019 giaotrinhJava1234

    194/352

    p ();shapeCBG = new CheckboxGroup();

    squareCB = new Checkbox(shapeNames[SQUARE], shapeCBG, true);circleCB = new Checkbox(shapeNames[CIRCLE], shapeCBG, false);ellipseCB = new Checkbox(shapeNames[ELLIPSE], shapeCBG, false);shapePanel.setLayout(new FlowLayout());shapePanel.add(squareCB);shapePanel.add(circleCB);shapePanel.add(ellipseCB);

    }//a cc thnh phnv cc x,y coordinatesvo xyPanelvoid makeXYPanel() {

    xyPanel = new Panel();xLabel = new Label("X Coordinate:");yLabel = new Label("Y Coordinate:");xInput = new TextField(5);yInput = new TextField(5);xyPanel.setLayout(new GridLayout(2,2));xyPanel.add(xLabel);xyPanel.add(xInput);xyPanel.add(yLabel);xyPanel.add(yInput);

    }

    //a cc thnh phnvsizevfillvo sizePanelvoid makeSizePanel() {

    sizePanel = new Panel();

  • 8/3/2019 giaotrinhJava1234

    195/352

    sizeLabel = new Label("Size:");

    sizeChoices = new Choice();sizeChoices.add(sizeNames[0]);sizeChoices.add(sizeNames[1]);sizeChoices.add(sizeNames[2]);fillCB = new Checkbox("Fill", false);sizePanel.setLayout(new FlowLayout());

    sizePanel.add(sizeLabel);sizePanel.add(sizeChoices);sizePanel.add(fillCB);

    }//a cc thnh phn vo leftPanelvoid makeLeftPanel(){

    leftPanel = new Panel();

    leftPanel.setLayout(new BorderLayout());leftPanel.add(shapePanel, "North");leftPanel.add(xyPanel, "Center");leftPanel.add(sizePanel, "South");}

    //a cc thnh phn vo rightPanelvoid makeRightPanel(){

    rightPanel = new Panel();

  • 8/3/2019 giaotrinhJava1234

    196/352

    rightPanel new Panel();

    messageDisplay = new TextField("MESSAGE DISPLAY");messageDisplay.setEditable(false);messageDisplay.setBackground(Color.yellow);

    drawButton = new Button("Draw");drawButton.setBackground(Color.lightGray);

    drawRegion = new DrawRegion();drawRegion.setSize(150, 150);drawRegion.setBackground(Color.white); rightPanel.setLayout(new BorderLayout());rightPanel.add(drawButton, BorderLayout.NORTH);

    rightPanel.add(messageDisplay, BorderLayout.SOUTH);rightPanel.add(drawRegion, BorderLayout.CENTER);}

    // X l cc skintngngvi cc victhchin trn cc thnh phnhavoid addListeners(){

    drawButton addActionListener(new ActionListener(){

  • 8/3/2019 giaotrinhJava1234

    197/352

    drawButton.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent evt){int shape, xCoord, yCoord, width;messageDisplay.setText("");if(squareCB.getState())

    shape = SQUARE;else if (circleCB.getState())

    shape = CIRCLE;else if (ellipseCB.getState())

    shape = ELLIPSE;else {messageDisplay.setText("Unknow shape");return;

    }try{

    xCoord = Integer.parseInt(xInput.getText());

    yCoord = Integer.parseInt(yInput.getText());}catch(NumberFormatException e){messageDisplay.setText("Illegal coordinate");

    return;}

    switch(sizeChoices.getSelectedIndex()){

    case SMALL: width = 30; break;case MEDIUM: width = 60; break;case LARGE: width = 120; break;

  • 8/3/2019 giaotrinhJava1234

    198/352

    198

    default:

    messageDisplay.setText("Unknow size");return;

    }

    messageDisplay.setText("Drawing..."+shapeNames[shape]);

    drawRegion.doDraw(shape,xCoord,yCoord, fillCB.getState(),width);}

    });xInput.addTextListener(new TextListener(){

    public void textValueChanged(TextEvent evt){checkTF(xInput);

    }});yInput.addTextListener(new TextListener(){

    public void textValueChanged(TextEvent evt){checkTF(yInput);

    }});

    }// Kt thc hm addListener()

    void checkTF(TextField tf){

    messageDisplay.setText("");try{

    Integer.parseInt(tf.getText());

  • 8/3/2019 giaotrinhJava1234

    199/352

    Integer.parseInt(tf.getText());}catch(NumberFormatException e){messageDisplay.setText("Illegal coordinate ");

    }}

    }//nhnghalpDrawRegion mrnglpCanvasvsdng cc hng giaodinclass DrawRegion extends Canvas implements IGeometryConstants{private int shape,xCoord, yCoord;

    private boolean fillFlag;private int width;public DrawRegion(){

    setSize(150, 150);setBackground(Color.white);}

    //nhngha hm doDraw() v

    public void doDraw(int h, int x, int y, boolean f, int w){this.shape = h;this.xCoord = x;this.yCoord = y;this.fillFlag = f;this.width = w;repaint();

    }

    public void paint(Graphics g){

    switch(shape){case SQUARE:

  • 8/3/2019 giaotrinhJava1234

    200/352

    if(fillFlag) g.fillRect(xCoord, yCoord, width,width);else g.drawRect(xCoord, yCoord, width,width);

    break;case CIRCLE:if(fillFlag) g.fillOval(xCoord, yCoord, width,width);else g.drawOval(xCoord, yCoord, width,width);

    break;case ELLIPSE:if(fillFlag) g.fillOval(xCoord,yCoord,width,width/2);else g.drawOval(xCoord, yCoord, width,width/2);

    break;}

    }}

    Menus

  • 8/3/2019 giaotrinhJava1234

    201/352

    Cc loi menu : Pull-down

    Pop-up menu

    Ch c tht cc thanh menubar votrong cc Frame m thi

    Cc thnh phnca menu:

    Menubar MenuItems

    Thnh phnMenuLpabstract class MenuComponent l lpcscho ttc cc lpthchinnhngvn lin quan nthcn (menu).

    LpMenuBarci t thanh thcn v trong c thcha cc thcn pull-down.LpMenuItem nhnghatngmccathcn.

  • 8/3/2019 giaotrinhJava1234

    202/352

    202

    p g g

    LpMenu ci t cc thcnpull-down c tha vo mtthcnbtk.LpPopUpMenu biudin cho thcn pop-up .LpCheckboxMenuItem cha cc mccchnkim tra trong cc mc.Victolpmt thanh thcn cho mtframe cthchinnhsau:1. To ra mtthanh thcn,MenuBar thanhThDon = new MenuBar();

    2. To ra mtthcn,Menu thucDon = new Menu(Cac loai banh);

    3. To ra cc mc trong thcn v a vo thcn,MenuItem muc = new MenuItem(Banh day);thucDon.add(muc); //amucvo thucDon

    4. a cc thcn vo thanh thcn,thanhThDon.add(thucDon); //athucDonvo thanhThDon

    5. To ra mtframe v a thanh thcn vo frame .Frame frame = new Frame(Cac mon an);frame.add(thanhThDon); //athanhThDonvo frame

    Thnh phnMenuVd: Tolp v sdng cc thcn.import java.awt.*;

    import java.applet.*;

  • 8/3/2019 giaotrinhJava1234

    203/352

    public class MenuDemo extends Applet{public static void main(String args[]){

    MenuBar thanhThDon = new MenuBar();

    Menu thucDon = new Menu("Cac loai banh");

    MenuItem b1 = new MenuItem("Banh day");

    thucDon.add(b1);

    MenuItem b3 = new MenuItem("Banh khoai");

    thucDon.add(b3);

    thucDon.addSeparator();// To ra mt thanh phn cchMenuItem b4 = new MenuItem("Banh gio");

    thucDon.add(b4);

    thucDon.add(new CheckboxMenuItem("Banh ran"));thanhThDon.add(thucDon);

    Frame frame = new Frame("Cac mon an");

    frame.setMenuBar(thanhThDon);

    frame.pack();frame.setVisible(true);}

    }

  • 8/3/2019 giaotrinhJava1234

    204/352

    Chng VI

    Applets

  • 8/3/2019 giaotrinhJava1234

    205/352

    Cu trc applet

  • 8/3/2019 giaotrinhJava1234

    206/352

    nhnghamt applet tbnskinxy ratrong qu trnh thc thi

    ivimiskincnhnghabimt

    phngthctngng. Cc phngthc: init( ) start( )

    stop( ) destroy( )

    Cc phngthc khc:

  • 8/3/2019 giaotrinhJava1234

    207/352

    paint( ) repaint( )

    showStatus( )

    getAppletInfo( )

    Cc phng thc init(), start(), stop(),destroy(), and paint() cthakt applet.

    Mi phng thc ny mc nh l rng. V

    th cc phng thc ny phi c npchng.

    Bin dch v thc thi applet

  • 8/3/2019 giaotrinhJava1234

    208/352

    Mt applet th c bin dch theo c phpsau

    javac Applet1.java

    thc thi mt applet, tomttp tin HTMLc sdngth applet Th applet c hai thuc tnh:

    Width Height

    truyn tham s ti applet, s dng thparam, v tip theo l thvalue

    Applet c th c thc thi bng appletviewer

    im khc bit gia applet v mt ng dng Cc ngdng khi thc thi phisdng trnh

    bin dch Java, trong khi cc applets thc thic trn bt k trnh duyt no m h tr

  • 8/3/2019 giaotrinhJava1234

    209/352

    c trn btk trnh duyt no m h trJava, hoc s dng AppletViewer trongJDK.

    Mt ng dng bt u vi phng thcmain(). Cn i vi applet th khng sdngphngthc ny

    MtngdngsdngSystem.out.println()hinth, trong khi mt applet th sdngcc phngthccalp Graphics.

    Nhng hn ch v bo mttrong applet

  • 8/3/2019 giaotrinhJava1234

    210/352

    g pp Khng thchocvit cc tp tin trn h

    thngtp tin cangisdng

    Khng th giao tipvimt site trn internet.

    M ch giao tip vi mt dch v trn trangweb c applet.

    Khng thchybtkchng trnh no trnhthngcangic

    Khng th load bt k chng trnh noclu trn hthngcangisdng

    Chu trnh sng ca applet

  • 8/3/2019 giaotrinhJava1234

    211/352

    Truyn tham s ti mt applet

  • 8/3/2019 giaotrinhJava1234

    212/352

    truyn tham s, s dng PARAMtrong th HTML

    V d

    Lp ha

  • 8/3/2019 giaotrinhJava1234

    213/352

    c cung cpbi gi AWT

    Cung cpmttphp cc phngthcvnh sau:

    Oval Rectangle

    Square

    Circle

    Lines

    Text in different fonts

    Graphical Background

  • 8/3/2019 giaotrinhJava1234

    214/352

    Cc phngthcvnn : getGraphics( )

    repaint( )

    update(Graphics g)

    paint(Graphics g)

    Hin th chui, k t v bytes Phng thcvhochin thmt chui

    trn frame

  • 8/3/2019 giaotrinhJava1234

    215/352

    C php drawString(String str, int xCoor, int yCoor);

    Phng thcvhochin th cc k ttrn frame

    C php drawChars(char array[ ], int offset, int length, int xCoor, int yCoor);

    Phng thcvhochin th bytes trnframe

    C php drawBytes(byte array[ ], int offset, int length, int xCoor, int yCoor);

    V cc hnh th Phng thc c s dng v

    ngthngnh sau

  • 8/3/2019 giaotrinhJava1234

    216/352

    C php drawLine(int x1, int y1, int x2, int y2);

    Cc phng thccsdngv

    ng trn nh sauC php drawOval(int xCoor, int yCoor, int width, int height);

    setColor(Color c);

    fillOval(int xCoor, int yCoor, int width, int height);

    Phng thc s dng v hnhvung:

    C php

  • 8/3/2019 giaotrinhJava1234

    217/352

    C php drawRect(int xCoor, int yCoor, int width, int

    height);

    fillRect(int xCoor, int yCoor, int width, intheight);

    Cc phng thc c s dng v hnh vung c gc trn

    C php drawRoundRect(int xCoor, int yCoor, int width, int height, intarcWidth, int arcHeight);

    fillRoundRect (int xCoor, int yCoor, int width, int height, intarcWidth, int arcHeight);

    3D Rectangles & Arcs

  • 8/3/2019 giaotrinhJava1234

    218/352

    Cc phng thccsdngvhnh 3D C php

    draw3DRect(int xCoord, int yCoord, int

    width, int height, boolean raised);

    drawArc(int xCoord, int yCoord, int width,int height, int arcwidth, int archeight);

    fillArc(int xCoord, int yCoord, int width, intheight, int arcwidth, int archeight);

    Drawing PolyLines

  • 8/3/2019 giaotrinhJava1234

    219/352

    Cc phng thc c s dng vnhiu onthngC php

    drawPolyline(int xArray[ ], int yArray[ ], inttotalPoints);

    g.setFont(new Font("Times Roman",

    Font.BOLD,15));

    V v t cc hnh a gic

  • 8/3/2019 giaotrinhJava1234

    220/352

    Cc phng thc v v t cc hnh a gic

    C php

    drawPolygon(int x[ ], int y[ ], intnumPoints);

    fillPolygon(int x[ ], int y[ ], int numPoints);

    Mu

  • 8/3/2019 giaotrinhJava1234

    221/352

    Java sdng mu RGB

    Bng cc gi tr mu

    Element RangeRed 0-255

    Green 0-255

    Blue 0-255 C php ca hm dngtomt mu

    color(int red, int green, int blue);

    Bng trnh by cc gi tr mu RGB thng thng

    Color Red Green Blue

  • 8/3/2019 giaotrinhJava1234

    222/352

    White 255 255 255Light Gray 192 192 192

    Gray 128 128 128

    Dark Gray 64 64 64

    Black 0 0 0

    Pink 255 175 175

    Orange 255 200 0

    Yellow 255 255 0Magenta 255 0 255

    Font

  • 8/3/2019 giaotrinhJava1234

    223/352

    Gi java.awt package cung cp bi lpFont

    Cc phng thc ca lp Font: getAllFont( )

    getLocalGraphicsEnvironment( )

    getFont( )

    getFontList( )

    Hm dng Font nhn 3 tham s Tn font trong chui nhdng; tn ny c

  • 8/3/2019 giaotrinhJava1234

    224/352

    g g; ytrong phngthc getFontList( ).

    Kiuca font.

    V d : Font.BOLD, Font.PLAIN, Font.ITALIC

    Kch thcca font. V d

    Font f1 = new Font("SansSerif", Font.ITALIC, 16);

    g.setFont(f1);

    Lp FontMetrics

  • 8/3/2019 giaotrinhJava1234

    225/352

    o cc k t khc nhau hin th trongcc font khc nhau.

    Vic o bao gm height, baseline,

    ascent,descent v leadingca font. N khng c th v n l mt lp tru

    tng

    Lp FontMetrics (tip theo)

  • 8/3/2019 giaotrinhJava1234

    226/352

    Phng thc: getFontMetrics(f1)

    getHeight( )

    getAscent( ) getDescent( )

    getLeading( )

    getName( )

  • 8/3/2019 giaotrinhJava1234

    227/352

  • 8/3/2019 giaotrinhJava1234

    228/352

    Chng VII

    Lp trnh a tuyn

    anhim,tin trnh v lung

    Lp trnh a tuyn

  • 8/3/2019 giaotrinhJava1234

    229/352

    Xl alung trong JavaMcu tin calung

    Vn ng b ho v bi ton tc

    nghn

    Tin trnh, a nhim va lung Tin trnh : l mt chng trnh chy trn h iu

    hnh v cqun l thng qua cc th

  • 8/3/2019 giaotrinhJava1234

    230/352

    Tiu trnh : l mtnvx l cbncahthng.Mttin trnh shunhiutiu trnh

    nnhim : timtthiimch c mttin trnh

    anhim: cng mt thiim c nhiuhnmttin trnh thc hin ng thi trn cng mt mytnh. C hai kthutanhim:

    + anhimda trn cc tin trnh+ anhimda trn cclung

    Tin trnh, a nhim va lung Mt tin trnh c th bao gm nhiu lung.

    Cc lungcamttin trnh c thchiasvi

  • 8/3/2019 giaotrinhJava1234

    231/352

    gnhau vkhng gian achchngtrnh, ccon d liu v mi trngx l, ng thicngc vng dliu ring thao tc.

    Trong mi trngnlung,mithiimch cho php mt tc vthc thi.

    K thut a nhim cho php tn dng cnhng thi gian ri ca CPU thc hinnhng tc v khc.

    anhim c ththchinc theo hai cch:+ Phthuc vo hiu hnh, n c th cho

  • 8/3/2019 giaotrinhJava1234

    232/352

    tm ngng chng trnh m khng cn thamkho cc chng trnh .

    + Cc chng trnh chbdngli khi chng

    tnguynnhngiukhin cho chng trnhkhc. Nhiuhiu hnh hin nay htralung,

    Java h tr a nhim da trn cc lung vcung cp cc c tnh mc cao cho lp trnhalung.

    a lung (a tuyn)

  • 8/3/2019 giaotrinhJava1234

    233/352

    L khnng lm vicvinhiulung

    a lung chuyn s dng cho victhc thi nhiu cng vicngthi

    a lung gim thi gian ri ca hthngnmcthpnht.

    To v qun l lung Khi chng trnh Java thc thi hm

  • 8/3/2019 giaotrinhJava1234

    234/352

    main() tc l lung main cthc thi.Tuyn ny c to ra mt cch tng,tiy :

    - Cc lung con scto ra t

    - N l lungcui cng kt thc victhcthi. Ngay khi lung main() ngngthc thi,chng trnh bchmdt

    Phn chia thi gian gia cc lung

  • 8/3/2019 giaotrinhJava1234

    235/352

    CPU thc thi chmtlungtimtthiimnhtnh.

    Cc lung c u tin bng nhau th

    c phn chia thi gian sdngb vix l.

    Lp trnh a lung Java Vi Java ta c th xy dng cc chng trnh a

    lung

  • 8/3/2019 giaotrinhJava1234

    236/352

    Mt ng dng c th bao gm nhiu lung,milungcgn cng viccth v cthc thingthivi cc lung khc

    Java cung cp hai gii php tolplung:1. Thitlplp con ca Thread2. Ci tlpxl lungtgiao din Runnable.

    Lp trnh a lung Java Cch thnht: To ra mtlpkthatlp Thread v ghi

    phngthc run calp Thread nhsau:class MyClass extends Thread

  • 8/3/2019 giaotrinhJava1234

    237/352

    {//Mtsthuc tnhpublic void run()

    {// Cc lnhcnthchin theo lung}

    //Mts hm khc cvit hay cb sung}

    Khi chng trnh chy n s gi mt hm c bit c

    khai bo trong Thread l start()btumt lungcto ra.

    Lp trnh a lung JavaCch thhai:

    + Java giiquythnch trnbng cch xy dnglpto racc lungthchin trn csci t giao dinhtrlung.

  • 8/3/2019 giaotrinhJava1234

    238/352

    + To ra mt lp trin khai t giao din Runnable, ci tphngthc runclass MyClass implements Runnable

    {

    // Cc thuc tnh//Npchng hay vitmts hmpublic void run()

    {

    . . .

    }}

    Trng thi v cc phng thcca lp Thread

  • 8/3/2019 giaotrinhJava1234

    239/352

    Trng thi: born

    ready to run

    running

    sleeping

    waiting

    ready

    blocked dead

    Phng thc: start( )

    sleep( )

    wait( ) notify( )

    run( )

    stop( )

    Cc trng thi ca ThreadMtlung c thmt trong cc trng thi sau:

    + New: Khi mt lung mi c to ra vi ton tnew()v sn sng hotng.

  • 8/3/2019 giaotrinhJava1234

    240/352

    g+ Runnable: Trng thi m lungangchim CPU

    thc hin, khi bt u th n gi hm start(). B lp lchphn lung ca h iu hnh s quyt nh lung no scchuynvtrng thi Runnablev hotng.Cngcn

    lu rngmtthiim,mtlungtrng thi Runnablec thhoc khng ththchin.+ Non runnable (blocked): T trng thi runnable

    chuyn sang trng thi ngngthchin(bchn) khi gi

    mt trong cc hm: sleep(),

    suspend(),

    wait(), hay

    bchn

    liInput/output. Trong trng thibchn c ba trng thicon:

    yield

    sleep

  • 8/3/2019 giaotrinhJava1234

    241/352

    Blocked

    stop

    B chn bi I/O

    resume

    suspendstart

    Runnablenotify

    wait

    Kt thc I/O

    Cc trng thi ca ThreadMtlung c thmt trong cc trng thi sau:

    + Waiting: khi trng thi Runnable, mt

  • 8/3/2019 giaotrinhJava1234

    242/352

    lung thc hin hm wait() th n s chuyn sangtrng thi chi (Waiting).

    + Sleeping: khi trng thi Runnable, mt

    lung thchin hm sleep() th n schuyn sangtrng thi ng (Sleeping).

    + Blocked: khi trng thi Runnable, mtlungbchnlibinhng yu cuv ti nguyn,

    nh yu cu vo/ra (I/O), th n s chuyn sangtrngbchn (Blocked).

    Cc trng thi ca ThreadMi lungphi thot ra khi trng thi Blocked quay vtrng thi Runnable, khi

    + Nu mt lung c cho i ng (sleep) sau

  • 8/3/2019 giaotrinhJava1234

    243/352

    khong thi gian bng s micro giy n c truyn votham sca hm sleep(n).

    + Numtlungbchnli v vo/ra v qu trnh nykt thc.

    +Nulungbchnli khi gi hm wait(), sau cthng bo tiptcbng cch gi hm notify() hoc notifyAll().+ Nu mt lungb chn li ch monitor ca i

    tngangbchimgibilung khc, khi monitor cgii phng th lungbchn ny c thtiptcthchin (khi

    nim monitor ccpphn sau).

    Cc trng thi ca Thread+Numtlungbchnlibiligi hm suspend(),

    munthchin th trcphigi hm resume().

  • 8/3/2019 giaotrinhJava1234

    244/352

    + Hm suspend() c tc dngtmngngtuyn, t cdng do khng nh ti nguyn ca h thng, d dn ndeaklock.

    Nu ta gi cc hm khng ph hpivi cc lung th JVMs pht sinh ra ngoil IllegalThreadStateException.

    + Dead: Lungchuyn sang trng thi cht khi n ktthc hotng bnh thng,hocgpphingoil khng thchintipc. Trong trnghpcbit,bn c thgi hmstop() kt thc (gitcht)mtlung.

    Mc u tin ca cc lung Trong Java, milung c mtmcu tin thchinnhtnh. Khi chng trnh chnh thchinsto ra lung chnh, lung cha.

    Lung ny sto ra cc lung con, v cthtiptc.

  • 8/3/2019 giaotrinhJava1234

    245/352

    Theo mcnh,mtlungskthamcu tin calung chaca n. Bn c th tng hay gim mc u tin ca lungbngcch sdng hm setPriority().

    Mc u tin ca cc lung c th t li trong khong tMIN_PRIORITY(Trong lp Thread c mc nh bng 1) vMAX_PRIORITY (mc nh bng 10), hoc NORM_PRIORITY(mc nh l 5).

    Lung c mcu tin cao nhttiptcthchin cho n khi:+ N nhngquyniukhin cho lung khcbng cch gi hm yield()+ N dngthchin(bdeadhocchuyn sang trng thibchn).

    c mtlungvimcu tin cao hn vo trng thiRunnable.

    Mc u tin ca cc lung Vnny sinh l chnlung no thchin khi c nhiuhn

    mt lung sn sng thc hin v c cng mt mc u tin caonht? Ni chung, mtscssdngblplch lachnngu

  • 8/3/2019 giaotrinhJava1234

    246/352

    nhin, hoclachn chng thchin theo thtxuthin.Vd:

    Chng ta hy xt chng trnh hinth cc qu bng mu xanhhocny(chuyn) theo nhngngnhtnh.

    Mi khi nhn nt Blueball th c 5 lung c to ra vimcu tin thng thng (mc 5) hin th v di chuyn ccqu bng xanh.

    Khi nhn nt Redball th cng c 5 lungc to ra vimcu tin (mc 7) cao hnmc thng thnghinth v dichuyn cc qu bng .

    kt thc tr chibnnhn nt Close.

    Mc u tin ca cc lungimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class Bounce{

  • 8/3/2019 giaotrinhJava1234

    247/352

    public static void main(String arg[]){JFrame fr = new BounceFrame();fr.show();

    }}class BounceFrame extends JFrame{

    public BounceFrame(){setSize(300, 200);setTitle("Bong chuyen");addWindowListener(new WindowAdapter(){

    public void windowClosing(WindowEvent e){

    System.exit(0);}});

    Mc u tin ca cc lungContainer contentPane = getContentPane();canvas = new JPanel();contentPane.add(canvas, "Center");JPanel p = new JPanel();

  • 8/3/2019 giaotrinhJava1234

    248/352

    addButton(p, "Blue ball", new ActionListener(){public void actionPerformed(ActionEvent evt){for(int i = 0; i < 5; i++){

    Ball b = new Ball(canvas, Color.blue);b.setPriority(Thread.NORM_PRIORITY);b.start(); }

    }});addButton(p, "Red ball", new ActionListener(){

    public void actionPerformed(ActionEvent evt){for(int i = 0; i < 5; i++){

    Ball b = new Ball(canvas, Color.red);b.setPriority(Thread.NORM_PRIORITY + 2);b.start();

    }}

    });

    Mc u tin ca cc lungaddButton(p, "Close", new ActionListener(){public void actionPerformed(ActionEvent evt){

    canvas.setVisible(false);System.exit(0);

  • 8/3/2019 giaotrinhJava1234

    249/352

    }});contentPane.add(p, "South");}public void addButton(Container c, String title, ActionListener a){

    JButton b = new JButton(title);c.add(b);b.addActionListener(a);

    }private JPanel canvas;

    }

    Mc u tin ca cc lungclass Ball extends Thread{public Ball(JPanel b, Color c){

    box = b; color = c;}public void draw(){

  • 8/3/2019 giaotrinhJava1234

    250/352

    Graphics g = box.getGraphics(); g.setColor(color);g.fillOval(x, y, XSIZE, YSIZE); g.dispose();

    }public void move(){

    if(!box.isVisible()) return;Graphics g = box.getGraphics();

    g.setXORMode(box.getBackground()); g.setColor(color);g.fillOval(x, y, XSIZE, YSIZE);x += dx; y += dy;Dimension d = box.getSize();if(x < 0){

    x = 0; dx = -dx;

    }if(x + XSIZE >= d.width){x = d.width - XSIZE; dx = -dx;

    }if(y < 0){

    y = 0; dy = -dy; }

    Mc u tin ca cc lungif(y + YSIZE >= d.height){y = d.height - YSIZE; dy = -dy;

    }g.fillOval(x, y, XSIZE, YSIZE);g.dispose();

  • 8/3/2019 giaotrinhJava1234

    251/352

    }public void run(){

    try{for(int i = 1; i

  • 8/3/2019 giaotrinhJava1234

    252/352

    Chychng trnh trn chng ta nhnthy hnh nhnhngqu bng ny nhanhhn v cc lungthchin chng c mcu tin cao hn.

    Lu : Cc lung c mcu tin thphns khng c chithchinnunhnglungcao hn khng nhng, hocnhngbng hm yield(). Nu c nhng lung

    angtrng thi Runnable m c mcu tin t nhtbngmcu tin calungvanhng th mt trong s chng cxplchthchin.+ Blplchthng xuyn tnh limcu tin ca cc lungangthchin+ Tm lung c mcu tin cao nhtthchin.

  • 8/3/2019 giaotrinhJava1234

    253/352

    S ng b

    Khi hi t ti d

  • 8/3/2019 giaotrinhJava1234

    254/352

    Khi nhiu tuyn truy cp ti nguyn dngchung

    Ti nguyn khng th chia x, khi ti

    nguyn c thb ph hngVd : Mt lungcd liu, trong khi lung

    khc li thay i

    Cn cho php mt lung hon thnh tc vca n, ri cho php lungktipthc thi

    S ng b

    Th ti /

  • 8/3/2019 giaotrinhJava1234

    255/352

    Thm nhp cc ti nguyn/d liubinhiutuyn

    Sngb (Synchronization)

    S quan st (Monitor)

    S ng b thm nhp s quan st ca mt i

    tng, lp trnh vin s dng t khasynchronized khi khai bo phngthc.

  • 8/3/2019 giaotrinhJava1234

    256/352

    Mi mt i tng s c mt b qun lkha, ch cho mt phng thcsynchronized ca i tng chy ti

    mtthiim Khi mt tuyn ang c thc thi trong

    phm vi mt phng thc ng b(synchronized), bt k tuyn khc hocphngthcngb khc m cgnggin trong thi gian sphii

    ng b ho Cc lung chia svi nhau cng mt khng gian

    bnh,ngha l chng c th chia svi nhau cc

    i

  • 8/3/2019 giaotrinhJava1234

    257/352

    ti nguyn. Khi c nhiuhnmt lung cng munsdng

    mt ti nguyn sxuthin tnh trngcngthng,ch cho php mtlungcquyn truy cp.

    cho cc lung chia s vi nhau c cc tinguyn v hotnghiuqu, lun mbonhtqun dliu thphi c cchngb chng.

    ng b ho Muchtcasngb l khi nimmonitor

    (gim st) hay cn gi l semaphore(chiu)

    Khi i h h d

  • 8/3/2019 giaotrinhJava1234

    258/352

    Khi nimsemaphore thngcsdngiu khin ngb cc hot ng truy cp vonhng ti nguyn dng chung.

    Mt lung mun truy cp vo mt ti nguyndng chung (nhbin d liu) th trc tin n

    phi yu cu c c monitorring.

    Khi c c monitor th lungnh c cchakhomca vo mintranhchpsdngnhng ti nguyn .

    ng b ho Cch monitorthchin hai nguyn tcngb chnh:

    + Khng mt lung no khc c phn monitor khi cmt lung

    cu

    ang chim gi Nhng lung

    i hi h h khi i ii h

  • 8/3/2019 giaotrinhJava1234

    259/352

    yu v . c yucu monitorsphichcho n khi monitor cgii phng.

    + Khi c mtlunggii phng (ra khi) monitor,mtlungang ch monitor c th truy cp vo ti nguyn dng chungtngngvi monitor .

    Miitng trong Java u c monitor, miitng c thcsdngnhmt kho loitr nhau, cung cpkhnngngb truy cp vo nhng ti nguyn chia s.

    Trong lp trnh c hai cch thchinngb:

    + Cc hm cngb

    + Cc khicngb

    ng b hoCc hm ngb Hm ca mt lp ch cho php mt lung c thc

    hi hi i h hi kh i b h i d

  • 8/3/2019 giaotrinhJava1234

    260/352

    hinmtthiim th nphi khai bo synchronized,cgi l hm ngb. Mtlungmunthchin hm ngb th nphich

    c c monitor caitng c hm .

    Trong khi mtlungangthchin hm ngb th ttc cc lung khc mun thc hin hm ny ca cngmtitng,uphichcho n khi lungthchin xong v cgii phng.

    Bng cch ,nhng hm cngbs khng baogibtcnghn.

    ng b hoCc hm ngb Nhng hm khng cngbcaitng c th

    i th hi i l bi bt k i t

  • 8/3/2019 giaotrinhJava1234

    261/352

    cgithchinmi lcbibtkitng no. Khi chy,chng trnh s thi hnh tunt cc lnh cho

    n khi kt thc chng trnh. Trong Java, hm ngb c th khai bo static. Cc lp

    cng c th c cc monitor tngtnhivi cc itng.

    Mtlung yu cu monitor calptrc khi n c ththchinvi mt hm cngb tnh (static) no

    trong lp,ngthi cc lung khc munthchinnhng hm nhthca cng mtlp thbchnli.

    ng b haVd: Hthng ngn hng c 10 ti khon, trong c cc giao

    dch chuyn tin gia cc ti khon vi nhau mt cch ngunhin. Chng trnh to ra 10 lung cho 10 ti khon. Mi giao

    d h t l h h t l ti

  • 8/3/2019 giaotrinhJava1234

    262/352

    dch c mt lungphc v s chuyn mt lng tin ngunhin tmt ti khon sang ti khon khc.Nuchng trnh thchinvi 10 lunghotng khng ng

    bchuyntingia cc ti khon trong ngn hng. Vnsny sinh khi c hai lungngthimunchuyntin

    vo cng mt ti khon. Gis hai lung cng thchin:accounts[to] += amount;

    Cu lnh ny cthchinnh sau:1. Np accounts[to] vo thanh ghi.2. Cngstin trong ti khon accounts vi amount3. Luliktqu cho accounts[to].

    ng b haChng ta c thgi thit lung thnht thchinbc 1 v 2vi amount = 500, sau nbngt. Lungth hai c ththchintrnvnc babc trn vi amount = 1000, sau lung

    th ht kt th i ht b h th hi t b 3

  • 8/3/2019 giaotrinhJava1234

    263/352

    263

    thnhtkt thc viccpnhtbng cch thchinntbc 3.Qu trnh ny c m tnhhnh sau :Lung 1 Lung 2 accounts[to]

    Thanh ghi 1 Thanh ghi 2

    NpCng NpCng

    Luli LuliKt thc lungthnht,accounts[to]c 6000, nhng ngay sau lungth hai kt thc th cng chnh ti khon cha chuyn tin i u c,nhnglich cn 5500. ng ra nphi l 6500

    5000

    5500

    5500

    5000

    6000

    6000

    5000

    5000

    5000

    5000

    6000

    5500

    ng b haJavasdngcchngb kh hiuqu l monitor. Mthm s khngbngtnubn khai bo n l synchronized.public synchronized void transfer(int from, int to, int

    amount){if(accounts[from] < amount) return;

  • 8/3/2019 giaotrinhJava1234

    264/352

    if(accounts[from] < amount) return;accounts[from] -= amount;accounts[to] += amount;numTransacts++;if(numTransacts % NTEST == 0) test();

    }public synchronized void test(){

    int sum = 0;for(int i = 0; i < accounts.length; i++)

    sum += accounts[i];

    System.out.println("Giao dich: " + numTransacts+ " tong so: " + sum);

    }

    ng b haKhi c mtlunggi hm cngb th n cmborng hm ny

    phi thchin xong th lung khc micsdngivi cng mtitng.

    Hot ng ca cc lung khng ng b v ng b ca hai lung thc hin

  • 8/3/2019 giaotrinhJava1234

    265/352

    Hotngca cc lung khng ngb v ngbca hai lungthchingi hm transfer()

    Khng cngb cngb

    Thread 1 Thread 2 Thread 1 Thread 2

    transfer() transfer()

    transfer()

    transfer()

    Cc kho i tngKhi mt lunggimt hm cngb th i

    tngca nbkho,gingnh kho ca phng.

    Nh khi t l kh i h

  • 8/3/2019 giaotrinhJava1234

    266/352

    Nhvy, khi mt lung khc mungi hm cngb ca cng i tng th s khng mc.

    Sau khi thc hin xong, lung bn trong gii

    phng hm cngbvasdng, ra khiitng v a cha kho ra ngoibccanhnglung khc c thtiptc cng vicca mnh.

    Cc kho i tng Mtlung c thginhiu kho itngcng mtthiim,

    nhtrong khi angthchinmtligi hm ngbcamtitng, n ligitip hm ngbcaitng khc.

    Nhng ti mi thi im mi kho i tng ch c mt lung h

  • 8/3/2019 giaotrinhJava1234

    267/352

    Nhng,timithiim,mi kho itngchcmtlungshu.Chng ta hy phn tch chi tithnhotngcahthng ngnhng. Mt giao dch chuyn tin s khng thc hin c nukhng cn tin. N phichcho n cc ti khon khc chuyn

    tinn v khi c th mithchinc giao dch.public synchronized void transfer(int from, int to, int amount){while(accounts[from] < amount)

    wait();//Chuyntin

    }

  • 8/3/2019 giaotrinhJava1234

    268/352

    Cc kho i tngNhng lunga ra khi danh sch hng i scb lp lch kchhot chng. Ngay tckhclung no chimc kho itng th sbtuthchin. Nhvy, trong hm transfer() chng ta gi notifyAll()khi kt thc vicchuyntinmt trong cc lung c thctiptc

    thc hin v trnh b tc.

  • 8/3/2019 giaotrinhJava1234

    269/352

    thchin v trnh btc.Cui cng chng trnh sdngcchngbcvitlinh sau.public class SynBankTransfer{

    public static void main(String arg[]){Bank b = new Bank(NACCOUNTS, INI_BALANCE);

    for(int i = 0; i < NACCOUNTS; i++){TransferThread t = new TransferThread(b, i, INI_BALANCE);t.setPriority(Thread.NORM_PRIORITY + i % 2);t.start();

    }

    }public static final int NACCOUNTS = 10;public static final int INI_BALANCE = 10000;

    }

    Cc kho i tngclass Bank{

    public static final int NTEST = 1000;private int[] accounts;private long numTransacts = 0;public Bank(int n int initBalance){

  • 8/3/2019 giaotrinhJava1234

    270/352

    public Bank(int n, int initBalance){accounts = new int[n];for(int i = 0; i < accounts.length; i++)

    accounts[i] = initBalance;numTransacts = 0;

    }public void transfer(int from, int to, int amount){

    while(accounts[from] < amount) wait();accounts[from] -= amount;accounts[to] += amount;

    numTransacts++;notifyAll();if(numTransacts % NTEST == 0) test();

    }

    Cc kho i tngpublic synchronized void test(){int sum = 0;for(int i = 0; i < accounts.length; i++)

    sum += accounts[i];

    System out println("Giao dich: " + numTransacts + " tong so: " + sum);

  • 8/3/2019 giaotrinhJava1234

    271/352

    System.out.println( Giao dich: + numTransacts + tong so: + sum);}

    public int size(){return accounts.length;

    }}class TransferThread extends Thread{

    private Bank bank;private int fromAcc;private int maxAmount;

    public TransferThread(Bank b, int from, int max){bank = b;fromAcc = from; maxAmount = max;

    }

    Cc kho i tngpublic void run(){

    try{

    while(!interrupted()){

    int toAcc = (int)(bank.size() * Math.random());

  • 8/3/2019 giaotrinhJava1234

    272/352

    int toAcc (int)(bank.size() Math.random());int amount = (int)(maxAmount * Math.random());

    bank.transfer(fromAcc, toAcc, amount);

    sleep(1);

    }

    }catch(InterruptedException e){}

    }

    }

    Nubn chy chng trnh vi cc hm transfer(), test() cngb th

    mivicsthchin chnh xc ng theo yu cu. Tuy nhin, bncng cthnhnthychng trnh schychmhn cht tbi vphitr gi cho cchngbnhmmbo cho hthnghotng chnh xc, mbonhtqun dliu,hoc trnh gy ra tcnghn.

    Deadlock

    Mt deadlock xy ra khi hai tuyn c

  • 8/3/2019 giaotrinhJava1234

    273/352

    Mt deadlock xy ra khi hai tuyn cmtphthuc vng quanh trn mtcpitngngb

    Vn cht tcC ch ng b trong Java l rt tin li, kh mnh,

    nhng khng giiquytcmivnny sinh trong qutrnh xl alung.

    V d : Account 1 c 2000$ Account 2 c 3000$ v Thread 1

  • 8/3/2019 giaotrinhJava1234

    274/352

    Vd : Account 1 c 2000$, Account 2 c 3000$ v Thread 1cn chuyn 3000$ t Account 1 sang Account 2, ngc liThread 2 cnchuyn 3500$ tAccount 2 sang Account 1.

    Khi , Thread 1 v Thread 2 ri vo tnh trng cht

    tc,hoctcnghn v chng chnln nhau.Mththngm ttc cc lung(tin trnh) bchnli

    chln nhau v khng mtlung(tin trnh) no thchintipth cgil hthngbchttc(tcnghn).

    Trong tnh hungtrn,c hai lunguphigi wait()xl hai ti khonu khng stinchuyn.

    Vn cht tcTrong chng trnh SynBankTransfer.java, hin

    tngtcnghn khng xuthinbimt l do ngin. Migiao dchchuyntinnhiunht l 10000$.

    C 10 ti khon vi tng s tin l 100000$ Do mi

  • 8/3/2019 giaotrinhJava1234

    275/352

    C 10 ti khonvitngstin l 100000$. Do ,mithiimu c t nhtmt ti khon c khng t hn 10000$,ngha l lungph trch ti khonc php thchin.

    Tuy nhin, khi lp trnh ta c th gy ra tnh hung khcc th lm xuthintcnghn

    Vn cht tcVd :Trong SynBankTransfer.java thay v gi

    notifyAll() ta ginotify().

    Nh trn phn tch notifyAll() thng bo cho

  • 8/3/2019 giaotrinhJava1234

    276/352

    Nh trn phn tch, notifyAll() thng bo chottc cc lungangch c tinchuyni c thtiptcthchin, cn notify()ch bo cho mtlungctiptc.

    Khi ,nulungc thng bo li khng ththchin,v khng tin chuyn chng hn, th tt c cc lungkhc cngsbchnli.

    Vn cht tc Chng ta hy xt kchbn sau:

    +Account 1: 19000$

    + Ttc ccAccount cn liu c 9000$

    + Thread 1: chuyn 9500$ tAccount 1 sangAccount 2

    + Ttlung khc uchuyn sang ti khon khc mtlngtin l 9100$.

  • 8/3/2019 giaotrinhJava1234

    277/352

    g y gCh c Thread1tinchuyn cn cc lung khc bchnli. Thread1thchin

    chuyntin xong ta c:+Account 1: 9500$

    +Account 2: 18500$

    + Ttc ccAccount cn liu c 9000$

    GisThread 1ginotify(). Hm ny ch thng bo cho mtlungngu nhin n c th tip tc thchin. Gis l Thread3. Nhng lung ny cng khng chuync v khng tinti khonAccount3, nn phich(giwait()). Thread 1vntiptcthchin. Mt giao dchmingu nhin licto ra. Vd

    Thread 1: chuyn 9600$ tAccount1 sangAccount 2.

    By giThreadligiwait(), v nhvyttc cc lunguri vo tnh trngtcnghn.

    Qua vd trn cho thy,mtngn nglp trnh c cchhtrngb l chagiiquytvntcnghn. Quan trng l khi thitkchng trnh, ta phimborngmithiim c t nhtmtlung(tin trnh) tiptcthchin.

    Phngthc finalize()

    Java cung cp mt cch lm sch mt tintrnh trc khi iu khin tr li h iu hnh

  • 8/3/2019 giaotrinhJava1234

    278/352

    Java cung cpmt cch lm schmttintrnh trc khi iukhintrlihiu hnh Phng thc finalize(), nu hin din, s

    c thc thi trn mi i tng, trc khi

    sdn rc Cu lnhcaphngthc finalize() nh sau: protected void finalize( ) throws Throwable

    Tham chiu khng phi l sdn rc; ch ccitngmicdn rc

    Ch VIII

  • 8/3/2019 giaotrinhJava1234

    279/352

    Chng VIII

    Cc lung I/O

    Cc lung

    Cc lung l nhng ng ng gi v

  • 8/3/2019 giaotrinhJava1234

    280/352

    Cc lung l nhng ng ng gi vnhn thng tin trong cc chng trnh java.

    Khi mt lungchoc ghi, cc lung khc

    b kho. Nu li xy ra trong khi choc ghi lung,

    mtbitlscto ra.

    Lpjava.lang.Systemnhnghalungnhpv xutchun.

    Cc lplung I/O

    Lp System out

  • 8/3/2019 giaotrinhJava1234

    281/352

    Lp System.out.

    Lp System.in.

    Lp System.err.

    Cc lp lung I/O

    x l mi loid liu, java chia lung

    thnh 2 loi : lung byte ( byte stream) vl k t ( h t t )

  • 8/3/2019 giaotrinhJava1234

    282/352

    thnh 2 loi : lung byte ( byte stream) vlung k t (character stream) Lp InputStream v OutputStream l hai

    lp c s cho mi lung nhp xut hngbyte

    Lp Reader/ Writer hai lpc scho vicc ghi hng k t

    Lp nhp xut hng k t Reader v Writer l hai lpcstrutng

    cho lung hng k t

  • 8/3/2019 giaotrinhJava1234

    283/352

    cho lunghng k t Cung cp mt giao din chung cho tt c

    cc lpc ghi hng k t

    Mi ln c/ghi ra lung th c 2 bytetngngvimt k t

    M hnh phn cp c/ghi hng k t

  • 8/3/2019 giaotrinhJava1234

    284/352

    Lp Reader

    Lp Reader v InputStream c mt giao din

  • 8/3/2019 giaotrinhJava1234

    285/352

    Lp Reader v InputStream c mt giao dinging nhau, chng ch khc nhau v kiu d liuu vo

    Lp Reader c cc phng thc c mt k t

    hoc mng cc k t Cc phng thc: int read()

    int read(char cbuf[])

    int read(char cbuf[], int offset, int length)

    Lp Writer

    Lp Writer v OutputStream c mt giao

    din ging nhau chng ch khc nhau v

  • 8/3/2019 giaotrinhJava1234

    286/352

    din ging nhau, chng ch khc nhau vkiudliuu vo

    Lp Writer nhngha cc phng thc

    ghi mt k thocmng cc k t ra lung Cc phngthc:int write(int c)

    int write(char cbuf[])int write(char cbuf[], int offset, int length)

    Lp Writer

    H tr cc phng thc sau :

  • 8/3/2019 giaotrinhJava1234

    287/352

    Htr cc phngthc sau : flush( )

    close( )

    Nhp/xut chui v mng kt

    H tr nhp v xut t cc vng m

  • 8/3/2019 giaotrinhJava1234

    288/352

    H trnhp v xut t cc vng mbnh

    Htr 8 bt k tnhp v ktxut

    Lp CharArrayReader khng b sungphng thc mi vo cc phng

    thc m lpReader cung cp.

    Nhp/xut chui v mng k t

    Lp CharArrayWriter b sung phng

  • 8/3/2019 giaotrinhJava1234

    289/352

    Lp CharArrayWriter b sung phngthc sau y vo phngthccalpWriter cung cp:

    reset( ) size( )

    toCharArray( )

    toString( )

    writeTo( )

    Nhp/xut chui v mng k t

    LpStringReadertr gip c cc k tu t h i

  • 8/3/2019 giaotrinhJava1234

    290/352

    Lp StringReader tr g p c t uvo t su chui.

    N khng b sung bt k phng thc nom lp Reader cung cp.

    Lp StringWriter tr gip ghi lung ktxut k t ra mtitngStringBuffer.

    Lp ny b sung thm cc phngthc sau: getBuffer( )

    toString( )

    Lp hng byte

    c thc ghi 1 byte, ta sdng lung

    hng byte

  • 8/3/2019 giaotrinhJava1234

    291/352

    hng byte Hai lp InputStream v OutputStream l hai

    lp c s tru tng cho cc lunghng

    byte Mi ln c/ghi ra lung th c 8 bits ra

    lung

    M hnh phn cp c/ghi hng byte

  • 8/3/2019 giaotrinhJava1234

    292/352

    Lp InputStream L lptrutng nhngha cch nhnd liu

    Cung cp s phng thc dng

  • 8/3/2019 giaotrinhJava1234

    293/352

    g cp s phng thc g c v cc lungdliu lm u vo.

    Trong lp InputStream c cc phng thc

    cho vic c mt byte hoc mng cc byte Cc phngthc: int read()

    int read(byte cbuf[])

    int read(byte cbuf[], int offset, int length)

    Lp OutputStream

    L lptrutng. h h h hi d li l

  • 8/3/2019 giaotrinhJava1234

    294/352

    p g nhngha cch ghi dliu vo lung. Cung cp tp cc phng thc tr gip

    trong victo, ghi v x l cc lungxut.

    Lp OutputStream c cc phng thc ghimt byte hoc mng cc byte ra lung

    Cc phng thc: write(int c)

    write(byte cbuf[ ])

    write(byte[ ], int offset, int length)

    Nhp mng cc Byte

    Sdng cc mbnh

  • 8/3/2019 giaotrinhJava1234

    295/352

    S dng m b nh LpByteArrayInputStream

    To ra mt lungnhptmbnh

    vmng cc byte. Khng htr cc phngthcmi

    Cc phng thc np chng ca lp

    InputStream, ging nh read(), skip(),available() v reset().

    Xut mng cc Byte

    sdng cc vng mbnh

  • 8/3/2019 giaotrinhJava1234

    296/352

    s dng g m b nh Lp ByteArrayOutputStream

    To ra mtlungktxut trn mng byte

    Cung cp cc kh nng b sung chomng kt xut tng trng nhm chachcho dliumi ghi vo.

    Cng cung cp cc phng thc

    chuyn i lung ti mng byte, hay itng String.

    Phng thc ca lp

    ByteArrayOutputStream :reset( )

  • 8/3/2019 giaotrinhJava1234

    297/352

    y y p reset( )

    size( )

    writeTo( )

    Cc lp nhp/xut tp tin Cc lp ny tr gip trong Java h tr

    cc thao tc nhp v xut: File

  • 8/3/2019 giaotrinhJava1234

    298/352

    p FileDescriptor FileInputStream FileOutputStream FileReader FileWriter

    Cc lp File, FileDescriptor, vRandomAccessFile c s dng h tr

    trc tip hoc truy cp nhp/xut ngunhin.

    Lptp tin

    csdng truy cp cc itngtp tinv th mc

  • 8/3/2019 giaotrinhJava1234

    299/352

    g p g pv thmc

    Nhng tp tin c tn ct tn theo quiccahiu hnh.

    Lp ny cung cpphngthckhitoto ra cc thmc v tp tin

    Ttc cc thao tc thmc v tp tin ucsdng cc phngthc truy cp vcc phngthcthmc m cc lptp tincung cp

    Lptp tin

    x l tp tin ngoi tr, ta s dng ccl li t ti h

  • 8/3/2019 giaotrinhJava1234

    300/352

    p g , glung lin quan n tp tin nh :FileInputStream, FileOutputStream,FileReader, FileWriter

    FileInputStream v FileOutputStream phcv cho vicc ghi tp tin hng Byte

    FileReader v FileWriter phcv cho vic

    c ghi tp tin hng k t

    Cc hm to ca cc lp tng ng lin ktlung vi mt tp tin c th

    public void FileInputStream ( String FileName)

  • 8/3/2019 giaotrinhJava1234

    301/352

    p ( g ) public void FileInputStream ( File file)

    public void FileOutputStream ( String FileName)

    public void FileOutputStream (File file) public void FileWriter ( String FileName)

    public void FileWriter (File file)

    public void FileReader ( String FileName) public void FileReader (File file)

    Nhp / xut lc Lc:

    vcbncsdng thch ng cc

    lung theo cc nhu cucachng trnhth

  • 8/3/2019 giaotrinhJava1234

    302/352

    g gcth.

    B lc nm gia lung nhp v lung

    xut. Thc hin mt s tin trnh c bit trn

    cc byte c chuyn giao t u vonktxut.

    C thphihpthchinmt dy cctuchnlc.

    Lp FilterInputStream

    L lptrutng.L h tt l l h l

  • 8/3/2019 giaotrinhJava1234

    303/352

    g L cha cattc cc lplungnhplc. Cung cp kh nng to ra mt lung t

    lung khc.

    Mt lung c th c v cung cp didngktxut cho lung khc.

    Duy tr mt dy cc i tng ca lp

    InputStream Cho php to ra nhiublckt xch

    Lp FilterOutputStream

    L dngbtr cho lpFilterInputStream.L cha ca tt c cc lp l ng kt t

  • 8/3/2019 giaotrinhJava1234

    304/352

    L cha cattc cc lplungktxut. Duy tr i tng ca lp OutputStream

    nh l mtbinout. Dliu ghi ra lp ny c thsaithc

    hin cc thao tc lc, v sau phnhinitngOutputStream.

    Vng mnhp/xut

    V cc thao tc vicng,mngthng lu hn so

    vi thao tc bnh trong K thut s dng vng m nhm tng tc

  • 8/3/2019 giaotrinhJava1234

    305/352

    K thut s dng vng m nhm tng tc c/ghi

    Vikthut vng msgimcslnc/ghilung

    Trong Java ta c thto ra vng mca cc lp :

    BufferInputStreamBufferOutputStreamBufferReaderBufferWriter

    Vng mnhp/xut

    Vng m:

    L kho lutrdliu.C th cung cp d liu thay v quay tr li ngun

  • 8/3/2019 giaotrinhJava1234

    306/352

    C th cung cpdliu thay v quay trlingundliugc ban u.

    Java sdng vng mnhp v ktxuttm

    thilp cache dliucchoc ghi vo mtlung. Trong khi thchin vng mnhp:

    S lng by