711
 

Java.Промышленное программирование

Embed Size (px)

Citation preview

  • .. , ..

    Java .

    2007

  • 004.434 32.973.26-018.2

    69

    :

    , - .. ,

    , . , - ..

    :

    , - .. , , ..

    , ..

    69 Java. : . / .. , .. . : , 2007. 704 .

    ISBN 978-985-6699-63-7

    , - Java SE 6 J2EE. Java - . Java, , , - , L. - , JSP, .

    -. , HTML, XML, JavaScript, Struts Hibernate , J2EE XML.

    004.434

    32.973.26-018.2

    .., .., 2007

    ISBN 978-985-6699-63-7 . , 2007

  • ............................................................................................................... 10

    1. JAVA

    1. ................................................. 11

    2. ........................................................ 27

    3. .................................................................................................. 50

    4. .............................................. 78

    5. ......................................................... 105

    6. ...................................... 139

    2.

    7. ............................................................................. 160

    8. ............................................................... 190

    9. . / ................................................ 205

    10. ......................................................................................... 229

    11. ........................ 259

    12. .............................................................................................. 275

    13. ............................. 287

    14. ................................................................... 328

    15. .................................................................... 350

    16. XML & JAVA ......................................................................................... 364

    3. WEB-

    17. JSP ........................................................ 414

    18. ............................................................................................ 426

    19. JAVA SERVER PAGES ......................................................................... 446

    20. JDBC ....................................................................................................... 479

    21. C, .................................................... 504

    22. ............................................................. 523

    ....................................................................................... 536

    1. TML ............................................................................................. 552

    2. JavaScript ........................................................................................ 574

    3. UML ............................................................................................... 599

    4. SQL .............................................................. 608

    5. Hibernate ............................................................................................. 625

    6. Struts ............................................................................................... 645

    7. (Logger) ........................................................ 667

    8. Apache Ant ..................................................................................... 676

    9. ....................................................................................... 690

    ............................................... 703

  • ............................................................................................................... 10

    1. JAVA

    1. ............................................. 11 ................................................................... 11 Java ........................................................................................... 14 5.0 6.0 ........................................................ 15 ........................................................................ 16 ............................................................................. 19 .......................................................................... 20 .............................................................................................. 21 ................................................................................. 23 1 ............................................................................... 24 1 .............................................................. 25

    2. ..................................................... 27 ................................................... 27 ................................................................... 29 ......................................................................................... 31 - .............................................................................. 34 ..................................................................... 37 ............................................................................................. 39 th ......................................................................................... 43 ................................................................ 44 2 ............................................................................... 47 2 .............................................................. 49

    3. .................................................................................................. 50 ..................................................... 50 ........................................................................ 51 .................................................................................... 52 .............................................................................................. 54 ............................................................. 55 final ............................................................................ 56 ........................................................................ 57 native .......................................................................... 57 synchronized .............................................................. 57 ............................................................................. 58 .......................................................................... 59 ............................................................. 60 ............................................................ 65 .................................... 65 .................................................................................... 67 ......................................................................................... 70 3 ............................................................................... 72 3 .............................................................. 76

  • 4. ........................................... 78 .................................................................................... 78 final .......................................................................... 81 super this ............................................................... 82 .................................... 83 ............................................................................ 86 ...................................................... 86 .............................................. 88 .................................................. 89 Object ....................................................................................... 91 ................................................................... 95 ................................... 97 4 ............................................................................... 99 4 ............................................................. 102

    5. ...................................................... 105 GRASP ................................................. 105 Expert .................................................................................. 105 Creator ................................................................................ 107 Low Coupling ..................................................................... 108 High Cohesion .................................................................... 111 Controller ............................................................................ 113 GoF ...................................................... 114 ................................................................. 115 Factory ................................................................................ 115 AbstractFactory ................................................................... 117 Builder ................................................................................ 120 Singleton ............................................................................. 122 .................................................................... 123 Bridge ................................................................................. 123 Decorator ............................................................................ 125 ........................................................................ 127 Command ............................................................................ 128 Strategy ............................................................................... 131 Observer .............................................................................. 133 ...................................................... 135 5 .............................................................................. 137 5 ............................................................. 137

    6. ................................. 139 ...................................................................................... 139 .............................................................................................. 142 ........................................................................ 145 .......................................................................... 146 (inner) .............................................................. 147 (nested) ............................................................. 152 (anonymous) .................................................... 153 6 .............................................................................. 156 6 ............................................................. 158

  • 2.

    7. ........................................................................... 160 String ....................................................................................... 160 StringBuilder StringBuffer ................................................ 165 .................................................................... 167 ............................................................. 173 ................................................................... 174 ......................................................... 178 ........................................................... 181 ............................................................... 182 7 .............................................................................. 184 7 ............................................................. 188

    8. ............................................................ 190 ...................................................... 190 throw ................................................................................. 195 finally .................................................................... 197 ............................................................... 198 ........................................................... 199 assertion ..................................................... 201 8 .............................................................................. 202 8 ............................................................. 203

    9. . / ............................................. 205 File .......................................................................................... 205 / .............................. 207 .............................................................. 212 ................................................................... 214 ............................................................................................. 218 Scanner ................................................................................... 219 ........................................................................................ 222 9 .............................................................................. 226 9 ............................................................. 227

    10. ...................................................................................... 229 ......................................................................... 229 .............................................................................................. 231 Deque ................................................................................................. 239 ........................................................................................ 240 ......................................................................... 245 ............................................................ 249 Collections .............................................................................. 250 Arrays ..................................................................................... 253 10 ............................................................................ 255 10 ........................................................... 257

    11. ................ 259 ................................................................ 259 ............................................................................................ 261 ............................................................................................. 270 11 ............................................................................ 272 11 ........................................................... 273

  • 12. ............................................................................................ 275

    ........................................................................... 275

    - ............................................................................. 281

    12 ............................................................................ 284

    12 ........................................................... 285

    13. ....................... 287

    ................................................................. 287

    ..................................................................... 293

    JavaBeans ............................................... 318

    13 ............................................................................ 325

    13 ........................................................... 326

    14. ................................................................ 328

    Thread Runnable ............................................... 328

    ................................................................. 329

    ............................... 330

    ...................................................................... 331

    - ................................................................................ 333

    ............................................. 335

    synchronized ....................................................................... 337

    synchronized ................................................................. 340

    ............................................................................. 342

    J2SE 5 ................................................................................ 344

    14 ............................................................................ 347

    14 ........................................................... 348

    15. ................................................................ 350

    ....................................................................... 350

    TCP/IP ................................. 354

    ............................................................................. 356

    UDP ......................................................... 359

    15 ............................................................................ 361

    15 ........................................................... 362

    16. XML & JAVA ........................................................................................ 364

    DTD ................................................................................................... 367

    XSD ........................................................................................ 370

    XML- ............................................................................ 380

    SAX- ............................................................................ 381

    ........................................................................ 388

    Xerces ................................................................................................ 388

    JDOM ................................................................................................ 392

    StAX .................................................................................................. 399

    XSL .................................................................................................... 404

    .............................................................. 407

    16 ............................................................................ 408

    16 ........................................................... 412

  • 3. WEB-

    17. JSP .................................................... 414

    ................................................................................ 414

    ................... 416

    JSP ........................................................................................ 419

    JSP ...................................................... 421

    17 ............................................................................ 424

    17 ........................................................... 424

    18. .......................................................................................... 426

    ServletContext ................................................................ 426

    ServletConfig ................................................................. 427

    ServletRequest HttpServletRequest .......................... 428

    ServletResponse HttpServletResponse ..................... 432

    ........................................................................... 432

    ............................................................................. 436

    ........................................................................... 439

    18 ............................................................................ 443

    18 ........................................................... 444

    19. JAVA SERVER PAGES ....................................................................... 446

    action ......................................................... 447

    JSP- .................................................................................... 449

    JSTL ................................................................................................... 451

    ............................................................................. 453

    JSTL core ............................................................................................ 454

    JSTL fmt ........................................................................................... 458

    JSTL sql ............................................................................................. 461

    JSTL xml ........................................................................................... 461

    ........................................................................ 462

    ........................................................................... 463

    ............................................................ 465

    JSP .................................. 467

    19 ............................................................................ 476

    19 ........................................................... 477

    20. JDBC ....................................................................................................... 479

    , ................................................... 479

    MySQL ................................................................................... 481

    ........................................... 482

    ...................................................................................... 485

    ....................... 486

    ....................................................................................... 489

    ............................................................................ 493

    ............................................................................... 495

    20 ............................................................................ 497

    20 ........................................................... 502

  • 21. C, ............................................... 504

    () .................................................................................. 504

    Cookie ................................................................................................ 509

    .......................................................................... 512

    ............................................................................................ 516

    21 ............................................................................ 519

    21 ........................................................... 521

    22. ........................................................ 523

    ....................................................................................... 523

    .............................................................................. 526

    ........................................................................................ 528

    action ............................................................................... 531

    22 ............................................................................ 533

    22 ........................................................... 534

    ....................................................................................... 536

    1. HTML ............................................................................................. 552

    2. JavaScript ........................................................................................ 574

    3. UML ............................................................................................... 599

    4. SQL .............................................................. 608

    5. Hibernate ............................................................................................. 625

    6. Struts ............................................................................................... 645

    7. (Logger) ........................................................ 667

    8. Apache Ant ..................................................................................... 676

    9. ....................................................................................... 690

    ............................................... 703

  • Java 2. , 2005 . Java SE 6 J2EE.

    , - - , EPAM Systems, Sun Microsystems Java. Java , - Java .

    , , . Java-, . , - , Java-. . , .

    . - Java - -. , , XML. - - , JSP , - .

    . - .

    , - HTML , Java-, - Struts Hibernate , Apache Ant .

    EPAM Systems: UML ; - SQL ; XML&Java Struts Hibernate ; Apache Ant - ; JavaScript .

    -- . , .

  • 1. JAVA

    , Ja-va - .

    1

    - , . - . . , - . , - .

    - (), . .

    , -

    , . .

    , -

    . - -

    , :

    ( ), -

    , , . - , . - , .

    . . , -

    . .

    () ( , ).

  • . 1.1. ()

    , :

    . 1.2.

    - :

    - ;

    - ;

    - ;

    - ;

    - . (encapsulation) , , -

    , . -, .

    Tank

    - cannon: int - model: String - speed: int

    + go() : void + init() : void + repair() : void + shoot() : void

  • (inheritance) ,

    . , -

    ,

    .

    :

    ( )

    ();

    ( Java -

    ).

    UML:

    . 1.3.

    Auto , Tank .

    (polymorphism) ,

    ,

    .

    . -

    , .

    - ,

    , .

    -

    . , -

    , -

    .

    : ,

    .

    . ,

    . ,

    . ,

    ( ) .

    Auto

    Tank

  • Java

    - Java, Sun Microsystems, - . Java -, Web- , . - , . JavaScript.

    Java , - ++. J2SE 1.5.0 () Java SE 6 () Java /++/#. ( ++) , , . - . Java , , -.

    Java , - , -, , . , , JVM (Java Virtual Machine) .

    Java (heap) , , , (stack). , C++. , Java - , - . , Java , , , . JVM , . Java : - . - ( ),

    new.

    Java- - - (h-) . - ++, , , . Java- - .

  • Java , -

    C++. Java

    typedef, ( char), -

    . Java ,

    ( ), -

    goto const, -

    .

    Java:

    abstract continue for new switch

    assert default goto package synchronized

    boolean do if private this

    break double implements protected throw

    byte else import public throws

    case enum instanceof return transient

    catch extends int short try

    char final interface static void

    class finally long strictfp volatile

    const float native super while

    , Java : null, true, false,

    .

    : const, goto.

    5.0 6.0

    J2SE 5.0 -

    :

    ;

    ;

    -;

    ;

    ;

    ;

    /;

    ;

    ;

    Unicode 4.0;

    , . Java SE 6 , -

    .

    :

    Scripting API;

  • Java-XML Web Service (JAX-WS)

    Web 2.0;

    , -

    -;

    java.awt.Desktop API;

    : , SystemTray TrayIcon;

    Java Foundation Classes (JFC) Swing;

    Java-XML Binding (JAXB 2.0);

    JDBC 4.0.

    .

    // # 1 : : First.java package chapt01;

    public class First {

    public static void main(String[] args) {

    // System.out.print(" ");

    System.out.println(" !");

    }

    }

    , -

    :

    /* # 2 : - :

    FirstProgram.java */ package chapt01;

    public class FirstProgram {

    public static void main(String[] args) {

    // firstObject MustangLogic firstObject = new MustangLogic();

    // , firstObject.jumpMustang();

    }

    }

    // # 3 : : MustangLogic class MustangLogic {

    public void jumpMustang() {//

    // System.out.println(" !");

    }

    }

  • FirstProgram ,

    main(), Java

    . main() -

    - String[] args,

    , (public) . ,

    main() . static -

    , , . -, ++. main()

    MustangLogic firstObject = new MustangLogic();

    firstObject.jumpMustang();

    " !"

    println() (ln ) out

    System,

    java.lang.

    FirstProgram.java ( .java ), -

    . package chapt01;

    chapt01,

    . , , . package ,

    . ( - ), -.

    2 3 FirstProgram.java.

    . -

    ( chapt01):

    javac chapt01/FirstProgram.java

    FirstProgram.class

    Mustang.class. -

    Java:

    java chapt01.FirstProgram

    FirstProgram.class

    chapt01, .

    , - , java.sun.com. -

    . JDK ( Windows) c:\jdk1.6.0, , Java

    , - LASSPATH :

    LASSPATH=.;c:\jdk1.6.0\

  • . -

    , :\temp,

    .

    -

    , PATH

    PATH=c:\jdk1.6.0\bin

    javac.exe

    java.exe. JDK -

    .

    ,

    . - , . -

    , . -

    .

    main(). , -

    ,

    String[] args. args[0] ..

    args.length.

    /* # 4 : : OutArgs.java */ package chapt01;

    public class OutArgs {

    public static void main(String[] args) {

    for (String str : args)

    System.out.printf("A-> %s%n", str);

    }

    }

    Java 5.0 for

    Java printf(). -

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

    System.out.println("A-> " + args[i]);

    :

    java chapt01.OutArgs 2007 Mustang "Java SE 6"

    :

    -> 2007

    -> Mustang

    -> Java SE 6

    , , -

    .

  • Java , , - . C++: ; , - , ; inline,

    C++ , ; public, private,

    protected , ,

    , , ++; private,

    . :

    [] class [extends ]

    [implements _]{/* */}

    public ( -

    ), final ( ), abstract

    ( , -). (friendly). . friendly - . , - .

    ,

    extends, , -

    implements. -

    , .

    // # 5 : Java Beans : User.java package chapt01;

    public class User {

    public int numericCode;// private String password;

    public void setNumericCode(int value) {

    if(value > 0) numericCode = value;

    else numericCode = 1;

    }

    public int getNumericCode() {

    return numericCode;

    }

    public void setPassword(String pass) {

    if (pass != null) password = pass;

    else password = "11111";

    }

    public String getPassword() {

    //public String getPass() {// return password;

    }

    }

  • User numericCode password,

    public private. password -

    , setPassword(). numericCode -

    User. public- -

    .

    /* # 6 : , : UserView.java : Runner.java */ package chapt01;

    class UserView {

    public static void welcome(User obj) {

    System.out.printf("! : %d, : %s",

    obj.getNumericCode(), obj.getPassword());

    }

    }

    public class Runner {

    public static void main(String[] args) {

    User user = new User();

    user.numericCode = 71;// -

    // user.password = null; //

    user.setPassword("pass"); // UserView.welcome(user);

    }

    }

    - :

    ! : 71, : pass

    .

    . new , :

    User user; //

    user = new User(); //

    :

    User user = new User();/* */

    new , -

    , . , .

    , .

    , , equals(). -

    Object,

    - .

  • /* # 7 : : ComparingStrings.java */ package chapt01;

    public class ComparingStrings {

    public static void main(String[] args) {

    String s1, s2;

    s1 = "Java";

    s2 = s1; // System.out.println(" "

    + (s1 == s2)); // true

    // s1 += '2';

    // s1-="a"; //,

    // s2 = new String(s1);

    System.out.println(" "

    + (s1 == s2)); // false

    System.out.println(" "

    + s1.equals(s2)); // true }

    }

    System.in -

    . -

    -

    , ,

    .

    // # 8 : System.in : DemoSystemIn.java package chapt01;

    public class ReadCharRunner {

    public static void main(String[] args) {

    int x;

    try {

    x = System.in.read();

    char c = (char)x;

    System.out.println(" : " + c + " =" + x);

    } catch (java.io.IOException e) {

    e.printStackTrace();

    }

    }

    }

  • IOException,

    / -

    , main()

    try-catch.

    -. .

    // # 9 : : ReadCharRunner.java package chapt01;

    import java.io.*;//

    public class ReadCharRunner {

    public static void main(String[] args) {

    /* System.in InputStreamReader */ InputStreamReader is =

    new InputStreamReader(System.in);

    /* , */

    BufferedReader bis = new BufferedReader(is);

    try {

    System.out.println(

    " :");

    /* ; readLine() try */

    String name = bis.readLine();

    System.out.println(", " + name);

    } catch (IOException e) {

    System.err.print(" " + e);

    }

    }

    }

    , , :

    :

    ,

    , , , .

    ,

    printf()

    Console.

    /* # 10 : printf() Console: PrintDeutsch.java */ public class PrintDeutsch {

    public static void main(String[] args) {

    String str = "ber";

  • System.out.println(str);

    Console con = System.console();

    con.printf("%s", str);

    }

    }

    :

    ber

    ber

    Java

    , Web-. -, , -

    Web- .

    // # 11 : : FirstApplet.java import java.awt.Graphics;

    import java.util.Calendar;

    public class FirstApplet extends javax.swing.JApplet {

    private Calendar calendar;

    public void init() {

    calendar = Calendar.getInstance();

    setSize(250,80);

    }

    public void paint(Graphics g) {

    g.drawString(" :", 20, 15);

    g.drawString(

    calendar.getTime().toString(), 20, 35);

    }

    }

    Calendar java.util. toString() -

    , ,

    drawString().

    ,

    .

    main()

    init() paint().

    HTML- Web-,

    Java. ()

    HTML- view.html:

  • FirstApplet.class -

    , HTML-. HTML- Microsoft Internet Explorer - , Java.

    view.html .1.4.

    . 1.4.

    JDK

    appletviewer.exe.

    1

    A

    1. Hello, -

    , . 2. ,

    main() .

    3. , n

    . 4. -

    -. 5. -

    , () . 6. , ,

    , .

    Calendar

    java.util.

    7. - HTML-.

    B

    n . :

    1. . 2. . 3. , 3 9. 4. , 5 7. 5. , .

  • 6. , .

    7. . 8. . 9. . 10. . 11. . 12. : f0 = f1 = 1, f (n) = f (n1) + f (n2). 13. -,

    . 14. , . 15. p = m/n -

    n m, .

    16. .

    1

    1.1. :

    class Quest1 {

    private static void main (String a) {

    System.out.println("Java 2");

    } }

    , Quest1 ? ( 2 )

    1) Quest1 public;

    2) main() String[] a;

    3) main() public;

    4) main().

    1.2. Java: ( 2)

    1) goto;

    2) , ; 3) ; 4) ; 5) .

    1.3. :

    class Quest3 {

    public static void main(String s[ ]) {

    String args;

    System.out.print(args + s);

    }

    }

    :

    1) : main() -

    ;

  • 2) : args ;

    3) : -

    print();

    4) .

    1.4. :

    public class Quest4 {

    public static void main(String[] args) {

    byte b[]=new byte[80];

    for (int i=0;i

  • 2

    ( -) . - .

    Java , - (stack). - . , -, - , (heap).

    , - . Java -. . .

    ()

    ( )

    boolean 8 false true, false

    byte 8 0 128..127

    char 16 '\u0000' 0..65535

    short 16 0 32768..32767

    int 32 0 -2147483648..2147483647

    long 64 0 922372036854775807L

    float 32 0.0 3.40282347E+38

    double 64 0.0 1.797693134486231570E+308

    Java , : 35 -

    , 071 , 051 -

    . int. -

    long, L

    (: 0xffffL). ,

    int (2147483647), Java , long.

    1.618 -

    0.112E-05 double, , -

    double.

    float, F. -

  • ('a', '\n', '\141', '\u005a' ). -

    Unicode, . Unicode , - ASCII , C++. '\ucode', code

    . Java , ;

    '\n' , '\r' , '\f' ,

    '\t' , '\b' , '\uxxxx' -

    Unicode, '\ddd' . J2SE

    5.0 Unicode 4.0.

    Character.

    true false, null

    .

    String . ,

    , , .

    byte short int long float double. Java byte short

    int .

    (). :

    byte b = (byte)128; // int byte

    , - . - - , , - -. Java - , . - (++), (--)

    (+=, /= ..). ()

    . , -

    , #.

    $ _ , .

    /* # 1 : , :TypeByte.java */ package chapt02;

    public class TypeByte {

    public static void main(String[] args) {

    byte b = 1, b1 = 1 + 2;

    final byte B = 1 + 2;

    //b = b1 + 1; //

  • /* b1 , b = b1 + 1; , b1 + 1 - byte- */

    b = (byte)(b1 + 1);

    b = B + 1; //

    /* B - , , - B + 1, byte , */ //b = -b; //

    b = (byte) -b;

    //b = +b; // b = (byte) +b;

    int i = 3;

    //b = i; // , int byte b = (byte) i;

    final int I = 3;

    b = I; //

    /*I . , byte, , */

    final int I2 = 129;

    //b=I2; // , .. 129 , 127 b = (byte) I2;

    b += i++; //

    b += 1000; //

    b1 *= 2; // float f = 1.1f;

    b /= f; //

    /* - , . , b /= f; b = (byte)(b / f); */

    }

    }

    , , -, . , , . {}, -

    .

    Java /* */

    //, , C++.

    /** */, :

    @author ;

    @version ;

  • @exception ;

    @param , ;

    @return , ;

    @deprecated , -

    ; @since ( ) ;

    @throws , ;

    @see .

    java-, , javadoc.exe

    HTML-.

    User .

    package chapt02;

    public class User {

    /**

    * personal user's code

    */

    private int numericCode;

    /**

    * user's password

    */

    private String password;

    /**

    * see also chapter #3 "Classes"

    */

    public User() {

    password = "default";

    }

    /**

    * @return the numericCode

    * return the numericCode

    */

    public int getNumericCode() {

    return numericCode;

    }

    /**

    * @param numericCode the numericCode to set

    * parameter numericCode to set

    */

    public void setNumericCode(int numericCode) {

    this.numericCode = numericCode;

    }

    /**

    * @return the password

    * return the password

    */

  • public String getPassword() {

    return password;

    }

    /**

    * @param password the password to set

    * parameter password to set

    */

    public void setPassword(String password) {

    this.password = password;

    }

    }

    HTML- :

    . 2.1. User

    Java C++

    . Java , *,

    &, ->, delete .

    - . + +=

    String. -

    ==, != = -

    , . , .

    : +, , *, %, /, ++, &, |, ^,

    ~ C++. -

    , .

  • , - , IEEE 754 -

    +Infinity Infinity NaN (Not a Number),

    , , - .

    + / ( - )

    += ( -)

    /= ( )

    -

    % ( -)

    = ( )

    %= ( -)

    * ++ ( )

    *= ( -)

    ( )

    | >>

    |= ( ) >>= ( )

    & >>>

    &= (c ) >>>=

    ^

  • -

    instanceof ?: (if-then-else).

    boolean

    Boolean (true false).

    // # 2 : %: DemoOperators.java package chapt02;

    public class DemoOperators {

    public static void main(String[] args) {

    System.out.println("5%1=" + 5%1 + " 5%2=" + 5%2);

    int b1 = 0xe;//14 1110

    int b2 = 0x9;//9 1001

    int i = 0;

    System.out.println(b1 + "|" + b2 + " = " +

    (b1|b2));

    System.out.println(b1 + "&" + b2 + " = " +

    (b1&b2));

    System.out.println(b1 + "^" + b2 + " = " +

    (b1^b2));

    System.out.println( "~" + b2 + " = " + ~b2);

    System.out.println(b1 + ">>" + ++i + " = " +

    (b1>>i));

    System.out.println(b1 + ">>" + i +" = " +

    (b1>>>i));

    }

    }

    :

    5%1=0 5%2=1

    14|9 = 15

    14&9 = 8

    14^9 = 7

    ~9 = -10

    14>>1 = 7

    14>2 = 3

    "?" :

    boolean ? :

    boolean true,

    , -

    .

    instanceof true, -

    . , :

    class Course extends Object {}

    class BaseCourse extends Course {}

  • class FreeCourse extends BaseCourse {}

    class OptionalCourse extends Course {}

    . 2.2.

    instanceof

    doLogic(Course c):

    void doLogic(Course c) {

    if (c instanceof BaseCourse) {/* BaseCourse

    FreeCourse*/

    } else if (c instanceof OptionalCourse) {/*

    OptionalCourse*/

    } else {/* Course*/} }

    instanceof ,

    , .

    Object , -

    Object. -

    null ,

    null - .

    null -

    . null -

    ,

    instanceof.

    -

    , Java -

    - (wrapper-) java.lang: Boolean,

    Character, Integer, Byte, Short, Long, Float, Double.

    , .

    BaseCourse

    Course

    FreeCourse

    OptionalCourse

  • . 2.3. -

    -, , - - . , , - java.lang,

    Number Comparable, -

    -. - null.

    -, . - Value()

    . Character Number, -

    , - . Character -

    . Character,

    , String.

    /* # 3 : : CastTypes.java */ package chapt02;

    public class CastTypes {

    public static void main(String[] args) {

    Float f1 = new Float(10.71); // double Float

    String s1 = Float.toString(0f); // float String

    String s2 = String.valueOf(f1); // Float String

    Byte b = Byte.valueOf("120"); // String Byte

    Float

    Number

    + byteValue() : byte + doubleValue() : double + floatValue() : float + intValue() : int + longValue() : long

    + shortValue() : short

    interface Comparable

    Integer Byte Double Long Short

    Character

    Void

    Boolean

    + booleanValue() : boolean + equals(Object) : boolean + getBoolean(String) : boolean + compareTo(Boolean) : int + parseBoolean(String) : boolean + valueOf() : Boolean

  • double d = b.doubleValue(); // Byte double

    byte b0=(byte)(float)f1;// Float byte //b2 = (byte)f1; // !!! /*f1 , */ short s = (short) d; // double short

    /* Character int */ Character ch = new Character('3');

    int i = Character.digit(ch.charValue(), 10);

    System.out.printf("f1=%1.2e s1=%s s2=%s%n", f1, s1, s2);

    System.out.printf("b=%o d=%.1f b0=%d s=%d i=%d",

    b, d , b0, s , i);

    }

    }

    :

    f1=1.07e+01 s1=0.0 s2=10.71

    b=170 d=120,0 b0=10 s=120 i=3

    valueOf(String str) -, -

    , , , - .

    Java java.math.BigInteger java.math.BigDecimal, - .

    Java String.

    String "+"

    . '\0', ASCII-, .

    5.0 (). - new. :

    Integer iob = 71;

    - . , intValue(), doubleValue()

    . , -

    , / :

    // # 4 : autoboxing & unboxing: NewProperties.java package chapt02;

    public class NewProperties {

    public static void main(String[] args) {

    Integer j = 71; // +

    Integer k = ++j; //++ int i = 2;

    k = i + j + k;

    }

  • }

    NullPointerException

    null Integer:

    Integer j = null; // !

    int i = j; //

    , -, .

    int i = 128;// 127 !!!

    Integer oa = i; // + Integer ob = i;

    System.out.println("oa==i " + (oa == i));// true

    System.out.println("ob==i " + (ob == i));// true

    System.out.println("oa==ob " + (oa == ob));// false( ) System.out.println("equals ->" + oa.equals(i)

    + ob.equals(i)

    + oa.equals(ob));// true

    equals() , -

    , . oa.equals(ob)

    true.

    equals().

    :

    boolean b = i.equals(oa);//

    - - ,

    Float f = 7;// (float)7 7F 7

    . , ,

    , Number, :

    Number n1 = 1;

    Number n2 = 7.1;

    Number array[] = {71, 7.1, 7L};

    .

    , - - .

    if :

    if (boolexp) { /**/} //1

    else { /**/ } //2

    boolexp true,

    1, 2. else -

  • , if ( 2),

    if.

    - if {} else if {}.

    C++ switch:

    switch(exp) {

    case exp1:{/**/} break;

    case expN:{/**/} break;

    default: {/**/} }

    exp==exp1

    , break, exp1,,

    expN int, byte, short,

    char enum.

    , . if ,

    , else -

    . switch

    case ( -

    ),

    default.

    Java , - ++:

    while (boolexp) { /**/ } //

    do { /**/ } while (boolexp); //

    for(exp1; boolexp; exp3){ /**/ } //

    exp1 , boolexp -

    , exp3 , ( -

    , ). ,

    boolexp true.

    :

    - , for while ,

    do/while .

    - for -

    . while -

    , - , , . -

    while(true).

    - for .

  • - , .

    - .

    - . .

    - . 5.0 , -

    :

    for( : ){ /**/ }

    - .

    int[] array = {1, 3, 5};

    for(int i : array) //

    System.out.printf("%d ", i);//

    . , -

    Iterable Iterator.

    Java break

    continue, -

    , :

    int j = -3;

    OUT: while(true) {

    for(;;)

    while (j < 10) {

    if (j == 0)

    break OUT;

    else {

    j++;

    System.out.printf("%d ", j);

    }

    }

    }

    System.out.print("end");

    break , OUT.

    goto .

    , . . . Java , new . -

    , , null -

    .

  • , : int a[].

    int[] a.

    /* # 5 : : ArrRef.java */ package chapt02;

    public class ArrRef {

    public static void main(String[] args) {

    int myRef[], my;//

    float[] myRefFloat, myFloat; // !

    // int myDyn[] = new int[10];

    /* */ int myInt[] = {5, 7, 9, -5, 6, -2};//6

    byte myByte[] = {1, 3, 5};//3

    /* Object */ Object myObj = new float[5];

    // myRef = myDyn;

    myDyn = myInt;

    myRefFloat = (float[])myObj;

    myObj = myByte;//

    myRefFloat = (float[])myObj;//

    // () // myInt = myByte;

    //myInt = (int[])myByte; }

    }

    Object

    . - , -. , - . .

    myDyn=myInt , -

    myDyn

    myInt, .

    , - . -

    length.

    Java , . , :

    int arr[][] = { { 1 },

    { 2, 3 },

    { 4, 5, 6 },

    { 7, 8, 9, 0 }

    };

  • , arr[2][0]

    , 4.

    () .

    . 2.4.

    /* # 6 : : Matrix.java */ package chapt02;

    public class Matrix {

    private int[][] a;

    public Matrix(int n, int m) {

    // a = new int[n][m];

    }

    public int getVerticalSize() {

    return a.length;

    }

    public int getHorizontalSize() {

    return a[0].length;

    }

    public int getElement(int i, int j) {

    return a[i][j];

    }

    public void setElement(int i, int j, int value) {

    a[i][j] = value;

    }

    public String toString() {

    String s = "\nMatrix : " + a.length +

    "x" + a[0].length + "\n";

    for (int[] vector : a) {

    for (int value : vector)

    s+= value+" ";

    s += "\n";

    }

    Matrix

    - a: int[][]

    + Matrix(int, int) + getHorizontalSize() : int + getVerticalSize() : int + getElement(int, int) : int

    + setElement(int, int, int) : void + toString() : String

    MatrixFactory

    + createRandomized(int, int) : Matrix

    Multiplicator

    + multiply(Matrix, Matrix) : void

  • return s;

    }

    }

    /* # 7 : - : MatrixFactory.java */ package chapt02;

    public class MatrixFactory {

    public static Matrix createRandomized(int n, int m) {

    Matrix matrix = new Matrix(n, m);

    for (int i = 0; i < n; i++) {

    for (int j = 0; j < m; j++) {

    matrix.setElement(i, j, (int)(Math.random()*m*m));

    }

    }

    return matrix;

    }

    }

    /* # 8 : : Multiplicator.java */ package chapt02;

    public class Multiplicator {

    public static Matrix multiply(Matrix p, Matrix q)

    throws MultipleException {

    int v = p.getVerticalSize(); int h = q.getHorizontalSize();

    int temp = p.getHorizontalSize();

    // if (temp != q.getVerticalSize())

    throw new MultipleException();

    // Matrix result = new Matrix(v, h);

    // for (int i = 0; i < v; i++)

    for (int j = 0; j < h; j++) {

    int value = 0;

    for (int k = 0; k < temp; k++) {

    value += p.getElement(i, k) * q.getElement(k, j);

    }

    result.setElement(i, j, value);

    }

    return result;

    }

    }

    /* # 9 : : MultipleException.java */ package chapt02;

    public class MultipleException extends Exception {}

  • /* # 10 : , : Runner.java */ package chapt02;

    public class Runner {

    public static void main(String[] args) {

    int n = 2, m = 3, l = 4;

    Matrix p = MatrixFactory.createRandomized(n, m);

    Matrix q = MatrixFactory.createRandomized(m, l);

    System.out.println("Matrix first is: " + p);

    System.out.println("Matrix second is: " + q);

    try {

    Matrix result = Multiplicator.multiply(p, q);

    System.out.println("Matrix product is: "

    + result);

    } catch (MultipleException e){

    System.err.println("Matrices could"

    + " not be multiplied: ");

    }

    }

    }

    random(), :

    Matrix first is:

    Matrix : 2x3

    6 4 2

    0 8 4

    Matrix second is:

    Matrix : 3x4

    8 0 2 7

    6 1 0 0

    1 2 4 5

    Matrix product is:

    Matrix : 2x4

    74 8 20 52

    52 16 16 20

    . , -

    null.

    -.

    th

    java.lang.Math -

    , E PI.

  • ( -

    Math ). -

    , ,

    floor(), ceil(), rint(), round(), max(), min(),

    , , ..

    , random() Math.

    /* # 11 : Math: MathMethods.java */ package chapt02;

    public class MathMethods {

    public static void main(String[] args) {

    final int MAX_VALUE = 10;

    double d;

    d = Math.random() * MAX_VALUE;

    System.out.println("d = " + d);

    System.out.println(" ="

    + Math.round(d));

    System.out.println(" , "

    + " = ="

    + Math.ceil(d));

    System.out.println(" "

    + " =" + Math.rint(d));

    }

    }

    :

    d = 0.08439575016076173

    =0

    , = =1.0

    =0.0

    java.lang. -

    java.lang.System,

    . .

    , System.in, System.out System.err,

    / , :

    void gc() ;

    void exit(int status) java-

    (JVM);

  • void setIn(InputStream in), void setOut(PrintStream out),

    void setErr(PrintStream err)

    /;

    Properties getProperties() ;

    String getProperty(String key) -

    ;

    void setSecurityManager(SecurityManager s), SecurityMan-

    ager getSecurityManager() -

    ;

    void load(String filename) ;

    void loadLibrary(String libname) ;

    void arrayCopy()

    .

    java.lang.Runtime. Runtime

    getRuntime(), Runtime, -

    . exit(int status) halt(int status). -

    : gc(),

    runFinalization() . -

    totalMemory() freeMemory().

    /* # 12 : : RuntimeDemo.java*/ package chapt02;

    public class RuntimeDemo {

    public static void main(String[] args) {

    Runtime rt = Runtime.getRuntime();

    System.out.println(" : "

    + rt.totalMemory());

    System.out.println(" : "

    + rt.freeMemory());

    double d[] = new double[10000];

    System.out.println(" " +

    " : " + rt.freeMemory());

    // ProcessBuilder pb =

    new ProcessBuilder("mspaint","c:\\temp\\cow.gif");

    try {

    pb.start(); // mspaint.exe } catch (java.io.IOException e) {

    System.err.println(e.getMessage());

    }

    System.out.println(" "

    + " mspaint.exe: " + rt.freeMemory());

  • System.out.println(" : "

    + pb.command());

    }

    }

    , ,

    :

    : 2031616

    : 1903632

    : 1823336

    mspaint.exe: 1819680

    : [mspaint, c:\temp\cow.gif]

    java.lang.ProcessBuilder, -

    start(),

    . - - .

    arraycopy() System,

    , .

    /* # 13 : : ArrayCopyDemo.java */ package chapt02;

    public class ArrayCopyDemo {

    public static void main(String[] args) {

    int mas1[] = { 1, 2, 3 },

    mas2[] = { 4, 5, 6, 7, 8, 9 };

    show("mas1[]: ", mas1);

    show("mas2[]: ", mas2);

    // mas1[] mas2[] System.arraycopy(mas1, 0, mas2, 2, 3);

    /*

    0 mas1[] , 2 , , 3 */ System.out.printf("%n arraycopy(): ");

    show("mas1[]: ", mas1);

    show("mas2[]: ", mas2);

    }

    private static void show(String s, int[] mas) {

    System.out.printf("%n%s", s);

    for (int i : mas) System.out.printf("%d ", i);

    }

    }

    :

    mas1[]: 1 2 3

  • mas2[]: 4 5 6 7 8 9

    arraycopy():

    mas1[]: 1 2 3

    mas2[]: 4 5 1 2 3 9

    2

    A

    -

    , , .

    Date.

    /** */,

    HTML- Web-

    .

    1. n ,

    . .

    2. n .

    () .

    3. n . , -

    () , .

    4. n . ,

    . ,

    .

    5. n . ,

    ,

    .

    6. n . , -

    . ,

    .

    7. n . ,

    . , .

    8. n . , ,

    -. , -

    .

    9. 18,

    .

    10. switch, ,

    k -

    (-10k, 0], (0, 5], (5, 10], (10, 10k].

    11. switch, ,

    k

    (-10k, 5], [0, 10], [5, 15], [10, 10k].

    12. , 1 25

    5x5 .

  • 13. , -

    . -

    .

    14. 1 12. , -

    . (

    ).

    n a[n][n]. -

    -n n .

    1. () -

    k- ().

    2. k

    (, , ). 3. () -

    , .

    4. ,

    .

    5. .

    6. .

    7. 90 (180, 270) .

    8. .

    9. ,

    .

    10. ()

    , .

    11. , , .

    12. -

    .

    13. , , -

    , .

    14. .

    15. . (

    i,j, i,j i-

    j- ).

    16. , , -

    .

    17. . (

    , . ,

    .)

    18. . (

    , .)

  • 19. , ,

    . ( - ).

    20. - , -

    , (2,2), - (3,3) . .,

    .

    2

    2.1. ?

    1) float f = 7.0;

    2) char c = "z";

    3) byte b = 255;

    4) boolean n = null;

    5) int i = 32565;

    6) int j = .

    2.2. ?

    1) if (i

  • 3) a3;

    4) a4;

    5) a5.

  • 3

    , , .

    Java, -, , . . - , , , .

    . , , - .

    . / , .

    :

    class {

    {}//

    //

    private//

    protected//

    public// }

    . :

    c ;

    Java , - static

    () , , . - public, private, protected .

    , - . , - , .

  • final . -

    final , ,

    . -

    , - :

    /* # 1 : : Second.java */ package chapt03;

    import java.util.*;

    class Second {

    private int x; //

    private int y = 71; //

    public final int CURRENT_YEAR = 2007; //

    protected static int bonus; //

    static String version = "Java SE 6"; // protected Calendar now;

    public int method(int z) { // z++;

    int a; //

    //a++; // ,

    a = 4; // a++;

    now = Calendar.getInstance();// return a + x + y + z;

    }

    }

    , - , ( String).

    , new.

    Java , . - Java :

    , ;

    private ;

    protected ,

    , ;

    public

    .

  • ( ), public, -

    . , private,

    . , . . , , - , , protected. -

    , . public

    (enclosing) . , .

    , . , ; , - new .

    , . Java , -

    ( ). - finalize(). Java

    , , .

    /* # 2 : : Quest.java */ package chapt03;

    public class Quest {

    private int id;

    private String text;

    // ( ) public Quest() {

    super();/* , */

    }

    // public Quest(int idc, String txt) {

    super();/*

    , */ id = idc;

    text = txt;

    }

    }

    Quest ,

    :

    Quest a = new Quest();// Quest b = new Quest(71, " boolean?");

  • new , -

    , . , Java

    ,

    , : 0, false, null.

    , - . . . - , :

    super();

    Point c (),

    .

    /* # 3 : : Point.java: LocateLogic.java: Runner.java */ package chapt03;

    public class Point {

    /* */ private final double x;

    private final double y;

    public Point(final double xx, final double yy) {

    super();

    x = xx;

    y = yy;

    }

    public double getX() {

    return x;

    }

    public double getY() {

    return y;

    }

    }

    package chapt03;

    public class LocateLogic {

    public double calculateDistance(

    Point t1, Point t2) {

    /* */ double dx = t1.getX() - t2.getX();

    double dy = t1.getY() - t2.getY();

    return Math.hypot(dx, dy);

    }

    }

    package chapt03;

    public class Runner {

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

    // Point t1 = new Point(5, 10);

    Point t2 = new Point(2, 6);

    System.out.print(" : "

    + new LocateLogic().calculateDistance(t1, t2));

    }

    }

    :

    : 5.0

    public,

    .

    private , -

    . protected

    .

    - . .

    Java -. :

    returnType methodName(_) {

    //

    return value; // (returnType void) }

    , return -

    , void.

    void , .

    ( ):

    objectName.methodName();

    - -

    new.

    , .

    ( void) .

    , , .

    [] [static] [abstract] [final] [native]

    [synchronized] returnType methodName(_)

    [throws _]

    ,

    public, private, protected .

    .

  • -, , .

    , static,

    . , . - , - static. ,

    this ,

    . , . this

    , - , .

    // # 4 : : Mark.java package chapt03;

    public class Mark {

    private int mark = 3;

    public static int coeff = 5;

    public double getResult() {

    return (double)coeff*mark/100;

    }

    public static void setCoeffFloat(float c) {

    coeff = (int)coeff*c;;

    }

    public void setMark(int mark) {

    this.mark = mark;

    }

    // /*public static int getResult() {

    setMark(5);// return coeff*mark/100;// }*/

    }

    Mark ob1 = new Mark();

    Mark ob2 = new Mark();

    ob1.coeff ob2.coeff 5,

    . :

    Mark.coeff = 7;

    : ClassName.methodName(), :

    Mark.setCoeffFloat();

  • float z = Math.max(x, y); //

    System.exit(1); //

    , , .

    -, , .

    final

    final - , . , final, , .

    :

    /* # 5 : final- : Rector.java: ProRector.java */ package chapt03;

    public class Rector {

    // final int ID = (int)(Math.random()*10);

    // final String NAME_RECTOR;

    public Rector() {

    // NAME_RECTOR = "";// !!! }

    // {NAME_RECTOR = "";} // !!!

    public final void jobRector() {

    // // ID = 100; //! }

    public boolean checkRights(final int num) {

    // id = 1; //! final int CODE = 72173394;

    if (CODE == num) return true;

    else return false;

    }

    public static void main(String[] args) {

    System.out.println(new Rector().ID);

    }

    }

    package chapt03;

    public class ProRector extends Rector {

    // public void jobRector(){} //! }

  • , -.

    , {}, , -

    . - . . .

    , .

    /* # 6 : : AbstractCourse.java */ public abstract class AbstractCourse {

    private String name;

    public AbstractCourse() { }

    public abstract void changeTeacher(int id);/*

    */ public setName(String n){

    name = n;

    }

    }

    , -, , .

    - . . .

    native

    Java , ++.

    native, -

    , . :

    public native int loadCripto(int num);

    , native,

    .

    synchronized

    , .

    synchronized, ,

    .

    notifyAll(), notify() wait() Object

    ( Java) -

    synchronized, -

    .

  • . - , - , :

    { /* */ }

    static { /* */ }

    -, . , -, -, . -

    this, -

    .

    static.

    - () .

    /* # 7 : : Department.java: DemoLogic.java */ package chapt03;

    public class Department {

    {

    System.out.println("logic (1) id=" + this.id);

    }

    static {

    System.out.println("static logic");

    }

    private int id = 7;

    public Department(int d) {

    id = d;

    System.out.println(" id=" + id);

    }

    int getId() {

    return id;

    }

    {

    id = 10;

    System.out.println("logic (2) id=" + id);

    }

    }

    package chapt03;

    public class DemoLogic {

    public static void main(String[] args) {

  • Department obj = new Department(71);

    System.out.println(" id=" + obj.getId());

    }

    }

    :

    static logic

    logic (1) id=0

    logic (2) id=10

    id=71

    id=71

    id , - , -. id, 10, -

    , -.

    , , . - . . - , - . , - .

    .

    , - .

    /* # 8 : : NumberInfo.java */ package chapt04;

    public class NumberInfo {

    public static void viewNum(Integer i) {//1 System.out.printf("Integer=%d%n", i);

    }

    public static void viewNum(int i) {//2 System.out.printf("int=%d%n", i);

    }

    public static void viewNum(Float f) {//3 System.out.printf("Float=%.4f%n", f);

    }

    public static void viewNum(Number n) {//4 System.out.println("Number=" + n);

    }

    public static void main(String[] args) {

    Number[] num =

  • {new Integer(7), 71, 3.14f, 7.2 };

    for (Number n : num)

    viewNum(n);

    viewNum(new Integer(8));

    viewNum(81);

    viewNum(4.14f);

    viewNum(8.2);

    }

    }

    , , -:

    Number=7

    Number=71

    Number=3.14

    Number=7.2

    Integer=8

    int=81

    Float=4,1400

    Number=8.2

    . , - num.

    , ( ), , - .

    - .

    , , -, , .

    :

    ;

    ;

    .

    J2SE 5 - (generic) , , - . generic- - . , , - .

    generic- :

  • /* # 9 : : Subject.java */ package chapt03;

    public class Subject {

    private T1 name;

    private T2 id;

    public Subject() {

    }

    public Subject(T2 ids, T1 names) {

    id = ids;

    name = names;

    }

    }

    T1, 2 , -

    . - . .

    Subject , , :

    Subject sub =

    new Subject();

    char ch[] = {'J','a','v','a'};

    Subject sub2 =

    new Subject(ch, 71D );

    sub2 71D Double.

    .

    Optional -

    , .

    /* # 10 : : Optional.java: Runner.java */ package chapt03;

    public class Optional {

    private T value;

    public Optional() {

    }

    public Optional(T value) {

    this.value = value;

    }

    public T getValue() {

    return value;

    }

    public void setValue(T val) {

    value = val;

  • }

    public String toString() {

    if (value == null) return null;

    return value.getClass().getName() + " " + value;

    }

    }

    package chapt03;

    public class Runner {

    public static void main(String[] args) {

    // Integer Optional ob1 =

    new Optional();

    ob1.setValue(1);

    //ob1.setValue("2");// : int v1 = ob1.getValue();

    System.out.println(v1);

    // String Optional ob2 =

    new Optional("Java");

    String v2 = ob2.getValue();

    System.out.println(v2);

    //ob1 = ob2; //

    // Object Optional ob3 = new Optional();

    System.out.println(ob3.getValue());

    ob3.setValue("Java SE 6");

    System.out.println(ob3.toString());/*

    , */

    ob3.setValue(71);

    System.out.println(ob3.toString());

    ob3.setValue(null);

    }

    }

    :

    1

    Java

    null

    java.lang.String Java SE 6

    java.lang.Integer 71

    Optional: ob1

    Integer ob2 String -

    . generic- -

  • Object,

    , ob3. -

    , .

    generic- , -

    , - .

    Object. , -

    . ,

    :

    public class OptionalExt {

    private T value;

    }

    , -

    , () T, -

    (bound) .

    , - .

    ?. extends -

    .

    /* # 11 : : Mark.java, Runner.java */ package chapt03;

    public class Mark {

    public T mark;

    public Mark(T value) {

    mark = value;

    }

    public T getMark() {

    return mark;

    }

    public int roundMark() {

    return Math.round(mark.floatValue());

    }

    /* */ // public boolean sameAny(Mark ob) { public boolean sameAny(Mark ob) {

    return roundMark() == ob.roundMark();

    }

    public boolean same(Mark ob) {

    return getMark() == ob.getMark();

    }

    }

    package chapt03;

  • public class Runner {

    public static void main(String[] args) {

    // Mark ms = new Mark(7); //

    Mark md = new Mark(71.4D);//71.5d

    System.out.println(md.sameAny(md));

    Mark mi = new Mark(71);

    System.out.println(md.sameAny(mi));

    // md.same(mi); // System.out.println(md.roundMark());

    }

    }

    :

    true

    true

    71

    sameAny(Mark ob) Mark,

    ,

    Mark

    , .

    generic- . , -

    generic-:

    class Optional {

    T value = new T();

    }

    , -

    . generic- , -

    generic- generic-,

    :

    /* # 12 : :

    Failed.java */ package chapt03;

    class Failed {

    static T1 value;

    T2 id;

    static T1 getValue() {

    return value;

    }

    static void use() {

    System.out.print(id);

    }

    }

  • (generic) , - , - , , , :

    returnType methodName(T arg) {}

    returnType methodName(T arg) {}

    . - , , - , extends.

    . Generic- ,

    . - . generic-.

    /* # 13 : : GenericMethod.java */ public class GenericMethod {

    public static byte asByte(T num) {

    long n = num.longValue();

    if (n >= -128 && n

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

    System.out.println("N=" + getArgCount(7, 71, 555));

    Integer[] i = { 1, 2, 3, 4, 5, 6, 7 };

    System.out.println("N=" + getArgCount(i));

    System.out.println(getArgCount());

    }

    }

    :

    arg:7 arg:71 arg:555 N=3

    arg:1 arg:2 arg:3 arg:4 arg:5 arg:6 arg:7 N=7

    No arg=0

    . getArgCount()

    . . . - .

    , :

    void methodName([]... args){}

    :

    void methodName(Integer...args) {}

    void methodName(int x1, int x2) {}

    void methodName(String...args) {}

    - . Object... args , :

    /* # 15 : : DemoOverload.java */ package chapt03;

    public class DemoOverload {

    public static void printArgCount(Object... args) {//1

    System.out.println("Object args: " + args.length);

    }

    public static void printArgCount(Integer[]...args){//2

    System.out.println("Integer[] args: " + args.length);

    }

    public static void printArgCount(int... args) {//3

    System.out.print("int args: " + +args.length);

    }

    public static void main(String[] args) {

    Integer[] i = { 1, 2, 3, 4, 5 };

    printArgCount(7, "No", true, null);

    printArgCount(i, i, i);

    printArgCount(i, 4, 71);

    printArgCount(i);// 1

  • printArgCount(5, 7);

    // printArgCount();//! }

    }

    :

    Object args: 4

    Integer[] args: 3

    Object args: 3

    Object args: 5

    int args: 2

    printArgCount() i -

    Object... args,

    -

    . Integer[]...args , -

    Object[]...args. -

    Integer[]...args

    Object...args.

    - - .

    . ,

    ...args , :

    void methodName(1 obj, 2... args) {}

    (typesafe enums) Java java.lang.Enum.

    new.

    . -

    :

    /* # 16 : : SimpleUseEnum.java */ package chapt02;

    enum Faculty {

    MMF, FPMI, GEO

    }

    public class SimpleUseEnum {

    public static void main(String args[]) {

    Faculty current;

    current = Faculty.GEO;

    switch (current) {

    case GEO:

    System.out.print(current);

    break;

    case MMF:

  • System.out.print(current);

    break;

    // case LAW : System.out.print(current);// ! default:

    System.out.print(" case: " + current);

    }

    }

    }

    case -

    , switch.

    Enum , -

    , . enum -

    :

    static enumType[] values() ,

    ;

    static T valueOf(Class enumType, String arg) -

    , ;

    static enumType valueOf(String arg) -

    , ;

    int ordinal() .

    /* # 17 : : Shape.java */ package chapt02;

    enum Shape {

    RECTANGLE, TRIANGLE, CIRCLE;

    public double square(double x, double y) {

    switch (this) {

    case RECTANGLE:

    return x * y;

    case TRIANGLE:

    return x * y / 2;

    case CIRCLE:

    return Math.pow(x, 2) * Math.PI;

    }

    throw new EnumConstantNotPresentException(

    this.getDeclaringClass(),this.name());

    }

    }

    /* # 18 : : Runner.java */ package chapt02;

    public class Runner {

    public static void main(String args[]) {

    double x = 2, y = 3;

    Shape[] arr = Shape.values();

  • for (Shape sh : arr)

    System.out.printf("%10s = %5.2f%n",

    sh, sh.square(x, y));

    }

    }

    :

    RECTANGLE = 6,00

    TRIANGLE = 3,00

    CIRCLE = 12,57

    , square(). throw , -

    . - . case.

    /* # 19 : : DeanDemo.java */ package chapt02;

    enum Dean {

    MMF(""), FPMI(""), GEO("");

    String name;

    Dean(String arg) {

    name = arg;

    }

    String getName() {

    return name;

    }

    }

    package chapt02;

    public class DeanDemo {

    public static void main(String[] args) {

    Dean dn = Dean.valueOf("FPMI");

    System.out.print(dn.ordinal());

    System.out.println(" : " + dn + " : " + dn.getName());

    }

    }

    :

    1 : FPMI :

    . :

    ; ; ; , new.

  • -, - , , , , , -

    . , ,

    .

    , - .

    .

    /* # 20 : : RequestForCustomer.java */ package chapt03;

    public @interface RequestForCustomer {

    int level();

    String description();

    String date();

    }

    interface @. -

    . -

    : int level(), String description(), String date().

    , - , . ,

    , throws .

    : , String, Enum, Class

    .

    java.lang.annotation.Annotation. :

    hashCode(), equals() toString(), Object.

    annotationType(),

    lass, .

    -

    . , . , , , ,

    enum. .

    .

    , -.

    , RequestForCustomer

    :

    @RequestForCustomer (

    level = 2,

    description = "Enable time",

    date = "10/10/2007"

    )

    public void customerThroughTime() {

    //... }

  • customerThroughTime().

    , @,

    -. - -, .

    , "Enable time" -

    description(), RequestForCustomer.

    description . -

    , . , - .

    /* # 21 : : Request.java */ package chapt03;

    import java.lang.reflect.Method;

    public class Request {

    @RequestForCustomer(level = 2,

    description = "Enable time",

    date = "10/10/2007")

    public void customerThroughTime() {

    try {

    Class c = this.getClass();

    Method m = c.getMethod("customerThroughTime");

    RequestForCustomer ann =

    m.getAnnotation(RequestForCustomer.class);

    // System.out.println(ann.level() + " "

    + ann.description() + " "

    + ann.date());

    } catch (NoSuchMethodException e) {

    System.out.println(" ");

    }

    }

    public static void main(String[] args) {

    Request ob = new Request();

    ob.customerThroughTime();

    }

    }

    :

    2 Enable time 10/10/2007

    , -

    RUNTIME

    import java.lang.annotation.Retention;

    import java.lang.annotation.RetentionPolicy;

    @Retention(RetentionPolicy.RUNTIME) //

    , -

    .

  • SOURCE -

    . CLASS -

    .class, JVM .

    , RUNTIME,

    .class JVM . -

    , RUNTIME -

    . : -, -

    . - -. -

    . . - - -, -.

    public @interface TigerAnnotation {}

    - isAnnotation-

    Present().

    -. -. -, . - . , -

    value().

    -. -

    (_ = )

    . Java ,

    @Retention, @Documented, @Target @Inherited

    java.lang.annotation. @Override,

    @Deprecated @Suppresswarnings java.lang.

    - .

    3

    A

    1. n. ,

    , , , , .

    m .

    , . .

    2. n.

    . , , , , . . , , .

  • 3. R3. ,

    , . m .

    , .

    4. (n x n).

    . , ,

    . . ,

    n

    iij

    nj

    n

    jij

    niaaaa

    11121

    1 )(max),(max| || | . ,

    .

    5. (m x n).

    . .

    ,

    k- . ,

    i- .

    6.

    ...32

    1

    0

    a

    xa

    xa

    xaA

    , , , .

    n, x, a[n].

    7. (m,n).

    . , ,

    . k , /-

    . ,

    . 8. .

    . , , , , . n . , .

    9. . . , , /. .

    10. (BoolMatrix) (n x m).

    . (), . .

    11. (BoolVector) n.

    .

  • , , .

    12. n.

    .

    ; , , . ,

    , (), , .

    , , ,

    .

    13. n.

    . m , .

    .

    : )(

    )(

    )(

    )(

    2

    2

    1

    1

    xQ

    xp

    xQ

    xpR /.

    14. . .

    .

    .

    15.

    . .

    , ,

    , ,

    ( ).

    16. .

    . : -

    ( ); -

    , ( ),

    : (

    ), ( ), -

    , ( ).

    17. . .

    , ,

    , ,

    . .

    B

    , . -

    set(), get(), toString(). -

    , .

    .

    1. Student: id, , , , , , , , , .

  • . :

    a) ;

    b) ;

    c) , ;

    d) .

    2. Customer: id, , , , ,

    , .

    . :

    a) ;

    b) ,

    .

    3. Patient: id, , , , , ,

    , .

    . :

    a) , ;

    b) ,

    .

    4. Abiturient: id, , , , , , .

    . :

    a) , ;

    b) , ;

    c) n ,

    ( ,

    ).

    5. Book: id, , (), , ,

    , , .

    . :

    a) ;

    b) , ;

    c) , .

    6. House: id, , , , , ,

    , .

    . :

    a) , ;

    b) ,

    , ;

    c) , , .

    7. Phone: id, , , , , ,

    , , .

    . :

    a) ,

    ;

    b) ,

    ;

    c) .

  • 8. Car: id, , , , , , . . : a) ; b) , n ; c) , .

    9. Product: id, , UPC, , , , . . : a) ; b) , ; c) , .

    10. Train: , , , (, , , ). . : a) , ; b) , ; c) , .

    11. Bus: , , , , , . . : a) ; b) , 10 ; c) , 100000 .

    12. Airlines: , , , , . . : a) ; b) ; c) , .

    3

    3.1.

    -?

    1) private;

    2) final;

    3) native;

    4) abstract;

    5) protected.

  • 3.2.

    Quest3, -

    "".

    public class Quest3 {

    Quest3 (int i){ System.out.print(""); }

    public static void main(String[] args){

    Quest3 s= new Quest3();

    //1

    }

    public Quest3() {

    //2

    }

    {

    //3

    } }

    1) //1 Quest3(1);

    2) //2 Quest3(1);

    3) //3 new Quest3(1);

    4) //3 Quest3(1).

    3.3.

    ?

    1) nonstatic- ; 2) static- ;

    3) private- ; 4) final- .

    3.4.

    :

    public class Quest5 {

    {System.out.print("1");}

    static{System.out.print("2");}

    Quest5(){System.out.print("3");}

    public static void main(String[] args) {

    System.out.print("4");

    } }

    :

    1) 1234;

    2) 4; 3) 34;

    4) 24;

    5) 14.

  • 4

    , (-) () , .

    ,

    extends. ,

    implements.

    , . ,

    private ( ) .

    ( extends ) -

    Object.

    , - , - , , - . , , .

    , . , , .

    () , - , .

    - .

    .

    typeEmployee() -

    Employee Manager. -

    , .

    /* # 1 : : Employee.java: Manager.java: Runner.java */ package chapt04;

    public class Employee {// private int id;

  • public Employee(int idc) {

    super();/* ,

    */ id = idc;

    }

    public int getId() {

    return id;

    }

    public void typeEmployee() {

    // ... System.out.println("");

    }

    }

    package chapt04;

    // ,

    public class Manager extends Employee {

    private int idProject;

    public Manager(int idc, int idp) {

    super(idc); /*

    */ idProject = idp;

    }

    public int getIdProject() {

    return idProject;

    }

    public void typeEmployee() {

    // ... System.out.println("");

    }

    }

    package chapt04;

    public class Runner {

    public static void main(String[] args) {

    Employee b1 = new Employee(7110);

    Employee b2 = new Manager(9251, 31);

    b1.typeEmployee();// Employee

    b2.typeEmployee();// Manager

    // b2.getIdProject();// !!! ((Manager) b2).getIdProject();

    Manager b3 = new Manager(9711, 35);

    System.out.println(b3.getIdProject());// 35

    System.out.println(b3.getId());// 9711

    }

    }

  • b1 Employee, ,

    , typeEmployee()

    Employee. b2 Employee -

    Manager.

    , . (, , )

    , .

    , - , .

    this,

    super. -

    :

    /* # 2 : -: Course.java: BaseCourse.java: Logic.java */ package chapt04;

    public class Course {

    public int id = 71;

    public Course() {

    System.out.println(" Course");

    id = getId();//!!!

    System.out.println(" id=" + id);

    }

    public int getId() {

    System.out.println("getId() Course");

    return id;

    }

    }

    package chapt04;

    publi